Index: mozilla/security/nss/lib/cryptohi/secsign.c |
=================================================================== |
--- mozilla/security/nss/lib/cryptohi/secsign.c (revision 158129) |
+++ mozilla/security/nss/lib/cryptohi/secsign.c (working copy) |
@@ -326,7 +326,18 @@ |
algID = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION; |
break; |
case dsaKey: |
- algID = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; |
+ /* get Signature length (= q_len*2) and work from there */ |
+ switch (PK11_SignatureLen(pk)) { |
+ case 448: |
+ algID = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST; |
+ break; |
+ case 512: |
+ algID = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST; |
+ break; |
+ default: |
+ algID = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; |
+ break; |
+ } |
break; |
case ecKey: |
algID = SEC_OID_ANSIX962_ECDSA_SIGNATURE_WITH_SHA1_DIGEST; |
@@ -462,6 +473,10 @@ |
case SEC_OID_UNKNOWN: /* default for DSA if not specified */ |
case SEC_OID_SHA1: |
sigTag = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; break; |
+ case SEC_OID_SHA224: |
+ sigTag = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST; break; |
+ case SEC_OID_SHA256: |
+ sigTag = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST; break; |
default: |
break; |
} |