Создание подписи ECDSA для заданного хэш-значения SHA-256 с использованием именованной кривой prime256v1 (также известной как P-256).
Второй шаг: вычислить подпись ECDSA хеш-значения SHA-256 с помощью ECDSA_do_sign ():
sig = ECDSA_do_sign(digest, 32, eckey);
if (sig == NULL) {
/* error */
}
или используя ECDSA_sign ():
unsigned char *buffer, *pp;
int buf_len;
buf_len = ECDSA_size(eckey);
buffer = OPENSSL_malloc(buf_len);
pp = buffer;
if (ECDSA_sign(0, dgst, dgstlen, pp, &buf_len, eckey) == 0) {
/* error */
}
Третий шаг: проверьте созданную подпись ECDSA с помощью ECDSA_do_verify ():
ret = ECDSA_do_verify(digest, 32, sig, eckey);
или используя ECDSA_verify ():
ret = ECDSA_verify(0, digest, 32, buffer, buf_len, eckey);
и, наконец, оцените возвращаемое значение:
if (ret == 1) {
/* signature ok */
} else if (ret == 0) {
/* incorrect signature */
} else {
/* error */
}
EOF
Это подводит меня к пониманию того, что мне нужно проверять каждую подпись, которую я создаю с помощью ECDSA_do_sign
или ECDSA_sign
, не так ли? Может ли случиться так, что созданная подпись недействительна?
man page
с примером вашего сайта (например, ECDSA_verify - это общий пример того, как вы могли бы использовать каждую из функций ecdsa, не предназначенный специально для того, чтобы означать, что вы должны использовать каждую из них, по порядку, каждый раз один из них используется. - person David C. Rankin   schedule 15.08.2016