diff --git a/lib/cryptohi/sechash.c b/lib/cryptohi/sechash.c index b12621100a..53d8bc0aeb 100644 --- a/lib/cryptohi/sechash.c +++ b/lib/cryptohi/sechash.c @@ -202,13 +202,45 @@ HASH_GetHashTypeByOidTag(SECOidTag hashOid) ht = HASH_AlgSHA512; break; default: - ht = HASH_AlgNULL; PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); break; } return ht; } +HASH_GetHashOidTagByHashType(HASH_HashType type) +{ + SECOidTag oid = SEC_OID_UNKNOWN; + + switch (type) { + case HASH_AlgMD2: + oid = SEC_OID_MD2; + break; + case HASH_AlgMD5: + oid = SEC_OID_MD5; + break; + case HASH_AlgSHA1: + oid = SEC_OID_SHA1; + break; + case HASH_AlgSHA224: + oid = SEC_OID_SHA224; + break; + case HASH_AlgSHA256: + oid = SEC_OID_SHA256; + break; + case HASH_AlgSHA384: + oid = SEC_OID_SHA384; + break; + case HASH_AlgSHA512: + oid = SEC_OID_SHA512; + break; + default: + PORT_SetError(SEC_ERROR_INVALID_ALGORITHM); + break; + } + return oid; +} + SECOidTag HASH_GetHashOidTagByHMACOidTag(SECOidTag hmacOid) { diff --git a/lib/cryptohi/sechash.h b/lib/cryptohi/sechash.h index 94ff7ed3d0..16e8b67133 100644 --- a/lib/cryptohi/sechash.h +++ b/lib/cryptohi/sechash.h @@ -53,6 +53,8 @@ extern HASH_HashType HASH_GetHashTypeByOidTag(SECOidTag hashOid); extern SECOidTag HASH_GetHashOidTagByHMACOidTag(SECOidTag hmacOid); extern SECOidTag HASH_GetHMACOidTagByHashOidTag(SECOidTag hashOid); +extern SECOidTag HASH_GetHashOidTagByHashType(HASH_HashType type); + SEC_END_PROTOS #endif /* _HASH_H_ */ diff --git a/lib/nss/nss.def b/lib/nss/nss.def index 8a9b3b030c..d589fd30e2 100644 --- a/lib/nss/nss.def +++ b/lib/nss/nss.def @@ -1139,3 +1139,9 @@ CERT_GetCertKeyType; ;+ local: ;+ *; ;+}; +;+NSS_3.43 { # NSS 3.43 release +;+ global: +HASH_GetHashOidTagByHashType; +;+ local: +;+ *; +;+};