I am trying to sign data using DSA. My code fails on
EVP_SignFinal(). It fails on line 92 in p_sign.c . I think there
is something wrong with the way I created EVP_MD_CTX structure
for EVP_SignInit(). Any help is appreciated. Here is my code
#include <openssl/evp.h>
#include <openssl/dsa.h>
#include <openssl/err.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
EVP_MD_CTX ctx;
char data[]="this is junk";
unsigned char signature[4096]={'\0'};
unsigned int signature_len;
DSA *dsa;
EVP_PKEY *pkey = NULL;
int status;
dsa = DSA_generate_parameters(512, NULL, 0, NULL, NULL, NULL, NULL);
if( !dsa && !DSA_generate_key(dsa) )
{
printf("Can't generate DSA keys\n");
return 0;
}
pkey = EVP_PKEY_new();
EVP_PKEY_assign(pkey, EVP_PKEY_DSA, (char*)dsa);
EVP_SignInit(&ctx, EVP_sha1()); /*something wrong here that causes
EVP_SignFinal to fail*/
EVP_SignUpdate(&ctx, data, strlen(data));
status = EVP_SignFinal(&ctx, signature, &signature_len, pkey);
printf("%x\n",signature);
if(!status)
{
ERR_print_errors_fp(stderr);
exit (1);
}
}
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]