mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-23 00:47:31 +09:00
Update NSS to 3.35-RTM
This commit is contained in:
parent
23de11e5cd
commit
608f9fca02
388 changed files with 39075 additions and 20752 deletions
|
|
@ -282,13 +282,11 @@ static const struct mechanismList mechanisms[] = {
|
|||
/* no diffie hellman yet */
|
||||
{ CKM_DH_PKCS_KEY_PAIR_GEN, { DH_MIN_P_BITS, DH_MAX_P_BITS, CKF_GENERATE_KEY_PAIR }, PR_TRUE },
|
||||
{ CKM_DH_PKCS_DERIVE, { DH_MIN_P_BITS, DH_MAX_P_BITS, CKF_DERIVE }, PR_TRUE },
|
||||
#ifndef NSS_DISABLE_ECC
|
||||
/* -------------------- Elliptic Curve Operations --------------------- */
|
||||
{ CKM_EC_KEY_PAIR_GEN, { EC_MIN_KEY_BITS, EC_MAX_KEY_BITS, CKF_GENERATE_KEY_PAIR | CKF_EC_BPNU }, PR_TRUE },
|
||||
{ CKM_ECDH1_DERIVE, { EC_MIN_KEY_BITS, EC_MAX_KEY_BITS, CKF_DERIVE | CKF_EC_BPNU }, PR_TRUE },
|
||||
{ CKM_ECDSA, { EC_MIN_KEY_BITS, EC_MAX_KEY_BITS, CKF_SN_VR | CKF_EC_BPNU }, PR_TRUE },
|
||||
{ CKM_ECDSA_SHA1, { EC_MIN_KEY_BITS, EC_MAX_KEY_BITS, CKF_SN_VR | CKF_EC_BPNU }, PR_TRUE },
|
||||
#endif /* NSS_DISABLE_ECC */
|
||||
/* ------------------------- RC2 Operations --------------------------- */
|
||||
{ CKM_RC2_KEY_GEN, { 1, 128, CKF_GENERATE }, PR_TRUE },
|
||||
{ CKM_RC2_ECB, { 1, 128, CKF_EN_DE_WR_UN }, PR_TRUE },
|
||||
|
|
@ -423,11 +421,20 @@ static const struct mechanismList mechanisms[] = {
|
|||
#endif
|
||||
/* --------------------- Secret Key Operations ------------------------ */
|
||||
{ CKM_GENERIC_SECRET_KEY_GEN, { 1, 32, CKF_GENERATE }, PR_TRUE },
|
||||
{ CKM_CONCATENATE_BASE_AND_KEY, { 1, 32, CKF_GENERATE }, PR_FALSE },
|
||||
{ CKM_CONCATENATE_BASE_AND_DATA, { 1, 32, CKF_GENERATE }, PR_FALSE },
|
||||
{ CKM_CONCATENATE_DATA_AND_BASE, { 1, 32, CKF_GENERATE }, PR_FALSE },
|
||||
{ CKM_XOR_BASE_AND_DATA, { 1, 32, CKF_GENERATE }, PR_FALSE },
|
||||
{ CKM_CONCATENATE_BASE_AND_KEY, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_CONCATENATE_BASE_AND_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_CONCATENATE_DATA_AND_BASE, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_XOR_BASE_AND_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_EXTRACT_KEY_FROM_KEY, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_DES3_ECB_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_DES3_CBC_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_AES_ECB_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_AES_CBC_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_CAMELLIA_ECB_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_CAMELLIA_CBC_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_SEED_ECB_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
{ CKM_SEED_CBC_ENCRYPT_DATA, { 1, 32, CKF_DERIVE }, PR_FALSE },
|
||||
|
||||
/* ---------------------- SSL Key Derivations ------------------------- */
|
||||
{ CKM_SSL3_PRE_MASTER_KEY_GEN, { 48, 48, CKF_GENERATE }, PR_FALSE },
|
||||
{ CKM_SSL3_MASTER_KEY_DERIVE, { 48, 48, CKF_DERIVE }, PR_FALSE },
|
||||
|
|
@ -931,7 +938,6 @@ sftk_handlePublicKeyObject(SFTKSession *session, SFTKObject *object,
|
|||
recover = CK_FALSE;
|
||||
wrap = CK_FALSE;
|
||||
break;
|
||||
#ifndef NSS_DISABLE_ECC
|
||||
case CKK_EC:
|
||||
if (!sftk_hasAttribute(object, CKA_EC_PARAMS)) {
|
||||
return CKR_TEMPLATE_INCOMPLETE;
|
||||
|
|
@ -945,7 +951,6 @@ sftk_handlePublicKeyObject(SFTKSession *session, SFTKObject *object,
|
|||
recover = CK_FALSE;
|
||||
wrap = CK_FALSE;
|
||||
break;
|
||||
#endif /* NSS_DISABLE_ECC */
|
||||
default:
|
||||
return CKR_ATTRIBUTE_VALUE_INVALID;
|
||||
}
|
||||
|
|
@ -1114,7 +1119,6 @@ sftk_handlePrivateKeyObject(SFTKSession *session, SFTKObject *object, CK_KEY_TYP
|
|||
recover = CK_FALSE;
|
||||
wrap = CK_FALSE;
|
||||
break;
|
||||
#ifndef NSS_DISABLE_ECC
|
||||
case CKK_EC:
|
||||
if (!sftk_hasAttribute(object, CKA_EC_PARAMS)) {
|
||||
return CKR_TEMPLATE_INCOMPLETE;
|
||||
|
|
@ -1127,7 +1131,6 @@ sftk_handlePrivateKeyObject(SFTKSession *session, SFTKObject *object, CK_KEY_TYP
|
|||
recover = CK_FALSE;
|
||||
wrap = CK_FALSE;
|
||||
break;
|
||||
#endif /* NSS_DISABLE_ECC */
|
||||
case CKK_NSS_JPAKE_ROUND1:
|
||||
if (!sftk_hasAttribute(object, CKA_PRIME) ||
|
||||
!sftk_hasAttribute(object, CKA_SUBPRIME) ||
|
||||
|
|
@ -1778,7 +1781,6 @@ sftk_GetPubKey(SFTKObject *object, CK_KEY_TYPE key_type,
|
|||
crv = sftk_Attribute2SSecItem(arena, &pubKey->u.dh.publicValue,
|
||||
object, CKA_VALUE);
|
||||
break;
|
||||
#ifndef NSS_DISABLE_ECC
|
||||
case CKK_EC:
|
||||
pubKey->keyType = NSSLOWKEYECKey;
|
||||
crv = sftk_Attribute2SSecItem(arena,
|
||||
|
|
@ -1837,7 +1839,6 @@ sftk_GetPubKey(SFTKObject *object, CK_KEY_TYPE key_type,
|
|||
crv = CKR_ATTRIBUTE_VALUE_INVALID;
|
||||
}
|
||||
break;
|
||||
#endif /* NSS_DISABLE_ECC */
|
||||
default:
|
||||
crv = CKR_KEY_TYPE_INCONSISTENT;
|
||||
break;
|
||||
|
|
@ -1947,7 +1948,6 @@ sftk_mkPrivKey(SFTKObject *object, CK_KEY_TYPE key_type, CK_RV *crvp)
|
|||
* if we don't set it explicitly */
|
||||
break;
|
||||
|
||||
#ifndef NSS_DISABLE_ECC
|
||||
case CKK_EC:
|
||||
privKey->keyType = NSSLOWKEYECKey;
|
||||
crv = sftk_Attribute2SSecItem(arena,
|
||||
|
|
@ -1992,7 +1992,6 @@ sftk_mkPrivKey(SFTKObject *object, CK_KEY_TYPE key_type, CK_RV *crvp)
|
|||
#endif
|
||||
}
|
||||
break;
|
||||
#endif /* NSS_DISABLE_ECC */
|
||||
|
||||
default:
|
||||
crv = CKR_KEY_TYPE_INCONSISTENT;
|
||||
|
|
@ -2365,17 +2364,22 @@ sftk_SlotFromID(CK_SLOT_ID slotID, PRBool all)
|
|||
return slot;
|
||||
}
|
||||
|
||||
SFTKSlot *
|
||||
sftk_SlotFromSessionHandle(CK_SESSION_HANDLE handle)
|
||||
CK_SLOT_ID
|
||||
sftk_SlotIDFromSessionHandle(CK_SESSION_HANDLE handle)
|
||||
{
|
||||
CK_ULONG slotIDIndex = (handle >> 24) & 0x7f;
|
||||
CK_ULONG moduleIndex = (handle >> 31) & 1;
|
||||
|
||||
if (slotIDIndex >= nscSlotCount[moduleIndex]) {
|
||||
return NULL;
|
||||
return (CK_SLOT_ID)-1;
|
||||
}
|
||||
return nscSlotList[moduleIndex][slotIDIndex];
|
||||
}
|
||||
|
||||
return sftk_SlotFromID(nscSlotList[moduleIndex][slotIDIndex], PR_FALSE);
|
||||
SFTKSlot *
|
||||
sftk_SlotFromSessionHandle(CK_SESSION_HANDLE handle)
|
||||
{
|
||||
return sftk_SlotFromID(sftk_SlotIDFromSessionHandle(handle), PR_FALSE);
|
||||
}
|
||||
|
||||
static CK_RV
|
||||
|
|
@ -3305,6 +3309,15 @@ NSC_GetSlotInfo(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo)
|
|||
}
|
||||
}
|
||||
|
||||
/* If there is no key database, this is for example the case when NSS was
|
||||
* initialized with NSS_NoDbInit(), then there won't be any point in
|
||||
* requesting a PIN. Set the CKF_USER_PIN_INITIALIZED bit so that
|
||||
* PK11_NeedUserInit() doesn't indicate that a PIN is needed.
|
||||
*/
|
||||
if (slot->keyDB == NULL) {
|
||||
pInfo->flags |= CKF_USER_PIN_INITIALIZED;
|
||||
}
|
||||
|
||||
/* ok we really should read it out of the keydb file. */
|
||||
/* pInfo->hardwareVersion.major = NSSLOWKEY_DB_FILE_VERSION; */
|
||||
pInfo->hardwareVersion.major = SOFTOKEN_VMAJOR;
|
||||
|
|
@ -3566,7 +3579,6 @@ NSC_InitToken(CK_SLOT_ID slotID, CK_CHAR_PTR pPin,
|
|||
{
|
||||
SFTKSlot *slot = sftk_SlotFromID(slotID, PR_FALSE);
|
||||
SFTKDBHandle *handle;
|
||||
SFTKDBHandle *certHandle;
|
||||
SECStatus rv;
|
||||
unsigned int i;
|
||||
SFTKObject *object;
|
||||
|
|
@ -3614,19 +3626,16 @@ NSC_InitToken(CK_SLOT_ID slotID, CK_CHAR_PTR pPin,
|
|||
}
|
||||
|
||||
rv = sftkdb_ResetKeyDB(handle);
|
||||
/* clear the password */
|
||||
sftkdb_ClearPassword(handle);
|
||||
/* update slot->needLogin (should be true now since no password is set) */
|
||||
sftk_checkNeedLogin(slot, handle);
|
||||
sftk_freeDB(handle);
|
||||
if (rv != SECSuccess) {
|
||||
return CKR_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
/* finally mark all the user certs as non-user certs */
|
||||
certHandle = sftk_getCertDB(slot);
|
||||
if (certHandle == NULL)
|
||||
return CKR_OK;
|
||||
|
||||
sftk_freeDB(certHandle);
|
||||
|
||||
return CKR_OK; /*is this the right function for not implemented*/
|
||||
return CKR_OK;
|
||||
}
|
||||
|
||||
/* NSC_InitPIN initializes the normal user's PIN. */
|
||||
|
|
@ -3792,7 +3801,10 @@ NSC_SetPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pOldPin,
|
|||
|
||||
/* Now update our local copy of the pin */
|
||||
if (rv == SECSuccess) {
|
||||
PZ_Lock(slot->slotLock);
|
||||
slot->needLogin = (PRBool)(ulNewLen != 0);
|
||||
slot->isLoggedIn = (PRBool)(sftkdb_PWCached(handle) == SECSuccess);
|
||||
PZ_Unlock(slot->slotLock);
|
||||
/* Reset login flags. */
|
||||
if (ulNewLen == 0) {
|
||||
PRBool tokenRemoved = PR_FALSE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue