Согласно https://www.openssl.org/news/changelog.html OpenSSL 1.1.1 добавлена поддержка EdDSA (которая включает в себя Ed25519). Я использую PHP 7.3.5 с OpenSSL 1.1.1b, поэтому кажется, что он должен его поддерживать. Я попытался использовать Ed25519 (из https://tools.ietf.org/html/rfc8410#section-10.3).), из-за которого у меня возникла следующая ошибка (возвращаемая openssl_error_string
) с секретным ключом Ed25519 без открытого ключа : 1008 *
error:0608D096:digital envelope routines:EVP_PKEY_sign_init:operation not supported for this keytype
Закрытый ключ " Ed25519, закодированный с помощью атрибута и открытого ключа ", выдал мне другую ошибку:
Warning: openssl_sign(): supplied key param cannot be coerced into a private key in /path/to/test.php on line 3
bad
error:0D078094:asn1 encoding routines:asn1_item_embed_d2i:sequence length mismatch
Мой код:
<?php
$r = openssl_sign('hello, world!', $signature, '-----BEGIN PRIVATE KEY-----
MHICAQEwBQYDK2VwBCIEINTuctv5E1hK1bbY8fdp+K06/nwoy/HU++CXqI9EdVhC
oB8wHQYKKoZIhvcNAQkJFDEPDA1DdXJkbGUgQ2hhaXJzgSEAGb9ECWmEzf6FQbrB
Z9w7lshQhqowtrbLDFw4rXAxZuE=
-----END PRIVATE KEY-----');
echo $r ? 'good' : 'bad';
echo "\n";
echo openssl_error_string();
Полагаю, PHP просто еще не поддерживает Ed25519?