| OLD | NEW |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | 1 /* This Source Code Form is subject to the terms of the Mozilla Public |
| 2 * License, v. 2.0. If a copy of the MPL was not distributed with this | 2 * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 /* | 4 /* |
| 5 * This file implements PKCS 11 on top of our existing security modules | 5 * This file implements PKCS 11 on top of our existing security modules |
| 6 * | 6 * |
| 7 * For more information about PKCS 11 See PKCS 11 Token Inteface Standard. | 7 * For more information about PKCS 11 See PKCS 11 Token Inteface Standard. |
| 8 * This implementation has two slots: | 8 * This implementation has two slots: |
| 9 * slot 1 is our generic crypto support. It does not require login. | 9 * slot 1 is our generic crypto support. It does not require login. |
| 10 * It supports Public Key ops, and all they bulk ciphers and hashes. | 10 * It supports Public Key ops, and all they bulk ciphers and hashes. |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 {CKM_DSA_SHA1, {DSA_MIN_P_BITS, DSA_MAX_P_BITS, | 297 {CKM_DSA_SHA1, {DSA_MIN_P_BITS, DSA_MAX_P_BITS, |
| 298 CKF_SN_VR}, PR_TRUE}, | 298 CKF_SN_VR}, PR_TRUE}, |
| 299 /* -------------------- Diffie Hellman Operations --------------------- */ | 299 /* -------------------- Diffie Hellman Operations --------------------- */ |
| 300 /* no diffie hellman yet */ | 300 /* no diffie hellman yet */ |
| 301 {CKM_DH_PKCS_KEY_PAIR_GEN, {DH_MIN_P_BITS, DH_MAX_P_BITS, | 301 {CKM_DH_PKCS_KEY_PAIR_GEN, {DH_MIN_P_BITS, DH_MAX_P_BITS, |
| 302 CKF_GENERATE_KEY_PAIR}, PR_TRUE}, | 302 CKF_GENERATE_KEY_PAIR}, PR_TRUE}, |
| 303 {CKM_DH_PKCS_DERIVE, {DH_MIN_P_BITS, DH_MAX_P_BITS, | 303 {CKM_DH_PKCS_DERIVE, {DH_MIN_P_BITS, DH_MAX_P_BITS, |
| 304 CKF_DERIVE}, PR_TRUE}, | 304 CKF_DERIVE}, PR_TRUE}, |
| 305 #ifdef NSS_ENABLE_ECC | 305 #ifdef NSS_ENABLE_ECC |
| 306 /* -------------------- Elliptic Curve Operations --------------------- */ | 306 /* -------------------- Elliptic Curve Operations --------------------- */ |
| 307 {CKM_EC_KEY_PAIR_GEN, {112, 571, CKF_GENERATE_KEY_PAIR|CKF_EC_BPNU}, P
R_TRUE}, | 307 {CKM_EC_KEY_PAIR_GEN, {EC_MIN_KEY, EC_MAX_KEY, |
| 308 {CKM_ECDH1_DERIVE, {112, 571, CKF_DERIVE|CKF_EC_BPNU}, PR_TRUE}, | 308 » » » » CKF_GENERATE_KEY_PAIR|CKF_EC_BPNU}, PR_TRUE}, |
| 309 {CKM_ECDSA, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE}, | 309 {CKM_ECDH1_DERIVE, {EC_MIN_KEY, EC_MAX_KEY, |
| 310 {CKM_ECDSA_SHA1, {112, 571, CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE}, | 310 » » » » CKF_DERIVE|CKF_EC_BPNU}, PR_TRUE}, |
| 311 {CKM_ECDSA, {EC_MIN_KEY, EC_MAX_KEY, |
| 312 » » » » CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE}, |
| 313 {CKM_ECDSA_SHA1, {EC_MIN_KEY, EC_MAX_KEY, |
| 314 » » » » CKF_SN_VR|CKF_EC_BPNU}, PR_TRUE}, |
| 311 #endif /* NSS_ENABLE_ECC */ | 315 #endif /* NSS_ENABLE_ECC */ |
| 312 /* ------------------------- RC2 Operations --------------------------- */ | 316 /* ------------------------- RC2 Operations --------------------------- */ |
| 313 {CKM_RC2_KEY_GEN, {1, 128, CKF_GENERATE}, PR_TRUE}, | 317 {CKM_RC2_KEY_GEN, {1, 128, CKF_GENERATE}, PR_TRUE}, |
| 314 {CKM_RC2_ECB, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, | 318 {CKM_RC2_ECB, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, |
| 315 {CKM_RC2_CBC, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, | 319 {CKM_RC2_CBC, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, |
| 316 {CKM_RC2_MAC, {1, 128, CKF_SN_VR}, PR_TRUE}, | 320 {CKM_RC2_MAC, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 317 {CKM_RC2_MAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, | 321 {CKM_RC2_MAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 318 {CKM_RC2_CBC_PAD, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, | 322 {CKM_RC2_CBC_PAD, {1, 128, CKF_EN_DE_WR_UN}, PR_TRUE}, |
| 319 /* ------------------------- RC4 Operations --------------------------- */ | 323 /* ------------------------- RC4 Operations --------------------------- */ |
| 320 {CKM_RC4_KEY_GEN, {1, 256, CKF_GENERATE}, PR_FALSE}, | 324 {CKM_RC4_KEY_GEN, {1, 256, CKF_GENERATE}, PR_FALSE}, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 {CKM_SHA256, {0, 0, CKF_DIGEST}, PR_FALSE}, | 384 {CKM_SHA256, {0, 0, CKF_DIGEST}, PR_FALSE}, |
| 381 {CKM_SHA256_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, | 385 {CKM_SHA256_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 382 {CKM_SHA256_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, | 386 {CKM_SHA256_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 383 {CKM_SHA384, {0, 0, CKF_DIGEST}, PR_FALSE}, | 387 {CKM_SHA384, {0, 0, CKF_DIGEST}, PR_FALSE}, |
| 384 {CKM_SHA384_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, | 388 {CKM_SHA384_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 385 {CKM_SHA384_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, | 389 {CKM_SHA384_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 386 {CKM_SHA512, {0, 0, CKF_DIGEST}, PR_FALSE}, | 390 {CKM_SHA512, {0, 0, CKF_DIGEST}, PR_FALSE}, |
| 387 {CKM_SHA512_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, | 391 {CKM_SHA512_HMAC, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 388 {CKM_SHA512_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, | 392 {CKM_SHA512_HMAC_GENERAL, {1, 128, CKF_SN_VR}, PR_TRUE}, |
| 389 {CKM_TLS_PRF_GENERAL, {0, 512, CKF_SN_VR}, PR_FALSE}, | 393 {CKM_TLS_PRF_GENERAL, {0, 512, CKF_SN_VR}, PR_FALSE}, |
| 394 {CKM_NSS_TLS_PRF_GENERAL_SHA256, |
| 395 {0, 512, CKF_SN_VR}, PR_FALSE}, |
| 390 /* ------------------------- HKDF Operations -------------------------- */ | 396 /* ------------------------- HKDF Operations -------------------------- */ |
| 391 {CKM_NSS_HKDF_SHA1, {1, 128, CKF_DERIVE}, PR_TRUE}, | 397 {CKM_NSS_HKDF_SHA1, {1, 128, CKF_DERIVE}, PR_TRUE}, |
| 392 {CKM_NSS_HKDF_SHA256, {1, 128, CKF_DERIVE}, PR_TRUE}, | 398 {CKM_NSS_HKDF_SHA256, {1, 128, CKF_DERIVE}, PR_TRUE}, |
| 393 {CKM_NSS_HKDF_SHA384, {1, 128, CKF_DERIVE}, PR_TRUE}, | 399 {CKM_NSS_HKDF_SHA384, {1, 128, CKF_DERIVE}, PR_TRUE}, |
| 394 {CKM_NSS_HKDF_SHA512, {1, 128, CKF_DERIVE}, PR_TRUE}, | 400 {CKM_NSS_HKDF_SHA512, {1, 128, CKF_DERIVE}, PR_TRUE}, |
| 395 /* ------------------------- CAST Operations --------------------------- */ | 401 /* ------------------------- CAST Operations --------------------------- */ |
| 396 #ifdef NSS_SOFTOKEN_DOES_CAST | 402 #ifdef NSS_SOFTOKEN_DOES_CAST |
| 397 /* Cast operations are not supported ( yet? ) */ | 403 /* Cast operations are not supported ( yet? ) */ |
| 398 {CKM_CAST_KEY_GEN, {1, 8, CKF_GENERATE}, PR_TRUE}, | 404 {CKM_CAST_KEY_GEN, {1, 8, CKF_GENERATE}, PR_TRUE}, |
| 399 {CKM_CAST_ECB, {1, 8, CKF_EN_DE_WR_UN}, PR_TRUE}, | 405 {CKM_CAST_ECB, {1, 8, CKF_EN_DE_WR_UN}, PR_TRUE}, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 {CKM_SSL3_MD5_MAC, { 0, 16, CKF_DERIVE}, PR_FALSE}, | 453 {CKM_SSL3_MD5_MAC, { 0, 16, CKF_DERIVE}, PR_FALSE}, |
| 448 {CKM_SSL3_SHA1_MAC, { 0, 20, CKF_DERIVE}, PR_FALSE}, | 454 {CKM_SSL3_SHA1_MAC, { 0, 20, CKF_DERIVE}, PR_FALSE}, |
| 449 {CKM_MD5_KEY_DERIVATION, { 0, 16, CKF_DERIVE}, PR_FALSE}, | 455 {CKM_MD5_KEY_DERIVATION, { 0, 16, CKF_DERIVE}, PR_FALSE}, |
| 450 {CKM_MD2_KEY_DERIVATION, { 0, 16, CKF_DERIVE}, PR_FALSE}, | 456 {CKM_MD2_KEY_DERIVATION, { 0, 16, CKF_DERIVE}, PR_FALSE}, |
| 451 {CKM_SHA1_KEY_DERIVATION, { 0, 20, CKF_DERIVE}, PR_FALSE}, | 457 {CKM_SHA1_KEY_DERIVATION, { 0, 20, CKF_DERIVE}, PR_FALSE}, |
| 452 {CKM_SHA224_KEY_DERIVATION, { 0, 28, CKF_DERIVE}, PR_FALSE}, | 458 {CKM_SHA224_KEY_DERIVATION, { 0, 28, CKF_DERIVE}, PR_FALSE}, |
| 453 {CKM_SHA256_KEY_DERIVATION, { 0, 32, CKF_DERIVE}, PR_FALSE}, | 459 {CKM_SHA256_KEY_DERIVATION, { 0, 32, CKF_DERIVE}, PR_FALSE}, |
| 454 {CKM_SHA384_KEY_DERIVATION, { 0, 48, CKF_DERIVE}, PR_FALSE}, | 460 {CKM_SHA384_KEY_DERIVATION, { 0, 48, CKF_DERIVE}, PR_FALSE}, |
| 455 {CKM_SHA512_KEY_DERIVATION, { 0, 64, CKF_DERIVE}, PR_FALSE}, | 461 {CKM_SHA512_KEY_DERIVATION, { 0, 64, CKF_DERIVE}, PR_FALSE}, |
| 456 {CKM_TLS_MASTER_KEY_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE}, | 462 {CKM_TLS_MASTER_KEY_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE}, |
| 463 {CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256, |
| 464 {48, 48, CKF_DERIVE}, PR_FALSE}, |
| 457 {CKM_TLS_MASTER_KEY_DERIVE_DH, {8, 128, CKF_DERIVE}, PR_FALSE}, | 465 {CKM_TLS_MASTER_KEY_DERIVE_DH, {8, 128, CKF_DERIVE}, PR_FALSE}, |
| 466 {CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256, |
| 467 {8, 128, CKF_DERIVE}, PR_FALSE}, |
| 458 {CKM_TLS_KEY_AND_MAC_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE}, | 468 {CKM_TLS_KEY_AND_MAC_DERIVE, {48, 48, CKF_DERIVE}, PR_FALSE}, |
| 469 {CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256, |
| 470 {48, 48, CKF_DERIVE}, PR_FALSE}, |
| 459 /* ---------------------- PBE Key Derivations ------------------------ */ | 471 /* ---------------------- PBE Key Derivations ------------------------ */ |
| 460 {CKM_PBE_MD2_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE}, | 472 {CKM_PBE_MD2_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE}, |
| 461 {CKM_PBE_MD5_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE}, | 473 {CKM_PBE_MD5_DES_CBC, {8, 8, CKF_DERIVE}, PR_TRUE}, |
| 462 /* ------------------ NETSCAPE PBE Key Derivations ------------------- */ | 474 /* ------------------ NETSCAPE PBE Key Derivations ------------------- */ |
| 463 {CKM_NETSCAPE_PBE_SHA1_DES_CBC, { 8, 8, CKF_GENERATE}, PR_TRUE}, | 475 {CKM_NETSCAPE_PBE_SHA1_DES_CBC, { 8, 8, CKF_GENERATE}, PR_TRUE}, |
| 464 {CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, | 476 {CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, |
| 465 {CKM_PBE_SHA1_DES3_EDE_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, | 477 {CKM_PBE_SHA1_DES3_EDE_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, |
| 466 {CKM_PBE_SHA1_DES2_EDE_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, | 478 {CKM_PBE_SHA1_DES2_EDE_CBC, {24,24, CKF_GENERATE}, PR_TRUE}, |
| 467 {CKM_PBE_SHA1_RC2_40_CBC, {40,40, CKF_GENERATE}, PR_TRUE}, | 479 {CKM_PBE_SHA1_RC2_40_CBC, {40,40, CKF_GENERATE}, PR_TRUE}, |
| 468 {CKM_PBE_SHA1_RC2_128_CBC, {128,128, CKF_GENERATE}, PR_TRUE}, | 480 {CKM_PBE_SHA1_RC2_128_CBC, {128,128, CKF_GENERATE}, PR_TRUE}, |
| (...skipping 1418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1887 | 1899 |
| 1888 if (sftk_hasAttribute(object, CKA_NETSCAPE_DB)) { | 1900 if (sftk_hasAttribute(object, CKA_NETSCAPE_DB)) { |
| 1889 crv = sftk_Attribute2SSecItem(arena, &privKey->u.ec.publicValue, | 1901 crv = sftk_Attribute2SSecItem(arena, &privKey->u.ec.publicValue, |
| 1890 object, CKA_NETSCAPE_DB); | 1902 object, CKA_NETSCAPE_DB); |
| 1891 if (crv != CKR_OK) break; | 1903 if (crv != CKR_OK) break; |
| 1892 /* privKey was zero'd so public value is already set to NULL, 0 | 1904 /* privKey was zero'd so public value is already set to NULL, 0 |
| 1893 * if we don't set it explicitly */ | 1905 * if we don't set it explicitly */ |
| 1894 } | 1906 } |
| 1895 rv = DER_SetUInteger(privKey->arena, &privKey->u.ec.version, | 1907 rv = DER_SetUInteger(privKey->arena, &privKey->u.ec.version, |
| 1896 NSSLOWKEY_EC_PRIVATE_KEY_VERSION); | 1908 NSSLOWKEY_EC_PRIVATE_KEY_VERSION); |
| 1897 » if (rv != SECSuccess) crv = CKR_HOST_MEMORY; | 1909 » if (rv != SECSuccess) { |
| 1910 » crv = CKR_HOST_MEMORY; |
| 1911 » /* The following ifdef is needed for Linux arm distros and |
| 1912 » * Android as gcc 4.6 has a bug when targeting arm (but not |
| 1913 » * thumb). The bug has been fixed in gcc 4.7. |
| 1914 » * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56561 |
| 1915 » */ |
| 1916 #if defined (__arm__) && !defined(__thumb__) && defined (__GNUC__) |
| 1917 » *crvp = CKR_HOST_MEMORY; |
| 1918 » break; |
| 1919 #endif |
| 1920 » } |
| 1898 break; | 1921 break; |
| 1899 #endif /* NSS_ENABLE_ECC */ | 1922 #endif /* NSS_ENABLE_ECC */ |
| 1900 | 1923 |
| 1901 default: | 1924 default: |
| 1902 crv = CKR_KEY_TYPE_INCONSISTENT; | 1925 crv = CKR_KEY_TYPE_INCONSISTENT; |
| 1903 break; | 1926 break; |
| 1904 } | 1927 } |
| 1905 if (crv == CKR_OK && itemTemplateCount != 0) { | 1928 if (crv == CKR_OK && itemTemplateCount != 0) { |
| 1906 PORT_Assert(itemTemplateCount > 0); | 1929 PORT_Assert(itemTemplateCount > 0); |
| 1907 PORT_Assert(itemTemplateCount <= SFTK_MAX_ITEM_TEMPLATE); | 1930 PORT_Assert(itemTemplateCount <= SFTK_MAX_ITEM_TEMPLATE); |
| (...skipping 2791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4699 | 4722 |
| 4700 | 4723 |
| 4701 CK_RV NSC_WaitForSlotEvent(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, | 4724 CK_RV NSC_WaitForSlotEvent(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, |
| 4702 CK_VOID_PTR pReserved) | 4725 CK_VOID_PTR pReserved) |
| 4703 { | 4726 { |
| 4704 CHECK_FORK(); | 4727 CHECK_FORK(); |
| 4705 | 4728 |
| 4706 return CKR_FUNCTION_NOT_SUPPORTED; | 4729 return CKR_FUNCTION_NOT_SUPPORTED; |
| 4707 } | 4730 } |
| 4708 | 4731 |
| OLD | NEW |