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 */ |