Hi All, I have to generate a SHA1 from some data(const char*). The data looks like this :
-----BEGIN CERTIFICATE REQUEST----- MIIBcTCB3gIBADA1MQ8wDQYDVQQKEwZNY0FmZWUxDDAKBgNVBAsTA2VQTzEUMBIG A1UEAxMLTElOVVgtTkFDLTAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPT9 xXMj+nEKh0XZtqNllDxg8aYxbm4okdx1/6keHGu1GcnUGMtywg1cpjBWSS6Lm5r1 5A8n4t1fJUEBFXd05OpRRla/4azIaxaNP2gm8/tkeUDi1PXm+8jUf7aLJekbTSzw Uwzb+ZhMpCfKB+dRD3i7BWvr5kxnsS40LuUKHicZAgMBAAGgADAKBgYrJAMDAQIF AAOBgQBlwS1uP9+zmtfGc9frZCUYrCq+qlsk0TWJrNjzbZNMI3+8TCjbfxdlte4P HTRbmQ90BrQhuxh+/d5L9nwzKldcOivZsq0U/HJUmwKoYOBbRk9SATkJD5rgIhdh UFM31/KHYnklk576mpeRJsdfiyuitytutyI69UrwzYIENvSMrj5C9QtovBtGreA== -----END CERTIFICATE REQUEST----- Each line in the data is ending with endline('\n') and the end data is ending with '\0' I am using the following few lines to generate the digest: unsigned char *digest = NULL; DSA_SIG *dsa_sig; EVP_MD *evp_md = (EVP_MD *)EVP_dss1(); EVP_MD_CTX md; unsigned int md_len = -1; OpenSSL_add_all_digests(); digest = (unsigned char *)calloc(evp_md->md_size,sizeof(unsigned char)); EVP_DigestInit(&md, evp_md); EVP_DigestUpdate(&md, dataBuffer, bufferLen); EVP_DigestFinal(&md, digest, &md_len); where dataBuffer contains the above data and bufferLen contains the length. After creating the digest i am getting digest length as 21,but it sould give me 20.So when i use it in DSA_sign(digest,md_len,dsa) it fails throwing error as (here "dsa" is my DSA key generated.) error:0A070064:dsa routines:DSA_do_sign:data too large for key size Can anyone thorw any light on this and help me out. Any help is appreciated. Sibasis Panigrahi