OLD | NEW |
1 /* | 1 /* |
2 * PKCS #11 FIPS Power-Up Self Test. | 2 * PKCS #11 FIPS Power-Up Self Test. |
3 * | 3 * |
4 * This Source Code Form is subject to the terms of the Mozilla Public | 4 * This Source Code Form is subject to the terms of the Mozilla Public |
5 * License, v. 2.0. If a copy of the MPL was not distributed with this | 5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
7 | 7 |
8 #include "softoken.h" /* Required for RC2-ECB, RC2-CBC, RC4, DES-ECB, */ | 8 #include "softoken.h" /* Required for RC2-ECB, RC2-CBC, RC4, DES-ECB, */ |
9 /* DES-CBC, DES3-ECB, DES3-CBC, RSA */ | 9 /* DES-CBC, DES3-ECB, DES3-CBC, RSA */ |
10 /* and DSA. */ | 10 /* and DSA. */ |
11 #include "seccomon.h" /* Required for RSA and DSA. */ | 11 #include "seccomon.h" /* Required for RSA and DSA. */ |
12 #include "lowkeyi.h" /* Required for RSA and DSA. */ | 12 #include "lowkeyi.h" /* Required for RSA and DSA. */ |
13 #include "pkcs11.h" /* Required for PKCS #11. */ | 13 #include "pkcs11.h" /* Required for PKCS #11. */ |
14 #include "secerr.h" | 14 #include "secerr.h" |
15 | 15 |
16 #ifdef NSS_ENABLE_ECC | 16 #ifndef NSS_DISABLE_ECC |
17 #include "ec.h" /* Required for ECDSA */ | 17 #include "ec.h" /* Required for ECDSA */ |
18 #endif | 18 #endif |
19 | 19 |
20 | 20 |
21 /* FIPS preprocessor directives for RC2-ECB and RC2-CBC. */ | 21 /* FIPS preprocessor directives for RC2-ECB and RC2-CBC. */ |
22 #define FIPS_RC2_KEY_LENGTH 5 /* 40-bits */ | 22 #define FIPS_RC2_KEY_LENGTH 5 /* 40-bits */ |
23 #define FIPS_RC2_ENCRYPT_LENGTH 8 /* 64-bits */ | 23 #define FIPS_RC2_ENCRYPT_LENGTH 8 /* 64-bits */ |
24 #define FIPS_RC2_DECRYPT_LENGTH 8 /* 64-bits */ | 24 #define FIPS_RC2_DECRYPT_LENGTH 8 /* 64-bits */ |
25 | 25 |
26 | 26 |
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1605 return( CKR_OK ); | 1605 return( CKR_OK ); |
1606 | 1606 |
1607 rsa_loser: | 1607 rsa_loser: |
1608 | 1608 |
1609 nsslowkey_DestroyPublicKey( rsa_public_key ); | 1609 nsslowkey_DestroyPublicKey( rsa_public_key ); |
1610 nsslowkey_DestroyPrivateKey( rsa_private_key ); | 1610 nsslowkey_DestroyPrivateKey( rsa_private_key ); |
1611 | 1611 |
1612 return( CKR_DEVICE_ERROR ); | 1612 return( CKR_DEVICE_ERROR ); |
1613 } | 1613 } |
1614 | 1614 |
1615 #ifdef NSS_ENABLE_ECC | 1615 #ifndef NSS_DISABLE_ECC |
1616 | 1616 |
1617 static CK_RV | 1617 static CK_RV |
1618 sftk_fips_ECDSA_Test(const PRUint8 *encodedParams, | 1618 sftk_fips_ECDSA_Test(const PRUint8 *encodedParams, |
1619 unsigned int encodedParamsLen, | 1619 unsigned int encodedParamsLen, |
1620 const PRUint8 *knownSignature, | 1620 const PRUint8 *knownSignature, |
1621 unsigned int knownSignatureLen) { | 1621 unsigned int knownSignatureLen) { |
1622 | 1622 |
1623 /* ECDSA Known Seed info for curves nistp256 and nistk283 */ | 1623 /* ECDSA Known Seed info for curves nistp256 and nistk283 */ |
1624 static const PRUint8 ecdsa_Known_Seed[] = { | 1624 static const PRUint8 ecdsa_Known_Seed[] = { |
1625 0x6a, 0x9b, 0xf6, 0xf7, 0xce, 0xed, 0x79, 0x11, | 1625 0x6a, 0x9b, 0xf6, 0xf7, 0xce, 0xed, 0x79, 0x11, |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1788 ecdsa_known_K283_signature, | 1788 ecdsa_known_K283_signature, |
1789 sizeof ecdsa_known_K283_signature ); | 1789 sizeof ecdsa_known_K283_signature ); |
1790 if (crv != CKR_OK) { | 1790 if (crv != CKR_OK) { |
1791 return( CKR_DEVICE_ERROR ); | 1791 return( CKR_DEVICE_ERROR ); |
1792 } | 1792 } |
1793 #endif | 1793 #endif |
1794 | 1794 |
1795 return( CKR_OK ); | 1795 return( CKR_OK ); |
1796 } | 1796 } |
1797 | 1797 |
1798 #endif /* NSS_ENABLE_ECC */ | 1798 #endif /* NSS_DISABLE_ECC */ |
1799 | 1799 |
1800 static CK_RV | 1800 static CK_RV |
1801 sftk_fips_DSA_PowerUpSelfTest( void ) | 1801 sftk_fips_DSA_PowerUpSelfTest( void ) |
1802 { | 1802 { |
1803 /* DSA Known P (1024-bits), Q (160-bits), and G (1024-bits) Values. */ | 1803 /* DSA Known P (1024-bits), Q (160-bits), and G (1024-bits) Values. */ |
1804 static const PRUint8 dsa_P[] = { | 1804 static const PRUint8 dsa_P[] = { |
1805 0x80,0xb0,0xd1,0x9d,0x6e,0xa4,0xf3,0x28, | 1805 0x80,0xb0,0xd1,0x9d,0x6e,0xa4,0xf3,0x28, |
1806 0x9f,0x24,0xa9,0x8a,0x49,0xd0,0x0c,0x63, | 1806 0x9f,0x24,0xa9,0x8a,0x49,0xd0,0x0c,0x63, |
1807 0xe8,0x59,0x04,0xf9,0x89,0x4a,0x5e,0xc0, | 1807 0xe8,0x59,0x04,0xf9,0x89,0x4a,0x5e,0xc0, |
1808 0x6d,0xd2,0x67,0x6b,0x37,0x81,0x83,0x0c, | 1808 0x6d,0xd2,0x67,0x6b,0x37,0x81,0x83,0x0c, |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2073 | 2073 |
2074 if( rv != CKR_OK ) | 2074 if( rv != CKR_OK ) |
2075 return rv; | 2075 return rv; |
2076 | 2076 |
2077 /* RNG Power-Up SelfTest(s). */ | 2077 /* RNG Power-Up SelfTest(s). */ |
2078 rv = sftk_fips_RNG_PowerUpSelfTest(); | 2078 rv = sftk_fips_RNG_PowerUpSelfTest(); |
2079 | 2079 |
2080 if( rv != CKR_OK ) | 2080 if( rv != CKR_OK ) |
2081 return rv; | 2081 return rv; |
2082 | 2082 |
2083 #ifdef NSS_ENABLE_ECC | 2083 #ifndef NSS_DISABLE_ECC |
2084 /* ECDSA Power-Up SelfTest(s). */ | 2084 /* ECDSA Power-Up SelfTest(s). */ |
2085 rv = sftk_fips_ECDSA_PowerUpSelfTest(); | 2085 rv = sftk_fips_ECDSA_PowerUpSelfTest(); |
2086 | 2086 |
2087 if( rv != CKR_OK ) | 2087 if( rv != CKR_OK ) |
2088 return rv; | 2088 return rv; |
2089 #endif | 2089 #endif |
2090 | 2090 |
2091 /* Software/Firmware Integrity Test. */ | 2091 /* Software/Firmware Integrity Test. */ |
2092 rv = sftk_fipsSoftwareIntegrityTest(); | 2092 rv = sftk_fipsSoftwareIntegrityTest(); |
2093 | 2093 |
2094 if( rv != CKR_OK ) | 2094 if( rv != CKR_OK ) |
2095 return rv; | 2095 return rv; |
2096 | 2096 |
2097 /* Passed Power-Up SelfTest(s). */ | 2097 /* Passed Power-Up SelfTest(s). */ |
2098 return( CKR_OK ); | 2098 return( CKR_OK ); |
2099 } | 2099 } |
2100 | 2100 |
OLD | NEW |