On Tue, Aug 24, 2004, rai mahua wrote: > Given the r & s part of the DSA signature, > I generate a DSA_signature out of it, and > need to pass it to > openssl dgst -dss1 -signature .... > > This gives me the following error: > Error Verifying Data > 50524:error:0D0680A8:asn1 encoding > routines:ASN1_CHECK_TLEN:wrong > tag:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/asn1/tasn_dec.c:946: > 50524:error:0D07803A:asn1 encoding > routines:ASN1_ITEM_EX_D2I:nested asn1 > error:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/asn1/tasn_dec.c:304:Type=DSA_SIG > > Does i2d_DSA_SIG return signature in some encoded > form? > > Thanks, > Pallavi > > > /******code snippet ***************/ > > > u_char sigdata[BUFSIZ], complete_sig[BUFSIZ]; > long siglen, complete_sig_len; > DSA_SIG *dsa_sig; > > bzero(sigdata, sizeof(sigdata)); > bzero(complete_sig, sizeof(complete_sig)); > /* > * Since we are given the 'r' & 's' part of the DSA > * signature, we need > * to generate a complete DSA signature out of this. > */ > if (siglen != DSA_R_SIZE + DSA_S_SIZE) > printf("error.."); > > dsa_sig = DSA_SIG_new(); > if (dsa_sig == NULL) > printf("could not create signature"); > dsa_sig->r = BN_bin2bn(sigdata, DSA_R_SIG_SIZE, > dsa_sig->r); > dsa_sig->s = BN_bin2bn(sigdata + DSA_R_SIG_SIZE, > DSA_S_SIG_SIZE, dsa_sig->s); > > complete_sig_len = i2d_DSA_SIG(dsa_sig, > &complete_sig); > DSA_SIG_free(dsa_sig); > >
You are not calling the i2d_DSA_SIG() function properly. Read the FAQ for more details. Steve. -- Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage OpenSSL project core developer and freelance consultant. Funding needed! Details on homepage. Homepage: http://www.drh-consultancy.demon.co.uk ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]