mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
nss: update to 3.44.1, with vc2013 fix and gyp fix
This commit is contained in:
parent
a2ef5fcde7
commit
d4b834111b
553 changed files with 1515569 additions and 1130 deletions
|
|
@ -190,7 +190,6 @@ PK11_ImportPublicKey(PK11SlotInfo *slot, SECKEYPublicKey *pubKey,
|
|||
attrs++;
|
||||
PK11_SETATTRS(attrs, CKA_DERIVE, &cktrue, sizeof(CK_BBOOL));
|
||||
attrs++;
|
||||
signedattr = attrs;
|
||||
PK11_SETATTRS(attrs, CKA_EC_PARAMS,
|
||||
pubKey->u.ec.DEREncodedParams.data,
|
||||
pubKey->u.ec.DEREncodedParams.len);
|
||||
|
|
@ -222,12 +221,14 @@ PK11_ImportPublicKey(PK11SlotInfo *slot, SECKEYPublicKey *pubKey,
|
|||
PORT_SetError(SEC_ERROR_BAD_KEY);
|
||||
return CK_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
templateCount = attrs - theTemplate;
|
||||
signedcount = attrs - signedattr;
|
||||
PORT_Assert(templateCount <= (sizeof(theTemplate) / sizeof(CK_ATTRIBUTE)));
|
||||
for (attrs = signedattr; signedcount; attrs++, signedcount--) {
|
||||
pk11_SignedToUnsigned(attrs);
|
||||
if (pubKey->keyType != ecKey) {
|
||||
PORT_Assert(signedattr);
|
||||
signedcount = attrs - signedattr;
|
||||
for (attrs = signedattr; signedcount; attrs++, signedcount--) {
|
||||
pk11_SignedToUnsigned(attrs);
|
||||
}
|
||||
}
|
||||
rv = PK11_CreateNewObject(slot, CK_INVALID_SESSION, theTemplate,
|
||||
templateCount, isToken, &objectID);
|
||||
|
|
@ -1074,9 +1075,13 @@ pk11_loadPrivKeyWithFlags(PK11SlotInfo *slot, SECKEYPrivateKey *privKey,
|
|||
&cktrue, &ckfalse);
|
||||
|
||||
/* Not everyone can handle zero padded key values, give
|
||||
* them the raw data as unsigned */
|
||||
for (ap = attrs; extra_count; ap++, extra_count--) {
|
||||
pk11_SignedToUnsigned(ap);
|
||||
* them the raw data as unsigned. The exception is EC,
|
||||
* where the values are encoded or zero-preserving
|
||||
* per-RFC5915 */
|
||||
if (privKey->keyType != ecKey) {
|
||||
for (ap = attrs; extra_count; ap++, extra_count--) {
|
||||
pk11_SignedToUnsigned(ap);
|
||||
}
|
||||
}
|
||||
|
||||
/* now Store the puppies */
|
||||
|
|
|
|||
|
|
@ -184,7 +184,9 @@ PK11_IsUserCert(PK11SlotInfo *slot, CERTCertificate *cert,
|
|||
SECKEY_DestroyPublicKey(pubKey);
|
||||
return PR_FALSE;
|
||||
}
|
||||
pk11_SignedToUnsigned(&theTemplate);
|
||||
if (pubKey->keyType != ecKey) {
|
||||
pk11_SignedToUnsigned(&theTemplate);
|
||||
}
|
||||
if (pk11_FindObjectByTemplate(slot, &theTemplate, 1) != CK_INVALID_HANDLE) {
|
||||
SECKEY_DestroyPublicKey(pubKey);
|
||||
return PR_TRUE;
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ SECMOD_SetRootCerts(PK11SlotInfo *slot, SECMODModule *mod)
|
|||
}
|
||||
}
|
||||
|
||||
#ifndef NSS_TEST_BUILD
|
||||
#ifndef NSS_STATIC_SOFTOKEN
|
||||
static const char *my_shlib_name =
|
||||
SHLIB_PREFIX "nss" SHLIB_VERSION "." SHLIB_SUFFIX;
|
||||
static const char *softoken_shlib_name =
|
||||
|
|
@ -403,7 +403,7 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **oldModule)
|
|||
|
||||
/* internal modules get loaded from their internal list */
|
||||
if (mod->internal && (mod->dllName == NULL)) {
|
||||
#ifdef NSS_TEST_BUILD
|
||||
#ifdef NSS_STATIC_SOFTOKEN
|
||||
entry = (CK_C_GetFunctionList)NSC_GetFunctionList;
|
||||
#else
|
||||
/*
|
||||
|
|
@ -430,7 +430,7 @@ secmod_LoadPKCS11Module(SECMODModule *mod, SECMODModule **oldModule)
|
|||
|
||||
if (mod->isModuleDB) {
|
||||
mod->moduleDBFunc = (CK_C_GetFunctionList)
|
||||
#ifdef NSS_TEST_BUILD
|
||||
#ifdef NSS_STATIC_SOFTOKEN
|
||||
NSC_ModuleDBFunc;
|
||||
#else
|
||||
PR_FindSymbol(softokenLib, "NSC_ModuleDBFunc");
|
||||
|
|
@ -612,7 +612,7 @@ SECMOD_UnloadModule(SECMODModule *mod)
|
|||
* if not, we should change this to SECFailure and move it above the
|
||||
* mod->loaded = PR_FALSE; */
|
||||
if (mod->internal && (mod->dllName == NULL)) {
|
||||
#ifndef NSS_TEST_BUILD
|
||||
#ifndef NSS_STATIC_SOFTOKEN
|
||||
if (0 == PR_ATOMIC_DECREMENT(&softokenLoadCount)) {
|
||||
if (softokenLib) {
|
||||
disableUnload = PR_GetEnvSecure("NSS_DISABLE_UNLOAD");
|
||||
|
|
|
|||
|
|
@ -226,6 +226,7 @@ PK11_GetKeyType(CK_MECHANISM_TYPE type, unsigned long len)
|
|||
return CKK_CAMELLIA;
|
||||
case CKM_NSS_CHACHA20_POLY1305:
|
||||
case CKM_NSS_CHACHA20_KEY_GEN:
|
||||
case CKM_NSS_CHACHA20_CTR:
|
||||
return CKK_NSS_CHACHA20;
|
||||
case CKM_AES_ECB:
|
||||
case CKM_AES_CBC:
|
||||
|
|
@ -239,6 +240,8 @@ PK11_GetKeyType(CK_MECHANISM_TYPE type, unsigned long len)
|
|||
case CKM_AES_KEY_GEN:
|
||||
case CKM_NETSCAPE_AES_KEY_WRAP:
|
||||
case CKM_NETSCAPE_AES_KEY_WRAP_PAD:
|
||||
case CKM_AES_XCBC_MAC:
|
||||
case CKM_AES_XCBC_MAC_96:
|
||||
return CKK_AES;
|
||||
case CKM_DES_ECB:
|
||||
case CKM_DES_CBC:
|
||||
|
|
@ -440,6 +443,7 @@ PK11_GetKeyGenWithSize(CK_MECHANISM_TYPE type, int size)
|
|||
case CKM_CAMELLIA_KEY_GEN:
|
||||
return CKM_CAMELLIA_KEY_GEN;
|
||||
case CKM_NSS_CHACHA20_POLY1305:
|
||||
case CKM_NSS_CHACHA20_CTR:
|
||||
return CKM_NSS_CHACHA20_KEY_GEN;
|
||||
case CKM_AES_ECB:
|
||||
case CKM_AES_CBC:
|
||||
|
|
@ -730,6 +734,9 @@ PK11_GetBlockSize(CK_MECHANISM_TYPE type, SECItem *params)
|
|||
case CKM_RSA_X_509:
|
||||
/*actually it's the modulus length of the key!*/
|
||||
return -1; /* failure */
|
||||
case CKM_NSS_CHACHA20_POLY1305:
|
||||
case CKM_NSS_CHACHA20_CTR:
|
||||
return 64;
|
||||
default:
|
||||
return pk11_lookup(type)->blockSize;
|
||||
}
|
||||
|
|
@ -784,12 +791,16 @@ PK11_GetIVLength(CK_MECHANISM_TYPE type)
|
|||
case CKM_CAST3_CBC_PAD:
|
||||
case CKM_CAST5_CBC_PAD:
|
||||
return 8;
|
||||
case CKM_AES_GCM:
|
||||
case CKM_NSS_CHACHA20_POLY1305:
|
||||
return 12;
|
||||
case CKM_SEED_CBC:
|
||||
case CKM_SEED_CBC_PAD:
|
||||
case CKM_CAMELLIA_CBC:
|
||||
case CKM_CAMELLIA_CBC_PAD:
|
||||
case CKM_AES_CBC:
|
||||
case CKM_AES_CBC_PAD:
|
||||
case CKM_NSS_CHACHA20_CTR:
|
||||
return 16;
|
||||
case CKM_SKIPJACK_CBC64:
|
||||
case CKM_SKIPJACK_ECB64:
|
||||
|
|
|
|||
|
|
@ -238,6 +238,8 @@ static const oidValDef curveOptList[] = {
|
|||
NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
|
||||
{ CIPHER_NAME("SECP521R1"), SEC_OID_SECG_EC_SECP521R1,
|
||||
NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
|
||||
{ CIPHER_NAME("CURVE25519"), SEC_OID_CURVE25519,
|
||||
NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
|
||||
/* ANSI X9.62 named elliptic curves (characteristic two field) */
|
||||
{ CIPHER_NAME("C2PNB163V1"), SEC_OID_ANSIX962_EC_C2PNB163V1,
|
||||
NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE },
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ PK11_ImportAndReturnPrivateKey(PK11SlotInfo *slot, SECKEYRawPrivateKey *lpk,
|
|||
}
|
||||
PK11_SETATTRS(attrs, CKA_ID, ck_id->data, ck_id->len);
|
||||
attrs++;
|
||||
signedattr = attrs;
|
||||
/* No signed attrs for EC */
|
||||
/* curveOID always is a copy of AlgorithmID.parameters. */
|
||||
PK11_SETATTRS(attrs, CKA_EC_PARAMS, lpk->u.ec.curveOID.data,
|
||||
lpk->u.ec.curveOID.len);
|
||||
|
|
@ -523,11 +523,12 @@ PK11_ImportAndReturnPrivateKey(PK11SlotInfo *slot, SECKEYRawPrivateKey *lpk,
|
|||
}
|
||||
templateCount = attrs - theTemplate;
|
||||
PORT_Assert(templateCount <= sizeof(theTemplate) / sizeof(CK_ATTRIBUTE));
|
||||
PORT_Assert(signedattr != NULL);
|
||||
signedcount = attrs - signedattr;
|
||||
|
||||
for (ap = signedattr; signedcount; ap++, signedcount--) {
|
||||
pk11_SignedToUnsigned(ap);
|
||||
if (lpk->keyType != ecKey) {
|
||||
PORT_Assert(signedattr);
|
||||
signedcount = attrs - signedattr;
|
||||
for (ap = signedattr; signedcount; ap++, signedcount--) {
|
||||
pk11_SignedToUnsigned(ap);
|
||||
}
|
||||
}
|
||||
|
||||
rv = PK11_CreateNewObject(slot, CK_INVALID_SESSION,
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ CK_OBJECT_HANDLE PK11_FindObjectForCert(CERTCertificate *cert,
|
|||
PK11SymKey *pk11_CopyToSlot(PK11SlotInfo *slot, CK_MECHANISM_TYPE type,
|
||||
CK_ATTRIBUTE_TYPE operation, PK11SymKey *symKey);
|
||||
unsigned int pk11_GetPredefinedKeyLength(CK_KEY_TYPE keyType);
|
||||
CK_OBJECT_HANDLE PK11_DerivePubKeyFromPrivKey(SECKEYPrivateKey *privKey);
|
||||
|
||||
/**********************************************************************
|
||||
* Certs
|
||||
|
|
|
|||
|
|
@ -1598,6 +1598,7 @@ PK11_DeriveWithTemplate(PK11SymKey *baseKey, CK_MECHANISM_TYPE derive,
|
|||
PK11_FreeSymKey(newBaseKey);
|
||||
if (crv != CKR_OK) {
|
||||
PK11_FreeSymKey(symKey);
|
||||
PORT_SetError(PK11_MapError(crv));
|
||||
return NULL;
|
||||
}
|
||||
return symKey;
|
||||
|
|
@ -1839,6 +1840,35 @@ loser:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* This regenerate a public key from a private key. This function is currently
|
||||
* NSS private. If we want to make it public, we need to add and optional
|
||||
* template or at least flags (a.la. PK11_DeriveWithFlags).
|
||||
*/
|
||||
CK_OBJECT_HANDLE
|
||||
PK11_DerivePubKeyFromPrivKey(SECKEYPrivateKey *privKey)
|
||||
{
|
||||
PK11SlotInfo *slot = privKey->pkcs11Slot;
|
||||
CK_MECHANISM mechanism;
|
||||
CK_OBJECT_HANDLE objectID = CK_INVALID_HANDLE;
|
||||
CK_RV crv;
|
||||
|
||||
mechanism.mechanism = CKM_NSS_PUB_FROM_PRIV;
|
||||
mechanism.pParameter = NULL;
|
||||
mechanism.ulParameterLen = 0;
|
||||
|
||||
PK11_EnterSlotMonitor(slot);
|
||||
crv = PK11_GETTAB(slot)->C_DeriveKey(slot->session, &mechanism,
|
||||
privKey->pkcs11ID, NULL, 0,
|
||||
&objectID);
|
||||
PK11_ExitSlotMonitor(slot);
|
||||
if (crv != CKR_OK) {
|
||||
PORT_SetError(PK11_MapError(crv));
|
||||
return CK_INVALID_HANDLE;
|
||||
}
|
||||
return objectID;
|
||||
}
|
||||
|
||||
/*
|
||||
* This Generates a wrapping key based on a privateKey, publicKey, and two
|
||||
* random numbers. For Mail usage RandomB should be NULL. In the Sender's
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
'target_name': 'pk11wrap_static',
|
||||
'type': 'static_library',
|
||||
'defines': [
|
||||
'NSS_TEST_BUILD',
|
||||
'NSS_STATIC_SOFTOKEN',
|
||||
],
|
||||
'dependencies': [
|
||||
'pk11wrap_base',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue