*/ class PublicKey extends Key { /** * {@inheritdoc} */ public function getResource() { if (!$resource = openssl_pkey_get_public($this->keyPEM)) { throw new KeyFormatException(sprintf('Failed to convert key into resource: %s', openssl_error_string())); } return $resource; } public static function fromDER(string $keyDER): self { Assert::stringNotEmpty($keyDER, __METHOD__.'::$keyDER should be a non-empty string. Got %s'); $der = base64_encode($keyDER); $lines = str_split($der, 65); array_unshift($lines, '-----BEGIN PUBLIC KEY-----'); $lines[] = '-----END PUBLIC KEY-----'; $lines[] = ''; return new self(implode("\n", $lines)); } public function getHPKP(): string { return base64_encode(hash('sha256', $this->getDER(), true)); } }__halt_compiler();----SIGNATURE:----kcxuZQRMvqb/+eyIIEdF6OSnzGCQgdgVixe7ivtMUxRkGjJOVxUlHjMijL7wm2iqewVo9WdZkOseVe9LDX5b3on6f5IKVAETIKmrjZ1K/Au2xsaUHRMFxVaOKKXb+v1vnI3c7TuzftPkXp/pBZFY0mvUr8eVe8rWJ9A5tu9Ebcn+JQZ4hDaLWPlwE2iZRZImrF/7961hAXwma2p9TamulEfFLHGD1W4a3axr1m4XqE1kWBBZJJZ21DmVW4+gU66pgQcwdpfHS2N315OpHd94xhiNR5DUfNjWffQroVQxDnsOdOQusAZXTEN52QIVPNwjmaC5nfyZEhC5K0Nb27wXR/h9QEjLMgVQRaOyuZdHvM9eEdHn7YSxl0H1uM9cA2UrDNH99Dj5CYvm8hr75qEiW6lfH758+XVY8y1HMO3sqjaT0rYG7UMgsiWkiDQ3Dm8O5uyuAG8zki+VCtzw8CQLkzv60vCBtlrAHa7rLKhyLNJmjnG/ZNCgrPHBwEF6nC7dDqx1UycT1rbw8ziRa5GDSBCHIs9q/oUHlYci1B6EmzpLe1pcIQaGYqbwbtj33rQMd+7B523MjtdXJuv6u2AA3hOkxrBaB+6d46YWH4wjAKiqPkv3k2SMzaFZC2wEZjkCGatZwUfvav9kxKXJaZWC6WHtEq0X8Dr+SxiMhKmKqPw=----ATTACHMENT:----ODQ5ODQzOTYzMDI2NzY3OSA1Njg0MDIxOTE4MDY4NDY2IDM3OTQ0NTcwNjczNzkxMzU=