| Index: nss/lib/softoken/pkcs11.c
|
| ===================================================================
|
| --- nss/lib/softoken/pkcs11.c (revision 195639)
|
| +++ nss/lib/softoken/pkcs11.c (working copy)
|
| @@ -304,10 +304,14 @@
|
| CKF_DERIVE}, PR_TRUE},
|
| #ifdef NSS_ENABLE_ECC
|
| /* -------------------- Elliptic Curve Operations --------------------- */
|
| - {CKM_EC_KEY_PAIR_GEN, {112, 571, CKF_GENERATE_KEY_PAIR|CKF_EC_BPNU}, PR_TRUE},
|
| - {CKM_ECDH1_DERIVE, {112, 571, CKF_DERIVE|CKF_EC_BPNU}, PR_TRUE},
|
| - {CKM_ECDSA, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
| - {CKM_ECDSA_SHA1, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
| + {CKM_EC_KEY_PAIR_GEN, {EC_MIN_KEY, EC_MAX_KEY,
|
| + CKF_GENERATE_KEY_PAIR|CKF_EC_BPNU}, PR_TRUE},
|
| + {CKM_ECDH1_DERIVE, {EC_MIN_KEY, EC_MAX_KEY,
|
| + CKF_DERIVE|CKF_EC_BPNU}, PR_TRUE},
|
| + {CKM_ECDSA, {EC_MIN_KEY, EC_MAX_KEY,
|
| + CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
| + {CKM_ECDSA_SHA1, {EC_MIN_KEY, EC_MAX_KEY,
|
| + CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE},
|
| #endif /* NSS_ENABLE_ECC */
|
| /* ------------------------- RC2 Operations --------------------------- */
|
| {CKM_RC2_KEY_GEN, {1, 128, CKF_GENERATE}, PR_TRUE},
|
| @@ -387,6 +391,8 @@
|
| {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_NSS_TLS_PRF_GENERAL_SHA256,
|
| + {0, 512, CKF_SN_VR}, PR_FALSE},
|
| /* ------------------------- HKDF Operations -------------------------- */
|
| {CKM_NSS_HKDF_SHA1, {1, 128, CKF_DERIVE}, PR_TRUE},
|
| {CKM_NSS_HKDF_SHA256, {1, 128, CKF_DERIVE}, PR_TRUE},
|
| @@ -454,8 +460,14 @@
|
| {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_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_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_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256,
|
| + {48, 48, 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},
|
| @@ -1894,7 +1906,18 @@
|
| }
|
| rv = DER_SetUInteger(privKey->arena, &privKey->u.ec.version,
|
| NSSLOWKEY_EC_PRIVATE_KEY_VERSION);
|
| - if (rv != SECSuccess) crv = CKR_HOST_MEMORY;
|
| + if (rv != SECSuccess) {
|
| + crv = CKR_HOST_MEMORY;
|
| + /* The following ifdef is needed for Linux arm distros and
|
| + * Android as gcc 4.6 has a bug when targeting arm (but not
|
| + * thumb). The bug has been fixed in gcc 4.7.
|
| + * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56561
|
| + */
|
| +#if defined (__arm__) && !defined(__thumb__) && defined (__GNUC__)
|
| + *crvp = CKR_HOST_MEMORY;
|
| + break;
|
| +#endif
|
| + }
|
| break;
|
| #endif /* NSS_ENABLE_ECC */
|
|
|
|
|