Поскольку lockbox3 так легко установить с помощью Getit, и мне нужно было подписать сообщение xml, я начал экспериментировать с предоставленным «бета» компонентом OpenSSL_Signatory.
Я правильно закодировал дайджест (проверенный результат) с компонентом sha256 и Tha sh.
, но когда я вызываю
FOpenSSL_Signatory.Sign(hshSHA1, DigestStream, SignatureStream)
, это неправильно, потому что мне нужен SHA256, а не SHA1 (также как должен быть закодирован дайджестстрим? base64 UTF8 или сырые байты?)
увы, есть только 3 возможности preha sh и нет sha256!? Я нашел это в исходном коде компонента OpenSSL_Signatory:
TSigHashKind = ( // How was the input message to sign/verify computed from the source document?
hshSHA1, // The document was hashed with SHA1 to produce the input message. NID_sha1 = 64
hshRipemd160, // The hash algorithm was ripemd160. NID_ripemd160 = 117
hshMD5); // The hash was MD5. NID_md5 = 4
const TypeNumbers: array[ TSigHashKind] of longint = (
{ hshSHA1 ==> } 64,
{ hshRipemd160 ==> } 117,
{ hshMD5 ==> } 4);
Как указать preha sh is sha256?
проблема, она соответствует документации openssl rsa_sign https://www.openssl.org/docs/man1.0.2/man3/RSA_sign.html где доступны только эти 3 параметра.
Это как если бы rsa_sign не смог выполнить sha256, и мне пришлось бы использовать другую команду api?
Можно ли обойти это и достичь RSA- SHA256 с компонентом OpenSSL_Signatory lockbox3?
Любая помощь или подсказка приветствуются
PS: Ну, я наконец решил двигаться дальше и использовать доступные заголовки xmlse c, немного устаревшие, но они подойдут
Я так понимаю, после удара о стену, что lockbox предназначен для sha1 ... но sha1 устарел, и даже для подписи sha256 теперь минимальное требование.
Если кто-то когда-нибудь есть образец кода, как подписывать данные с помощью lockbox и Algorithm = "http://www.w3.org/2001/04/xmldsig-more#rsa -sha256", например xmlse c, я с радостью вернусь и посмотрю этот мастер-образ кода wi -й большой интерес.
хорошего дня; работа должна go вкл. С уважением