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; |