Index: security/nss/cmd/lib/secutil.c
===================================================================
RCS file: /cvsroot/mozilla/security/nss/cmd/lib/secutil.c,v
retrieving revision 1.104
diff -u -p -8 -r1.104 secutil.c
--- security/nss/cmd/lib/secutil.c	28 Jan 2011 02:55:25 -0000	1.104
+++ security/nss/cmd/lib/secutil.c	4 Apr 2011 17:17:05 -0000
@@ -3881,16 +3881,18 @@ SECU_StringToSignatureAlgTag(const char 
 	if (!PL_strcmp(alg, "MD2")) {
 	    hashAlgTag = SEC_OID_MD2;
 	} else if (!PL_strcmp(alg, "MD4")) {
 	    hashAlgTag = SEC_OID_MD4;
 	} else if (!PL_strcmp(alg, "MD5")) {
 	    hashAlgTag = SEC_OID_MD5;
 	} else if (!PL_strcmp(alg, "SHA1")) {
 	    hashAlgTag = SEC_OID_SHA1;
+	} else if (!PL_strcmp(alg, "SHA224")) {
+	    hashAlgTag = SEC_OID_SHA224;
 	} else if (!PL_strcmp(alg, "SHA256")) {
 	    hashAlgTag = SEC_OID_SHA256;
 	} else if (!PL_strcmp(alg, "SHA384")) {
 	    hashAlgTag = SEC_OID_SHA384;
 	} else if (!PL_strcmp(alg, "SHA512")) {
 	    hashAlgTag = SEC_OID_SHA512;
 	}
     }
Index: security/nss/lib/cryptohi/sechash.c
===================================================================
RCS file: /cvsroot/mozilla/security/nss/lib/cryptohi/sechash.c,v
retrieving revision 1.11
diff -u -p -8 -r1.11 sechash.c
--- security/nss/lib/cryptohi/sechash.c	18 Aug 2010 05:54:18 -0000	1.11
+++ security/nss/lib/cryptohi/sechash.c	4 Apr 2011 17:17:45 -0000
@@ -212,16 +212,17 @@ HASH_HashType
 HASH_GetHashTypeByOidTag(SECOidTag hashOid)
 {
     HASH_HashType ht	= HASH_AlgNULL;
 
     switch(hashOid) {
     case SEC_OID_MD2:	 ht = HASH_AlgMD2;    break;
     case SEC_OID_MD5:	 ht = HASH_AlgMD5;    break;
     case SEC_OID_SHA1:	 ht = HASH_AlgSHA1;   break;
+    case SEC_OID_SHA224: ht = HASH_AlgSHA224; break;
     case SEC_OID_SHA256: ht = HASH_AlgSHA256; break;
     case SEC_OID_SHA384: ht = HASH_AlgSHA384; break;
     case SEC_OID_SHA512: ht = HASH_AlgSHA512; break;
     default:             ht = HASH_AlgNULL;   
 	PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
 	break;
     }
     return ht;
@@ -231,16 +232,17 @@ SECOidTag
 HASH_GetHashOidTagByHMACOidTag(SECOidTag hmacOid)
 {
     SECOidTag hashOid = SEC_OID_UNKNOWN;
 
     switch(hmacOid) {
     /* no oid exists for HMAC_MD2 */
     /* NSS does not define a oid for HMAC_MD4 */
     case SEC_OID_HMAC_SHA1:   hashOid = SEC_OID_SHA1;   break;
+    case SEC_OID_HMAC_SHA224: hashOid = SEC_OID_SHA224; break;
     case SEC_OID_HMAC_SHA256: hashOid = SEC_OID_SHA256; break;
     case SEC_OID_HMAC_SHA384: hashOid = SEC_OID_SHA384; break;
     case SEC_OID_HMAC_SHA512: hashOid = SEC_OID_SHA512; break;
     default:                  hashOid = SEC_OID_UNKNOWN;   
 	PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
 	break;
     }
     return hashOid;
@@ -250,16 +252,17 @@ SECOidTag
 HASH_GetHMACOidTagByHashOidTag(SECOidTag hashOid)
 {
     SECOidTag hmacOid = SEC_OID_UNKNOWN;
 
     switch(hashOid) {
     /* no oid exists for HMAC_MD2 */
     /* NSS does not define a oid for HMAC_MD4 */
     case SEC_OID_SHA1:   hmacOid = SEC_OID_HMAC_SHA1;   break;
+    case SEC_OID_SHA224: hmacOid = SEC_OID_HMAC_SHA224; break;
     case SEC_OID_SHA256: hmacOid = SEC_OID_HMAC_SHA256; break;
     case SEC_OID_SHA384: hmacOid = SEC_OID_HMAC_SHA384; break;
     case SEC_OID_SHA512: hmacOid = SEC_OID_HMAC_SHA512; break;
     default:             hmacOid = SEC_OID_UNKNOWN;   
 	PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
 	break;
     }
     return hmacOid;
Index: security/nss/lib/cryptohi/secsign.c
===================================================================
RCS file: /cvsroot/mozilla/security/nss/lib/cryptohi/secsign.c,v
retrieving revision 1.25
diff -u -p -8 -r1.25 secsign.c
--- security/nss/lib/cryptohi/secsign.c	29 Mar 2011 15:12:45 -0000	1.25
+++ security/nss/lib/cryptohi/secsign.c	4 Apr 2011 17:17:45 -0000
@@ -474,16 +474,18 @@ SEC_GetSignatureAlgorithmOidTag(KeyType 
 	switch (hashAlgTag) {
 	case SEC_OID_MD2:
 	    sigTag = SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION;	break;
 	case SEC_OID_MD5:
 	    sigTag = SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION;	break;
 	case SEC_OID_UNKNOWN:	/* default for RSA if not specified */
 	case SEC_OID_SHA1:
 	    sigTag = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION;	break;
+	case SEC_OID_SHA224:
+	    sigTag = SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION;	break;
 	case SEC_OID_SHA256:
 	    sigTag = SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION;	break;
 	case SEC_OID_SHA384:
 	    sigTag = SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION;	break;
 	case SEC_OID_SHA512:
 	    sigTag = SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION;	break;
 	default:
 	    break;
Index: security/nss/lib/cryptohi/secvfy.c
===================================================================
RCS file: /cvsroot/mozilla/security/nss/lib/cryptohi/secvfy.c,v
retrieving revision 1.24
diff -u -p -8 -r1.24 secvfy.c
--- security/nss/lib/cryptohi/secvfy.c	23 Jun 2010 02:13:56 -0000	1.24
+++ security/nss/lib/cryptohi/secvfy.c	4 Apr 2011 17:17:46 -0000
@@ -236,16 +236,19 @@ sec_DecodeSigAlg(const SECKEYPublicKey *
       case SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE:
         *hashalg = SEC_OID_SHA1;
 	break;
       case SEC_OID_PKCS1_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_RSA_PSS_SIGNATURE:
         *hashalg = SEC_OID_UNKNOWN; /* get it from the RSA signature */
 	break;
 
+      case SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION:
+	*hashalg = SEC_OID_SHA224;
+	break;
       case SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE:
       case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION:
 	*hashalg = SEC_OID_SHA256;
 	break;
       case SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE:
       case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION:
 	*hashalg = SEC_OID_SHA384;
 	break;
@@ -318,16 +321,17 @@ sec_DecodeSigAlg(const SECKEYPublicKey *
     /* get the "encryption" algorithm */ 
     switch (sigAlg) {
       case SEC_OID_PKCS1_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION:
       case SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE:
       case SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE:
+      case SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION:
       case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION:
 	*encalg = SEC_OID_PKCS1_RSA_ENCRYPTION;
 	break;
       case SEC_OID_PKCS1_RSA_PSS_SIGNATURE:
 	*encalg = SEC_OID_PKCS1_RSA_PSS_SIGNATURE;
 	break;
