![]() |
Для подписи сертификата использую
X509_sign(x, priv_key, EVP_sha1()); priv_key описывается так: EVP_PKEY *priv_key = EVP_PKEY_new(); Если в priv_key засунуть RSA ключ - все нормально, если DSA, то все валится. Ключ генерится так: DSA *dsa = DSA_new(); EVP_PKEY *priv_key = EVP_PKEY_new(); dsa = DSA_generate_parameters(128, NULL, 0, NULL, NULL, 0, NULL); while (RAND_status() != 1) { RAND_seed(dsa, 128); } DSA_generate_key(dsa); EVP_PKEY_assign_DSA(priv_key, dsa); Такой ключ нормально вставляется в поле открытогно ключа сертификата, но подписать им не получается. Вчем дело? Может я неправильно выставляю, prng? Вроде разница между подписью RSA и DSA только в этом.... Пробовал через EVP: EVP_MD_CTX *ctx_sig = EVP_MD_CTX_create(); EVP_SignInit(ctx_sig, EVP_sha1()); EVP_SignUpdate(ctx_sig, data_in, 8); EVP_SignFinal(ctx_sig, data_sign, &sign_len, priv_key) здесь unsigned char data_in[8] = "0123456"; EVP_SignFinal(...) возвращает 0 (все плохо). Хелп, плз!! openssl.org и егзамплы в молчат, смотрел сорсы самого openssl (openssl-0.9.7/apps/) - ничего не помогает... |
Проблемма решена.
Вместо EVP_sha() или EVP_sha1() надо юзать EVP_dss() или EVP_dss1() - для SHA хэша. RFC2792 говорит, о том, что в настоящее время можно исаользовать с DSA только SHA хэш. |
А можно мне какую-нибудб программу, для генерации сертефикатов?
|
Время: 06:42. |
Время: 06:42.
© OSzone.net 2001-