| Index: nss/lib/pk11wrap/pk11pbe.c
|
| diff --git a/nss/lib/pk11wrap/pk11pbe.c b/nss/lib/pk11wrap/pk11pbe.c
|
| index cc72faf608b19adeb13e54031a4abe2bb3fed369..35205bbfffdd658763b419ee4a81b788106bec9b 100644
|
| --- a/nss/lib/pk11wrap/pk11pbe.c
|
| +++ b/nss/lib/pk11wrap/pk11pbe.c
|
| @@ -636,7 +636,7 @@ sec_pkcs5CreateAlgorithmID(SECOidTag algorithm,
|
| goto loser;
|
| }
|
| }
|
| - /* currently only SEC_OID_HMAC_SHA1 is defined */
|
| + /* currently SEC_OID_HMAC_SHA1 is the default */
|
| if (prfAlg == SEC_OID_UNKNOWN) {
|
| prfAlg = SEC_OID_HMAC_SHA1;
|
| }
|
| @@ -805,13 +805,26 @@ pbe_PK11AlgidToParam(SECAlgorithmID *algid,SECItem *mech)
|
| p5_param.pPrfAlgId->algorithm.data != 0) {
|
| prfAlgTag = SECOID_GetAlgorithmTag(p5_param.pPrfAlgId);
|
| }
|
| - if (prfAlgTag == SEC_OID_HMAC_SHA1) {
|
| - pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA1;
|
| - } else {
|
| - /* only SHA1_HMAC is currently supported by PKCS #11 */
|
| - PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
|
| - goto loser;
|
| - }
|
| + switch (prfAlgTag) {
|
| + case SEC_OID_HMAC_SHA1:
|
| + pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA1;
|
| + break;
|
| + case SEC_OID_HMAC_SHA224:
|
| + pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA224;
|
| + break;
|
| + case SEC_OID_HMAC_SHA256:
|
| + pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA256;
|
| + break;
|
| + case SEC_OID_HMAC_SHA384:
|
| + pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA384;
|
| + break;
|
| + case SEC_OID_HMAC_SHA512:
|
| + pbeV2_params->prf = CKP_PKCS5_PBKD2_HMAC_SHA512;
|
| + break;
|
| + default:
|
| + PORT_SetError(SEC_ERROR_INVALID_ALGORITHM);
|
| + goto loser;
|
| + }
|
|
|
| /* probably should fetch these from the prfAlgid */
|
| pbeV2_params->pPrfData = NULL;
|
|
|