| Index: nss/lib/softoken/pkcs11.c
|
| diff --git a/nss/lib/softoken/pkcs11.c b/nss/lib/softoken/pkcs11.c
|
| index 716922f32243e303f8e60b25e05031895b4c51f0..75c9e8e9b5b2d6cbf867f363849cc7b1c6b9f62f 100644
|
| --- a/nss/lib/softoken/pkcs11.c
|
| +++ b/nss/lib/softoken/pkcs11.c
|
| @@ -396,6 +396,7 @@ static const struct mechanismList mechanisms[] = {
|
| {CKM_SHA512_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE},
|
| {CKM_SHA512_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE},
|
| {CKM_TLS_PRF_GENERAL, {0, 512, CKF_SN_VR}, PR_FALSE},
|
| + {CKM_TLS_MAC, {0, 512, CKF_SN_VR}, PR_FALSE},
|
| {CKM_NSS_TLS_PRF_GENERAL_SHA256,
|
| {0, 512, CKF_SN_VR}, PR_FALSE},
|
| /* ------------------------- HKDF Operations -------------------------- */
|
| @@ -465,14 +466,21 @@ static const struct mechanismList mechanisms[] = {
|
| {CKM_SHA384_KEY_DERIVATION, { 0, 48, CKF_DERIVE}, PR_FALSE},
|
| {CKM_SHA512_KEY_DERIVATION, { 0, 64, CKF_DERIVE}, PR_FALSE},
|
| {CKM_TLS_MASTER_KEY_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE},
|
| + {CKM_TLS12_MASTER_KEY_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE},
|
| {CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256,
|
| {48, 48, CKF_DERIVE}, PR_FALSE},
|
| {CKM_TLS_MASTER_KEY_DERIVE_DH, {8, 128, CKF_DERIVE}, PR_FALSE},
|
| + {CKM_TLS12_MASTER_KEY_DERIVE_DH, {8, 128, CKF_DERIVE}, PR_FALSE},
|
| {CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256,
|
| {8, 128, CKF_DERIVE}, PR_FALSE},
|
| {CKM_TLS_KEY_AND_MAC_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE},
|
| + {CKM_TLS12_KEY_AND_MAC_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE},
|
| {CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256,
|
| {48, 48, CKF_DERIVE}, PR_FALSE},
|
| + {CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE,
|
| + {48,128, CKF_DERIVE}, PR_FALSE},
|
| + {CKM_NSS_TLS_EXTENDED_MASTER_KEY_DERIVE_DH,
|
| + {48,128, CKF_DERIVE}, PR_FALSE},
|
| /* ---------------------- PBE Key Derivations ------------------------ */
|
| {CKM_PBE_MD2_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE},
|
| {CKM_PBE_MD5_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE},
|
| @@ -1745,7 +1753,7 @@ NSSLOWKEYPublicKey *sftk_GetPubKey(SFTKObject *object,CK_KEY_TYPE key_type,
|
| crv = sftk_Attribute2SSecItem(arena,&pubKey->u.ec.publicValue,
|
| object,CKA_EC_POINT);
|
| if (crv == CKR_OK) {
|
| - int keyLen,curveLen;
|
| + unsigned int keyLen,curveLen;
|
|
|
| curveLen = (pubKey->u.ec.ecParams.fieldID.size +7)/8;
|
| keyLen = (2*curveLen)+1;
|
| @@ -2220,7 +2228,7 @@ CK_RV C_GetFunctionList(CK_FUNCTION_LIST_PTR *pFunctionList)
|
| static PLHashNumber
|
| sftk_HashNumber(const void *key)
|
| {
|
| - return (PLHashNumber) key;
|
| + return (PLHashNumber)((char *)key - (char *)NULL);
|
| }
|
|
|
| /*
|
| @@ -2601,7 +2609,7 @@ CK_RV sftk_CloseAllSessions(SFTKSlot *slot, PRBool logout)
|
| --slot->sessionCount;
|
| SKIP_AFTER_FORK(PZ_Unlock(slot->slotLock));
|
| if (session->info.flags & CKF_RW_SESSION) {
|
| - PR_ATOMIC_DECREMENT(&slot->rwSessionCount);
|
| + (void)PR_ATOMIC_DECREMENT(&slot->rwSessionCount);
|
| }
|
| } else {
|
| SKIP_AFTER_FORK(PZ_Unlock(lock));
|
| @@ -2756,7 +2764,7 @@ NSC_ModuleDBFunc(unsigned long function,char *parameters, void *args)
|
| case SECMOD_MODULE_DB_FUNCTION_FIND:
|
| if (secmod == NULL) {
|
| PORT_SetError(SEC_ERROR_INVALID_ARGS);
|
| - return NULL;
|
| + goto loser;
|
| }
|
| if (rw && (dbType != NSS_DB_TYPE_LEGACY) &&
|
| (dbType != NSS_DB_TYPE_MULTIACCESS)) {
|
| @@ -2799,7 +2807,7 @@ NSC_ModuleDBFunc(unsigned long function,char *parameters, void *args)
|
| case SECMOD_MODULE_DB_FUNCTION_ADD:
|
| if (secmod == NULL) {
|
| PORT_SetError(SEC_ERROR_INVALID_ARGS);
|
| - return NULL;
|
| + goto loser;
|
| }
|
| rvstr = (sftkdbCall_AddSecmodDB(appName,filename,secmod,
|
| (char *)args,rw) == SECSuccess) ? &success: NULL;
|
| @@ -2807,7 +2815,7 @@ NSC_ModuleDBFunc(unsigned long function,char *parameters, void *args)
|
| case SECMOD_MODULE_DB_FUNCTION_DEL:
|
| if (secmod == NULL) {
|
| PORT_SetError(SEC_ERROR_INVALID_ARGS);
|
| - return NULL;
|
| + goto loser;
|
| }
|
| rvstr = (sftkdbCall_DeleteSecmodDB(appName,filename,secmod,
|
| (char *)args,rw) == SECSuccess) ? &success: NULL;
|
| @@ -2817,6 +2825,8 @@ NSC_ModuleDBFunc(unsigned long function,char *parameters, void *args)
|
| (char **)args,rw) == SECSuccess) ? &success: NULL;
|
| break;
|
| }
|
| +
|
| +loser:
|
| if (secmod) PR_smprintf_free(secmod);
|
| if (appName) PORT_Free(appName);
|
| if (filename) PORT_Free(filename);
|
| @@ -3138,17 +3148,16 @@ CK_RV NSC_Finalize (CK_VOID_PTR pReserved)
|
| return crv;
|
| }
|
|
|
| -extern const char __nss_softokn_rcsid[];
|
| -extern const char __nss_softokn_sccsid[];
|
| +extern const char __nss_softokn_version[];
|
|
|
| /* NSC_GetInfo returns general information about Cryptoki. */
|
| CK_RV NSC_GetInfo(CK_INFO_PTR pInfo)
|
| {
|
| - volatile char c; /* force a reference that won't get optimized away */
|
| +#define NSS_VERSION_VARIABLE __nss_softokn_version
|
| +#include "verref.h"
|
|
|
| CHECK_FORK();
|
|
|
| - c = __nss_softokn_rcsid[0] + __nss_softokn_sccsid[0];
|
| pInfo->cryptokiVersion.major = 2;
|
| pInfo->cryptokiVersion.minor = 20;
|
| PORT_Memcpy(pInfo->manufacturerID,manufacturerID,32);
|
| @@ -3719,7 +3728,7 @@ CK_RV NSC_OpenSession(CK_SLOT_ID slotID, CK_FLAGS flags,
|
| ++slot->sessionCount;
|
| PZ_Unlock(slot->slotLock);
|
| if (session->info.flags & CKF_RW_SESSION) {
|
| - PR_ATOMIC_INCREMENT(&slot->rwSessionCount);
|
| + (void)PR_ATOMIC_INCREMENT(&slot->rwSessionCount);
|
| }
|
|
|
| do {
|
| @@ -3787,7 +3796,7 @@ CK_RV NSC_CloseSession(CK_SESSION_HANDLE hSession)
|
| sftk_freeDB(handle);
|
| }
|
| if (session->info.flags & CKF_RW_SESSION) {
|
| - PR_ATOMIC_DECREMENT(&slot->rwSessionCount);
|
| + (void)PR_ATOMIC_DECREMENT(&slot->rwSessionCount);
|
| }
|
| }
|
|
|
| @@ -4005,7 +4014,7 @@ static CK_RV sftk_CreateNewSlot(SFTKSlot *slot, CK_OBJECT_CLASS class,
|
| PRBool isValidFIPSUserSlot = PR_FALSE;
|
| PRBool isValidSlot = PR_FALSE;
|
| PRBool isFIPS = PR_FALSE;
|
| - unsigned long moduleIndex;
|
| + unsigned long moduleIndex = NSC_NON_FIPS_MODULE;
|
| SFTKAttribute *attribute;
|
| sftk_parameters paramStrings;
|
| char *paramString;
|
| @@ -4514,7 +4523,7 @@ sftk_emailhack(SFTKSlot *slot, SFTKDBHandle *handle,
|
| {
|
| PRBool isCert = PR_FALSE;
|
| int emailIndex = -1;
|
| - int i;
|
| + unsigned int i;
|
| SFTKSearchResults smime_search;
|
| CK_ATTRIBUTE smime_template[2];
|
| CK_OBJECT_CLASS smime_class = CKO_NETSCAPE_SMIME;
|
|
|