diff --git a/security/nss/automation/abi-check/expected-report-libnss3.so.txt b/security/nss/automation/abi-check/expected-report-libnss3.so.txt index c24dae4253..a4c7673101 100644 --- a/security/nss/automation/abi-check/expected-report-libnss3.so.txt +++ b/security/nss/automation/abi-check/expected-report-libnss3.so.txt @@ -1,5 +1,5 @@ 1 Added function: - 'function SECStatus CERT_GetCertificateDer(const CERTCertificate*, SECItem*)' {CERT_GetCertificateDer@@NSS_3.44} + 'function SECOidTag HASH_GetHashOidTagByHashType(HASH_HashType)' {HASH_GetHashOidTagByHashType@@NSS_3.43} diff --git a/security/nss/automation/abi-check/expected-report-libssl3.so.txt b/security/nss/automation/abi-check/expected-report-libssl3.so.txt index e69de29bb2..8ef488de07 100644 --- a/security/nss/automation/abi-check/expected-report-libssl3.so.txt +++ b/security/nss/automation/abi-check/expected-report-libssl3.so.txt @@ -0,0 +1,20 @@ + +2 functions with some indirect sub-type change: + + [C]'function SECStatus SSL_GetCipherSuiteInfo(PRUint16, SSLCipherSuiteInfo*, PRUintn)' at sslinfo.c:326:1 has some indirect sub-type changes: + parameter 2 of type 'SSLCipherSuiteInfo*' has sub-type changes: + in pointed to type 'typedef SSLCipherSuiteInfo' at sslt.h:433:1: + underlying type 'struct SSLCipherSuiteInfoStr' at sslt.h:366:1 changed: + type size changed from 768 to 832 (in bits) + 1 data member insertion: + 'SSLHashType SSLCipherSuiteInfoStr::kdfHash', at offset 768 (in bits) at sslt.h:429:1 + + [C]'function SECStatus SSL_GetPreliminaryChannelInfo(PRFileDesc*, SSLPreliminaryChannelInfo*, PRUintn)' at sslinfo.c:111:1 has some indirect sub-type changes: + parameter 2 of type 'SSLPreliminaryChannelInfo*' has sub-type changes: + in pointed to type 'typedef SSLPreliminaryChannelInfo' at sslt.h:379:1: + underlying type 'struct SSLPreliminaryChannelInfoStr' at sslt.h:333:1 changed: + type size changed from 160 to 192 (in bits) + 1 data member insertion: + 'PRUint16 SSLPreliminaryChannelInfoStr::zeroRttCipherSuite', at offset 160 (in bits) at sslt.h:375:1 + + diff --git a/security/nss/automation/abi-check/previous-nss-release b/security/nss/automation/abi-check/previous-nss-release index da7472286f..d7418dbfda 100644 --- a/security/nss/automation/abi-check/previous-nss-release +++ b/security/nss/automation/abi-check/previous-nss-release @@ -1 +1 @@ -NSS_3_43_BRANCH +NSS_3_42_BRANCH diff --git a/security/nss/cmd/selfserv/selfserv.c b/security/nss/cmd/selfserv/selfserv.c index 6c00d3a15d..1784c9ee3a 100644 --- a/security/nss/cmd/selfserv/selfserv.c +++ b/security/nss/cmd/selfserv/selfserv.c @@ -233,9 +233,7 @@ PrintParameterUsage() " ecdsa_secp521r1_sha512,\n" " rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512,\n" " rsa_pss_pss_sha256, rsa_pss_pss_sha384, rsa_pss_pss_sha512,\n" - "-Z enable 0-RTT (for TLS 1.3; also use -u)\n" - "-E enable post-handshake authentication\n" - " (for TLS 1.3; only has an effect with 3 or more -r options)\n", + "-Z enable 0-RTT (for TLS 1.3; also use -u)\n", stderr); } @@ -806,7 +804,6 @@ PRBool failedToNegotiateName = PR_FALSE; PRBool enableExtendedMasterSecret = PR_FALSE; PRBool zeroRTT = PR_FALSE; PRBool enableALPN = PR_FALSE; -PRBool enablePostHandshakeAuth = PR_FALSE; SSLNamedGroup *enabledGroups = NULL; unsigned int enabledGroupsCount = 0; const SSLSignatureScheme *enabledSigSchemes = NULL; @@ -1434,28 +1431,15 @@ handle_connection(PRFileDesc *tcp_sock, PRFileDesc *model_sock) errWarn("second SSL_OptionSet SSL_REQUIRE_CERTIFICATE"); break; } - if (enablePostHandshakeAuth) { - rv = SSL_SendCertificateRequest(ssl_sock); - if (rv != SECSuccess) { - errWarn("SSL_SendCertificateRequest"); - break; - } - rv = SSL_ForceHandshake(ssl_sock); - if (rv != SECSuccess) { - errWarn("SSL_ForceHandshake"); - break; - } - } else { - rv = SSL_ReHandshake(ssl_sock, PR_TRUE); - if (rv != 0) { - errWarn("SSL_ReHandshake"); - break; - } - rv = SSL_ForceHandshake(ssl_sock); - if (rv < 0) { - errWarn("SSL_ForceHandshake"); - break; - } + rv = SSL_ReHandshake(ssl_sock, PR_TRUE); + if (rv != 0) { + errWarn("SSL_ReHandshake"); + break; + } + rv = SSL_ForceHandshake(ssl_sock); + if (rv < 0) { + errWarn("SSL_ForceHandshake"); + break; } } } @@ -1964,16 +1948,6 @@ server_main( } } - if (enablePostHandshakeAuth) { - if (enabledVersions.max < SSL_LIBRARY_VERSION_TLS_1_3) { - errExit("You tried enabling post-handshake auth without enabling TLS 1.3!"); - } - rv = SSL_OptionSet(model_sock, SSL_ENABLE_POST_HANDSHAKE_AUTH, PR_TRUE); - if (rv != SECSuccess) { - errExit("error enabling post-handshake auth"); - } - } - if (enableALPN) { PRUint8 alpnVal[] = { 0x08, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x31, 0x2e, 0x31 }; @@ -2249,7 +2223,7 @@ main(int argc, char **argv) ** in 3.28, please leave some time before resuing those. ** 'z' was removed in 3.39. */ optstate = PL_CreateOptState(argc, argv, - "2:A:C:DEGH:I:J:L:M:NP:QRS:T:U:V:W:YZa:bc:d:e:f:g:hi:jk:lmn:op:rst:uvw:y"); + "2:A:C:DGH:I:J:L:M:NP:QRS:T:U:V:W:YZa:bc:d:e:f:g:hi:jk:lmn:op:rst:uvw:y"); while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) { ++optionsFound; switch (optstate->option) { @@ -2269,11 +2243,6 @@ main(int argc, char **argv) case 'D': noDelay = PR_TRUE; break; - - case 'E': - enablePostHandshakeAuth = PR_TRUE; - break; - case 'H': configureDHE = (PORT_Atoi(optstate->value) != 0); break; diff --git a/security/nss/cmd/tstclnt/tstclnt.c b/security/nss/cmd/tstclnt/tstclnt.c index bc0cbfa76e..520eeff648 100644 --- a/security/nss/cmd/tstclnt/tstclnt.c +++ b/security/nss/cmd/tstclnt/tstclnt.c @@ -221,7 +221,7 @@ PrintUsageHeader() fprintf(stderr, "Usage: %s -h host [-a 1st_hs_name ] [-a 2nd_hs_name ] [-p port]\n" " [-D | -d certdir] [-C] [-b | -R root-module] \n" - " [-n nickname] [-Bafosvx] [-c ciphers] [-Y] [-Z] [-E]\n" + " [-n nickname] [-Bafosvx] [-c ciphers] [-Y] [-Z]\n" " [-V [min-version]:[max-version]] [-K] [-T] [-U]\n" " [-r N] [-w passwd] [-W pwfile] [-q [-t seconds]]\n" " [-I groups] [-J signatureschemes]\n" @@ -311,9 +311,6 @@ PrintParameterUsage() fprintf(stderr, "%-20s Use DTLS\n", "-P {client, server}"); fprintf(stderr, "%-20s Exit after handshake\n", "-Q"); fprintf(stderr, "%-20s Encrypted SNI Keys\n", "-N"); - fprintf(stderr, "%-20s Enable post-handshake authentication\n" - "%-20s for TLS 1.3; need to specify -n\n", - "-E", ""); } static void @@ -992,7 +989,6 @@ PRBool requestToExit = PR_FALSE; char *versionString = NULL; PRBool handshakeComplete = PR_FALSE; char *encryptedSNIKeys = NULL; -PRBool enablePostHandshakeAuth = PR_FALSE; static int writeBytesToServer(PRFileDesc *s, const PRUint8 *buf, int nb) @@ -1414,15 +1410,6 @@ run() goto done; } - if (enablePostHandshakeAuth) { - rv = SSL_OptionSet(s, SSL_ENABLE_POST_HANDSHAKE_AUTH, PR_TRUE); - if (rv != SECSuccess) { - SECU_PrintError(progName, "error enabling post-handshake auth"); - error = 1; - goto done; - } - } - if (enabledGroups) { rv = SSL_NamedGroupConfig(s, enabledGroups, enabledGroupsCount); if (rv < 0) { @@ -1720,7 +1707,7 @@ main(int argc, char **argv) * Please leave some time before reusing these. */ optstate = PL_CreateOptState(argc, argv, - "46A:CDEFGHI:J:KL:M:N:OP:QR:STUV:W:X:YZa:bc:d:fgh:m:n:op:qr:st:uvw:"); + "46A:CDFGHI:J:KL:M:N:OP:QR:STUV:W:X:YZa:bc:d:fgh:m:n:op:qr:st:uvw:"); while ((optstatus = PL_GetNextOpt(optstate)) == PL_OPT_OK) { switch (optstate->option) { case '?': @@ -1751,10 +1738,6 @@ main(int argc, char **argv) openDB = PR_FALSE; break; - case 'E': - enablePostHandshakeAuth = PR_TRUE; - break; - case 'F': if (serverCertAuth.testFreshStatusFromSideChannel) { /* parameter given twice or more */ @@ -2005,11 +1988,6 @@ main(int argc, char **argv) exit(1); } - if (enablePostHandshakeAuth && !nickname) { - fprintf(stderr, "%s: -E requires the use of -n\n", progName); - exit(1); - } - PR_Init(PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 1); PK11_SetPasswordFunc(SECU_GetModulePassword); diff --git a/security/nss/cpputil/tls_parser.h b/security/nss/cpputil/tls_parser.h index 2aa7a0ecdc..881c5268ec 100644 --- a/security/nss/cpputil/tls_parser.h +++ b/security/nss/cpputil/tls_parser.h @@ -52,7 +52,6 @@ const uint8_t kTlsAlertInappropriateFallback = 86; const uint8_t kTlsAlertMissingExtension = 109; const uint8_t kTlsAlertUnsupportedExtension = 110; const uint8_t kTlsAlertUnrecognizedName = 112; -const uint8_t kTlsAlertCertificateRequired = 116; const uint8_t kTlsAlertNoApplicationProtocol = 120; const uint8_t kTlsFakeChangeCipherSpec[] = { diff --git a/security/nss/gtests/certdb_gtest/certdb_gtest.gyp b/security/nss/gtests/certdb_gtest/certdb_gtest.gyp index 7f5bb324b5..898102defe 100644 --- a/security/nss/gtests/certdb_gtest/certdb_gtest.gyp +++ b/security/nss/gtests/certdb_gtest/certdb_gtest.gyp @@ -12,8 +12,6 @@ 'type': 'executable', 'sources': [ 'alg1485_unittest.cc', - 'cert_unittest.cc', - 'decode_certs_unittest.cc', '<(DEPTH)/gtests/common/gtests.cc' ], 'dependencies': [ @@ -22,7 +20,6 @@ '<(DEPTH)/lib/util/util.gyp:nssutil3', '<(DEPTH)/lib/ssl/ssl.gyp:ssl3', '<(DEPTH)/lib/nss/nss.gyp:nss3', - '<(DEPTH)/lib/smime/smime.gyp:smime3', ] } ], diff --git a/security/nss/gtests/certdb_gtest/manifest.mn b/security/nss/gtests/certdb_gtest/manifest.mn index c95cf991f3..4a3a1fda09 100644 --- a/security/nss/gtests/certdb_gtest/manifest.mn +++ b/security/nss/gtests/certdb_gtest/manifest.mn @@ -8,8 +8,6 @@ MODULE = nss CPPSRCS = \ alg1485_unittest.cc \ - cert_unittest.cc \ - decode_certs_unittest.cc \ $(NULL) INCLUDES += -I$(CORE_DEPTH)/gtests/google_test/gtest/include \ diff --git a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc index 473932655f..8db23e74e1 100644 --- a/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_auth_unittest.cc @@ -320,46 +320,6 @@ TEST_F(TlsConnectStreamTls13, PostHandshakeAuthConcurrent) { EXPECT_EQ(PR_WOULD_BLOCK_ERROR, PORT_GetError()); } -TEST_F(TlsConnectStreamTls13, PostHandshakeAuthBeforeKeyUpdate) { - client_->SetupClientAuth(); - EXPECT_EQ(SECSuccess, SSL_OptionSet(client_->ssl_fd(), - SSL_ENABLE_POST_HANDSHAKE_AUTH, PR_TRUE)); - Connect(); - // Send CertificateRequest. - EXPECT_EQ(SECSuccess, SSL_SendCertificateRequest(server_->ssl_fd())) - << "Unexpected error: " << PORT_ErrorToName(PORT_GetError()); - // Send KeyUpdate. - EXPECT_EQ(SECFailure, SSL_KeyUpdate(server_->ssl_fd(), PR_TRUE)); - EXPECT_EQ(PR_WOULD_BLOCK_ERROR, PORT_GetError()); -} - -TEST_F(TlsConnectStreamTls13, PostHandshakeAuthDuringClientKeyUpdate) { - client_->SetupClientAuth(); - EXPECT_EQ(SECSuccess, SSL_OptionSet(client_->ssl_fd(), - SSL_ENABLE_POST_HANDSHAKE_AUTH, PR_TRUE)); - Connect(); - CheckEpochs(3, 3); - // Send CertificateRequest from server. - EXPECT_EQ(SECSuccess, SSL_SendCertificateRequest(server_->ssl_fd())) - << "Unexpected error: " << PORT_ErrorToName(PORT_GetError()); - // Send KeyUpdate from client. - EXPECT_EQ(SECSuccess, SSL_KeyUpdate(client_->ssl_fd(), PR_TRUE)); - server_->SendData(50); // server sends CertificateRequest - client_->SendData(50); // client sends KeyUpdate - server_->ReadBytes(50); // server receives KeyUpdate and defers response - CheckEpochs(4, 3); - client_->ReadBytes(50); // client receives CertificateRequest - client_->SendData( - 50); // client sends Certificate, CertificateVerify, Finished - server_->ReadBytes( - 50); // server receives Certificate, CertificateVerify, Finished - client_->CheckEpochs(3, 4); - server_->CheckEpochs(4, 4); - server_->SendData(50); // server sends KeyUpdate - client_->ReadBytes(50); // client receives KeyUpdate - client_->CheckEpochs(4, 4); -} - TEST_F(TlsConnectStreamTls13, PostHandshakeAuthMissingExtension) { client_->SetupClientAuth(); Connect(); @@ -494,9 +454,6 @@ TEST_F(TlsConnectStreamTls13, PostHandshakeAuthDecline) { client_->SetupClientAuth(); EXPECT_EQ(SECSuccess, SSL_OptionSet(client_->ssl_fd(), SSL_ENABLE_POST_HANDSHAKE_AUTH, PR_TRUE)); - EXPECT_EQ(SECSuccess, - SSL_OptionSet(server_->ssl_fd(), SSL_REQUIRE_CERTIFICATE, - SSL_REQUIRE_ALWAYS)); // Client to decline the certificate request. EXPECT_EQ(SECSuccess, SSL_GetClientAuthDataHook( @@ -515,13 +472,10 @@ TEST_F(TlsConnectStreamTls13, PostHandshakeAuthDecline) { // Send CertificateRequest. EXPECT_EQ(SECSuccess, SSL_SendCertificateRequest(server_->ssl_fd())) << "Unexpected error: " << PORT_ErrorToName(PORT_GetError()); - server_->SendData(50); // send Certificate Request - client_->ReadBytes(50); // read Certificate Request - client_->SendData(50); // send empty Certificate+Finished - server_->ExpectSendAlert(kTlsAlertCertificateRequired); - server_->ReadBytes(50); // read empty Certificate+Finished - server_->ExpectReadWriteError(); - server_->SendData(50); // send alert + server_->SendData(50); + client_->ReadBytes(50); + client_->SendData(50); + server_->ReadBytes(50); // AuthCertificateCallback is not called, because the client sends // an empty certificate_list. EXPECT_EQ(0U, called); diff --git a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc index b3b1eab444..e736f63dae 100644 --- a/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_extension_unittest.cc @@ -482,73 +482,6 @@ TEST_P(TlsExtensionTestGeneric, SupportedCurvesTrailingData) { client_, ssl_elliptic_curves_xtn, extension)); } -TEST_P(TlsExtensionTest12, SupportedCurvesDisableX25519) { - // Disable session resumption. - ConfigureSessionCache(RESUME_NONE, RESUME_NONE); - - // Ensure that we can enable its use in the key exchange. - SECStatus rv = - NSS_SetAlgorithmPolicy(SEC_OID_CURVE25519, NSS_USE_ALG_IN_SSL_KX, 0); - ASSERT_EQ(SECSuccess, rv); - rv = NSS_SetAlgorithmPolicy(SEC_OID_APPLY_SSL_POLICY, NSS_USE_POLICY_IN_SSL, - 0); - ASSERT_EQ(SECSuccess, rv); - - auto capture1 = - MakeTlsFilter(client_, ssl_elliptic_curves_xtn); - Connect(); - - EXPECT_TRUE(capture1->captured()); - const DataBuffer& ext1 = capture1->extension(); - - uint32_t count; - ASSERT_TRUE(ext1.Read(0, 2, &count)); - - // Whether or not we've seen x25519 offered in this handshake. - bool seen1_x25519 = false; - for (size_t offset = 2; offset <= count; offset++) { - uint32_t val; - ASSERT_TRUE(ext1.Read(offset, 2, &val)); - if (val == ssl_grp_ec_curve25519) { - seen1_x25519 = true; - break; - } - } - ASSERT_TRUE(seen1_x25519); - - // Ensure that we can disable its use in the key exchange. - rv = NSS_SetAlgorithmPolicy(SEC_OID_CURVE25519, 0, NSS_USE_ALG_IN_SSL_KX); - ASSERT_EQ(SECSuccess, rv); - rv = NSS_SetAlgorithmPolicy(SEC_OID_APPLY_SSL_POLICY, NSS_USE_POLICY_IN_SSL, - 0); - ASSERT_EQ(SECSuccess, rv); - - // Clean up after the last run. - Reset(); - auto capture2 = - MakeTlsFilter(client_, ssl_elliptic_curves_xtn); - Connect(); - - EXPECT_TRUE(capture2->captured()); - const DataBuffer& ext2 = capture2->extension(); - - ASSERT_TRUE(ext2.Read(0, 2, &count)); - - // Whether or not we've seen x25519 offered in this handshake. - bool seen2_x25519 = false; - for (size_t offset = 2; offset <= count; offset++) { - uint32_t val; - ASSERT_TRUE(ext2.Read(offset, 2, &val)); - - if (val == ssl_grp_ec_curve25519) { - seen2_x25519 = true; - break; - } - } - - ASSERT_FALSE(seen2_x25519); -} - TEST_P(TlsExtensionTestPre13, SupportedPointsEmpty) { const uint8_t val[] = {0x00}; DataBuffer extension(val, sizeof(val)); diff --git a/security/nss/gtests/ssl_gtest/ssl_recordsep_unittest.cc b/security/nss/gtests/ssl_gtest/ssl_recordsep_unittest.cc index 8a1dea5bfb..c690420147 100644 --- a/security/nss/gtests/ssl_gtest/ssl_recordsep_unittest.cc +++ b/security/nss/gtests/ssl_gtest/ssl_recordsep_unittest.cc @@ -442,48 +442,6 @@ TEST_P(TlsConnectStream, ReplaceRecordLayerAsyncLateAuth) { SendForwardReceive(client_, client_stage, server_); } -TEST_F(TlsConnectStreamTls13, ReplaceRecordLayerAsyncPostHandshake) { - StartConnect(); - client_->SetServerKeyBits(server_->server_key_bits()); - - BadPrSocket bad_layer_client(client_); - BadPrSocket bad_layer_server(server_); - StagedRecords client_stage(client_); - StagedRecords server_stage(server_); - - client_->SetAuthCertificateCallback(AuthCompleteBlock); - - server_stage.ForwardAll(client_, TlsAgent::STATE_CONNECTING); - client_stage.ForwardAll(server_, TlsAgent::STATE_CONNECTING); - server_stage.ForwardAll(client_, TlsAgent::STATE_CONNECTING); - - ASSERT_TRUE(client_stage.empty()); - client_->Handshake(); - ASSERT_TRUE(client_stage.empty()); - EXPECT_EQ(TlsAgent::STATE_CONNECTING, client_->state()); - - // Now declare the certificate good. - EXPECT_EQ(SECSuccess, SSL_AuthCertificateComplete(client_->ssl_fd(), 0)); - client_->Handshake(); - ASSERT_FALSE(client_stage.empty()); - - if (version_ >= SSL_LIBRARY_VERSION_TLS_1_3) { - EXPECT_EQ(TlsAgent::STATE_CONNECTED, client_->state()); - client_stage.ForwardAll(server_, TlsAgent::STATE_CONNECTED); - } else { - client_stage.ForwardAll(server_, TlsAgent::STATE_CONNECTED); - server_stage.ForwardAll(client_, TlsAgent::STATE_CONNECTED); - } - CheckKeys(); - - // Reading and writing application data should work. - SendForwardReceive(client_, client_stage, server_); - - // Post-handshake messages should work here. - EXPECT_EQ(SECSuccess, SSL_SendSessionTicket(server_->ssl_fd(), nullptr, 0)); - SendForwardReceive(server_, server_stage, client_); -} - // This test ensures that data is correctly forwarded when the handshake is // resumed after asynchronous server certificate authentication, when // SSL_AuthCertificateComplete() is called. The logic for resuming the diff --git a/security/nss/gtests/ssl_gtest/tls_connect.h b/security/nss/gtests/ssl_gtest/tls_connect.h index 1a61376014..9134f818b1 100644 --- a/security/nss/gtests/ssl_gtest/tls_connect.h +++ b/security/nss/gtests/ssl_gtest/tls_connect.h @@ -156,8 +156,7 @@ class TlsConnectTestBase : public ::testing::Test { // around test cases. In particular, DSA is checked in // ssl_extension_unittest.cc. const std::vector algorithms_ = {SEC_OID_APPLY_SSL_POLICY, - SEC_OID_ANSIX9_DSA_SIGNATURE, - SEC_OID_CURVE25519}; + SEC_OID_ANSIX9_DSA_SIGNATURE}; std::vector> saved_policies_; private: diff --git a/security/nss/lib/certdb/cert.h b/security/nss/lib/certdb/cert.h index 1981b8f549..333ba4c9dd 100644 --- a/security/nss/lib/certdb/cert.h +++ b/security/nss/lib/certdb/cert.h @@ -215,12 +215,6 @@ extern void CERT_DestroyCertificate(CERTCertificate *cert); */ extern CERTCertificate *CERT_DupCertificate(CERTCertificate *c); -/* Access the DER of the certificate. This only creates a reference to the DER - * in the outparam not a copy. To avoid the pointer becoming invalid, use - * CERT_DupCertificate() and keep a reference to the duplicate alive. - */ -extern SECStatus CERT_GetCertificateDer(const CERTCertificate *c, SECItem *der); - /* ** Create a new certificate request. This result must be wrapped with an ** CERTSignedData to create a signed certificate request. diff --git a/security/nss/lib/certdb/certdb.c b/security/nss/lib/certdb/certdb.c index 7eede8d0e1..85b5f29170 100644 --- a/security/nss/lib/certdb/certdb.c +++ b/security/nss/lib/certdb/certdb.c @@ -1314,17 +1314,6 @@ CERT_DupCertificate(CERTCertificate *c) return c; } -SECStatus -CERT_GetCertificateDer(const CERTCertificate *c, SECItem *der) -{ - if (!c || !der) { - PORT_SetError(SEC_ERROR_INVALID_ARGS); - return SECFailure; - } - *der = c->derCert; - return SECSuccess; -} - /* * Allow use of default cert database, so that apps(such as mozilla) don't * have to pass the handle all over the place. diff --git a/security/nss/lib/freebl/blinit.c b/security/nss/lib/freebl/blinit.c index d1bb037fc1..f369e62e71 100644 --- a/security/nss/lib/freebl/blinit.c +++ b/security/nss/lib/freebl/blinit.c @@ -92,32 +92,23 @@ CheckX86CPUSupport() #endif /* NSS_X86_OR_X64 */ /* clang-format off */ -#if defined(__aarch64__) || defined(__arm__) +#if (defined(__aarch64__) || defined(__arm__)) && !defined(__ANDROID__) #ifndef __has_include #define __has_include(x) 0 #endif #if (__has_include() || defined(__linux__)) && \ defined(__GNUC__) && __GNUC__ >= 2 && defined(__ELF__) -/* This might be conflict with host compiler */ -#if !defined(__ANDROID__) #include -#endif extern unsigned long getauxval(unsigned long type) __attribute__((weak)); #else static unsigned long (*getauxval)(unsigned long) = NULL; +#define AT_HWCAP2 0 +#define AT_HWCAP 0 #endif /* defined(__GNUC__) && __GNUC__ >= 2 && defined(__ELF__)*/ - -#ifndef AT_HWCAP2 -#define AT_HWCAP2 26 -#endif -#ifndef AT_HWCAP -#define AT_HWCAP 16 -#endif - -#endif /* defined(__aarch64__) || defined(__arm__) */ +#endif /* (defined(__aarch64__) || defined(__arm__)) && !defined(__ANDROID__) */ /* clang-format on */ -#if defined(__aarch64__) +#if defined(__aarch64__) && !defined(__ANDROID__) // Defines from hwcap.h in Linux kernel - ARM64 #ifndef HWCAP_AES #define HWCAP_AES (1 << 3) @@ -147,9 +138,9 @@ CheckARMSupport() /* aarch64 must support NEON. */ arm_neon_support_ = disable_arm_neon == NULL; } -#endif /* defined(__aarch64__) */ +#endif /* defined(__aarch64__) && !defined(__ANDROID__) */ -#if defined(__arm__) +#if defined(__arm__) && !defined(__ANDROID__) // Defines from hwcap.h in Linux kernel - ARM /* * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP @@ -174,58 +165,23 @@ CheckARMSupport() #define HWCAP2_SHA2 (1 << 3) #endif -PRBool -GetNeonSupport() -{ - char *disable_arm_neon = PR_GetEnvSecure("NSS_DISABLE_ARM_NEON"); - if (disable_arm_neon) { - return PR_FALSE; - } -#if defined(__ARM_NEON) || defined(__ARM_NEON__) - // Compiler generates NEON instruction as default option. - // If no getauxval, compiler generate NEON instruction by default, - // we should allow NOEN support. - return PR_TRUE; -#elif !defined(__ANDROID__) - // Android's cpu-features.c detects features by the following logic - // - // - Call getauxval(AT_HWCAP) - // - Parse /proc/self/auxv if getauxval is nothing or returns 0 - // - Parse /proc/cpuinfo if both cannot detect features - // - // But we don't use it for Android since Android document - // (https://developer.android.com/ndk/guides/cpu-features) says - // one problem with AT_HWCAP sometimes devices (Nexus 4 and emulator) - // are mistaken for IDIV. - if (getauxval) { - return (getauxval(AT_HWCAP) & HWCAP_NEON); - } -#endif /* defined(__ARM_NEON) || defined(__ARM_NEON__) */ - return PR_FALSE; -} - void CheckARMSupport() { + char *disable_arm_neon = PR_GetEnvSecure("NSS_DISABLE_ARM_NEON"); char *disable_hw_aes = PR_GetEnvSecure("NSS_DISABLE_HW_AES"); if (getauxval) { - // Android's cpu-features.c uses AT_HWCAP2 for newer features. - // AT_HWCAP2 is implemented on newer devices / kernel, so we can trust - // it since cpu-features.c doesn't have workaround / fallback. - // Also, AT_HWCAP2 is supported by glibc 2.18+ on Linux/arm, If - // AT_HWCAP2 isn't supported by glibc or Linux kernel, getauxval will - // returns 0. long hwcaps = getauxval(AT_HWCAP2); arm_aes_support_ = hwcaps & HWCAP2_AES && disable_hw_aes == NULL; arm_pmull_support_ = hwcaps & HWCAP2_PMULL; arm_sha1_support_ = hwcaps & HWCAP2_SHA1; arm_sha2_support_ = hwcaps & HWCAP2_SHA2; + arm_neon_support_ = hwcaps & HWCAP_NEON && disable_arm_neon == NULL; } - arm_neon_support_ = GetNeonSupport(); } -#endif /* defined(__arm__) */ +#endif /* defined(__arm__) && !defined(__ANDROID__) */ -// Enable when Firefox can use it for Android API 16 and 17. +// Enable when Firefox can use it. // #if defined(__ANDROID__) && (defined(__arm__) || defined(__aarch64__)) // #include // void @@ -306,7 +262,7 @@ FreeblInit(void) { #ifdef NSS_X86_OR_X64 CheckX86CPUSupport(); -#elif (defined(__aarch64__) || defined(__arm__)) +#elif (defined(__aarch64__) || defined(__arm__)) && !defined(__ANDROID__) CheckARMSupport(); #endif return PR_SUCCESS; diff --git a/security/nss/lib/freebl/chacha20poly1305.c b/security/nss/lib/freebl/chacha20poly1305.c index 7f46827de9..302f0db9e7 100644 --- a/security/nss/lib/freebl/chacha20poly1305.c +++ b/security/nss/lib/freebl/chacha20poly1305.c @@ -157,7 +157,6 @@ ChaCha20Poly1305_DestroyContext(ChaCha20Poly1305Context *ctx, PRBool freeit) #endif } -#ifndef NSS_DISABLE_CHACHAPOLY void ChaCha20Xor(uint8_t *output, uint8_t *block, uint32_t len, uint8_t *k, uint8_t *nonce, uint32_t ctr) @@ -168,7 +167,6 @@ ChaCha20Xor(uint8_t *output, uint8_t *block, uint32_t len, uint8_t *k, Hacl_Chacha20_chacha20(output, block, len, k, nonce, ctr); } } -#endif /* NSS_DISABLE_CHACHAPOLY */ SECStatus ChaCha20Poly1305_Seal(const ChaCha20Poly1305Context *ctx, unsigned char *output, diff --git a/security/nss/lib/freebl/crypto_primitives.c b/security/nss/lib/freebl/crypto_primitives.c index 937e1dd720..49c8ca5ca6 100644 --- a/security/nss/lib/freebl/crypto_primitives.c +++ b/security/nss/lib/freebl/crypto_primitives.c @@ -22,7 +22,7 @@ swap8b(PRUint64 value) return (value); } -#elif !defined(_MSC_VER) && !__has_builtin(__builtin_bswap64) +#elif !defined(_MSC_VER) PRUint64 swap8b(PRUint64 x) diff --git a/security/nss/lib/freebl/crypto_primitives.h b/security/nss/lib/freebl/crypto_primitives.h index 177e6f3fff..f19601f4b4 100644 --- a/security/nss/lib/freebl/crypto_primitives.h +++ b/security/nss/lib/freebl/crypto_primitives.h @@ -11,11 +11,6 @@ #include #include "prtypes.h" -/* For non-clang platform */ -#ifndef __has_builtin -#define __has_builtin(x) 0 -#endif - /* Unfortunately this isn't always set when it should be. */ #if defined(HAVE_LONG_LONG) @@ -34,16 +29,11 @@ /* * FREEBL_HTONLL(x): swap bytes in a 64-bit integer. */ -#if defined(IS_LITTLE_ENDIAN) #if defined(_MSC_VER) #pragma intrinsic(_byteswap_uint64) #define FREEBL_HTONLL(x) _byteswap_uint64(x) -#elif __has_builtin(__builtin_bswap64) - -#define FREEBL_HTONLL(x) __builtin_bswap64(x) - #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__x86_64)) PRUint64 swap8b(PRUint64 value); @@ -58,8 +48,4 @@ PRUint64 swap8b(PRUint64 x); #endif /* _MSC_VER */ -#else /* IS_LITTLE_ENDIAN */ -#define FREEBL_HTONLL(x) (x) -#endif - -#endif /* HAVE_LONG_LONG */ +#endif /* HAVE_LONG_LONG */ \ No newline at end of file diff --git a/security/nss/lib/freebl/freebl.gyp b/security/nss/lib/freebl/freebl.gyp index 4bc127ce92..288ff07a3b 100644 --- a/security/nss/lib/freebl/freebl.gyp +++ b/security/nss/lib/freebl/freebl.gyp @@ -76,11 +76,11 @@ '__SSSE3__', ], }], - [ 'target_arch=="arm"', { - # Gecko doesn't support non-NEON platform on Android, but tier-3 - # platform such as Linux/arm will need it - 'cflags_mozilla': [ - '-mfpu=neon' + [ 'OS=="android"', { + # On Android we can't use any of the hardware acceleration :( + 'defines!': [ + '__ARM_NEON__', + '__ARM_NEON', ], }], ], diff --git a/security/nss/lib/nss/nss.def b/security/nss/lib/nss/nss.def index 53d463a66f..d589fd30e2 100644 --- a/security/nss/lib/nss/nss.def +++ b/security/nss/lib/nss/nss.def @@ -1145,9 +1145,3 @@ HASH_GetHashOidTagByHashType; ;+ local: ;+ *; ;+}; -;+NSS_3.44 { # NSS 3.44 release -;+ global: -CERT_GetCertificateDer; -;+ local: -;+ *; -;+}; diff --git a/security/nss/lib/nss/nss.h b/security/nss/lib/nss/nss.h index d82b649804..1df2125172 100644 --- a/security/nss/lib/nss/nss.h +++ b/security/nss/lib/nss/nss.h @@ -22,12 +22,12 @@ * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define NSS_VERSION "3.44" _NSS_CUSTOMIZED " Beta" +#define NSS_VERSION "3.43" _NSS_CUSTOMIZED #define NSS_VMAJOR 3 -#define NSS_VMINOR 44 +#define NSS_VMINOR 43 #define NSS_VPATCH 0 #define NSS_VBUILD 0 -#define NSS_BETA PR_TRUE +#define NSS_BETA PR_FALSE #ifndef RC_INVOKED diff --git a/security/nss/lib/pk11wrap/pk11pars.c b/security/nss/lib/pk11wrap/pk11pars.c index c5e21df519..d6a4464e2b 100644 --- a/security/nss/lib/pk11wrap/pk11pars.c +++ b/security/nss/lib/pk11wrap/pk11pars.c @@ -238,8 +238,6 @@ static const oidValDef curveOptList[] = { NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE }, { CIPHER_NAME("SECP521R1"), SEC_OID_SECG_EC_SECP521R1, NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE }, - { CIPHER_NAME("CURVE25519"), SEC_OID_CURVE25519, - NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE }, /* ANSI X9.62 named elliptic curves (characteristic two field) */ { CIPHER_NAME("C2PNB163V1"), SEC_OID_ANSIX962_EC_C2PNB163V1, NSS_USE_ALG_IN_SSL_KX | NSS_USE_ALG_IN_CERT_SIGNATURE }, diff --git a/security/nss/lib/pkcs7/certread.c b/security/nss/lib/pkcs7/certread.c index 3091f9947e..2d692f1a2d 100644 --- a/security/nss/lib/pkcs7/certread.c +++ b/security/nss/lib/pkcs7/certread.c @@ -492,16 +492,14 @@ typedef struct { static SECStatus collect_certs(void *arg, SECItem **certs, int numcerts) { - collect_args *collectArgs = (collect_args *)arg; - if (!collectArgs || !collectArgs->arena) { - PORT_SetError(SEC_ERROR_INVALID_ARGS); - return SECFailure; - } - if (numcerts < 1 || !certs || !*certs) { - PORT_SetError(SEC_ERROR_BAD_DER); - return SECFailure; - } - return SECITEM_CopyItem(collectArgs->arena, &collectArgs->cert, *certs); + SECStatus rv; + collect_args *collectArgs; + + collectArgs = (collect_args *)arg; + + rv = SECITEM_CopyItem(collectArgs->arena, &collectArgs->cert, *certs); + + return (rv); } /* diff --git a/security/nss/lib/softoken/sdb.c b/security/nss/lib/softoken/sdb.c index 142cb5ddaa..fb897d68cc 100644 --- a/security/nss/lib/softoken/sdb.c +++ b/security/nss/lib/softoken/sdb.c @@ -858,6 +858,7 @@ sdb_FindObjectsFinal(SDB *sdb, SDBFind *sdbFind) return sdb_mapSQLError(sdb_p->type, sqlerr); } +static const char GET_ATTRIBUTE_CMD[] = "SELECT ALL %s FROM %s WHERE id=$ID;"; CK_RV sdb_GetAttributeValueNoLock(SDB *sdb, CK_OBJECT_HANDLE object_id, CK_ATTRIBUTE *template, CK_ULONG count) @@ -865,6 +866,8 @@ sdb_GetAttributeValueNoLock(SDB *sdb, CK_OBJECT_HANDLE object_id, SDBPrivate *sdb_p = sdb->private; sqlite3 *sqlDB = NULL; sqlite3_stmt *stmt = NULL; + char *getStr = NULL; + char *newStr = NULL; const char *table = NULL; int sqlerr = SQLITE_OK; CK_RV error = CKR_OK; @@ -872,81 +875,59 @@ sdb_GetAttributeValueNoLock(SDB *sdb, CK_OBJECT_HANDLE object_id, int retry = 0; unsigned int i; - if (count == 0) { - error = CKR_OBJECT_HANDLE_INVALID; - goto loser; - } - /* open a new db if necessary */ error = sdb_openDBLocal(sdb_p, &sqlDB, &table); if (error != CKR_OK) { goto loser; } - char *columns = NULL; for (i = 0; i < count; i++) { - char *newColumns; - if (columns) { - newColumns = sqlite3_mprintf("%s, a%x", columns, template[i].type); - sqlite3_free(columns); - columns = NULL; - } else { - newColumns = sqlite3_mprintf("a%x", template[i].type); - } - if (!newColumns) { + getStr = sqlite3_mprintf("a%x", template[i].type); + + if (getStr == NULL) { error = CKR_HOST_MEMORY; goto loser; } - columns = newColumns; - } - if (!columns) { - error = CKR_OBJECT_HANDLE_INVALID; - goto loser; - } - char *statement = sqlite3_mprintf("SELECT DISTINCT %s FROM %s where id=$ID LIMIT 1;", - columns, table); - sqlite3_free(columns); - columns = NULL; - if (!statement) { - error = CKR_HOST_MEMORY; - goto loser; - } - - sqlerr = sqlite3_prepare_v2(sqlDB, statement, -1, &stmt, NULL); - sqlite3_free(statement); - statement = NULL; - if (sqlerr != SQLITE_OK) { - goto loser; - } - - // NB: indices in sqlite3_bind_int are 1-indexed - sqlerr = sqlite3_bind_int(stmt, 1, object_id); - if (sqlerr != SQLITE_OK) { - goto loser; - } - - do { - sqlerr = sqlite3_step(stmt); - if (sqlerr == SQLITE_BUSY) { - PR_Sleep(SDB_BUSY_RETRY_TIME); + newStr = sqlite3_mprintf(GET_ATTRIBUTE_CMD, getStr, table); + sqlite3_free(getStr); + getStr = NULL; + if (newStr == NULL) { + error = CKR_HOST_MEMORY; + goto loser; } - if (sqlerr == SQLITE_ROW) { - PORT_Assert(!found); - for (i = 0; i < count; i++) { + + sqlerr = sqlite3_prepare_v2(sqlDB, newStr, -1, &stmt, NULL); + sqlite3_free(newStr); + newStr = NULL; + if (sqlerr == SQLITE_ERROR) { + template[i].ulValueLen = -1; + error = CKR_ATTRIBUTE_TYPE_INVALID; + continue; + } else if (sqlerr != SQLITE_OK) { + goto loser; + } + + sqlerr = sqlite3_bind_int(stmt, 1, object_id); + if (sqlerr != SQLITE_OK) { + goto loser; + } + + do { + sqlerr = sqlite3_step(stmt); + if (sqlerr == SQLITE_BUSY) { + PR_Sleep(SDB_BUSY_RETRY_TIME); + } + if (sqlerr == SQLITE_ROW) { unsigned int blobSize; const char *blobData; - // NB: indices in sqlite_column_{bytes,blob} are 0-indexed - blobSize = sqlite3_column_bytes(stmt, i); - blobData = sqlite3_column_blob(stmt, i); + blobSize = sqlite3_column_bytes(stmt, 0); + blobData = sqlite3_column_blob(stmt, 0); if (blobData == NULL) { - /* PKCS 11 requires that get attributes process all the - * attributes in the template, marking the attributes with - * issues with -1. Mark the error but continue */ template[i].ulValueLen = -1; error = CKR_ATTRIBUTE_TYPE_INVALID; - continue; + break; } /* If the blob equals our explicit NULL value, then the * attribute is a NULL. */ @@ -957,21 +938,20 @@ sdb_GetAttributeValueNoLock(SDB *sdb, CK_OBJECT_HANDLE object_id, } if (template[i].pValue) { if (template[i].ulValueLen < blobSize) { - /* like CKR_ATTRIBUTE_TYPE_INVALID, continue processing */ template[i].ulValueLen = -1; error = CKR_BUFFER_TOO_SMALL; - continue; + break; } PORT_Memcpy(template[i].pValue, blobData, blobSize); } template[i].ulValueLen = blobSize; + found = 1; } - found = 1; - } - } while (!sdb_done(sqlerr, &retry)); - sqlite3_reset(stmt); - sqlite3_finalize(stmt); - stmt = NULL; + } while (!sdb_done(sqlerr, &retry)); + sqlite3_reset(stmt); + sqlite3_finalize(stmt); + stmt = NULL; + } loser: /* fix up the error if necessary */ diff --git a/security/nss/lib/softoken/sftkpwd.c b/security/nss/lib/softoken/sftkpwd.c index 9f97c77038..9834d3ba01 100644 --- a/security/nss/lib/softoken/sftkpwd.c +++ b/security/nss/lib/softoken/sftkpwd.c @@ -859,77 +859,92 @@ static CK_RV sftk_updateMacs(PLArenaPool *arena, SFTKDBHandle *handle, CK_OBJECT_HANDLE id, SECItem *newKey) { + CK_ATTRIBUTE authAttrs[] = { + { CKA_MODULUS, NULL, 0 }, + { CKA_PUBLIC_EXPONENT, NULL, 0 }, + { CKA_CERT_SHA1_HASH, NULL, 0 }, + { CKA_CERT_MD5_HASH, NULL, 0 }, + { CKA_TRUST_SERVER_AUTH, NULL, 0 }, + { CKA_TRUST_CLIENT_AUTH, NULL, 0 }, + { CKA_TRUST_EMAIL_PROTECTION, NULL, 0 }, + { CKA_TRUST_CODE_SIGNING, NULL, 0 }, + { CKA_TRUST_STEP_UP_APPROVED, NULL, 0 }, + { CKA_NSS_OVERRIDE_EXTENSIONS, NULL, 0 }, + }; + CK_ULONG authAttrCount = sizeof(authAttrs) / sizeof(CK_ATTRIBUTE); + unsigned int i, count; SFTKDBHandle *keyHandle = handle; SDB *keyTarget = NULL; + + id &= SFTK_OBJ_ID_MASK; + if (handle->type != SFTK_KEYDB_TYPE) { keyHandle = handle->peerDB; } + if (keyHandle == NULL) { return CKR_OK; } - // Old DBs don't have metadata, so we can return early here. + + /* old DB's don't have meta data, finished with MACs */ keyTarget = SFTK_GET_SDB(keyHandle); if ((keyTarget->sdb_flags & SDB_HAS_META) == 0) { return CKR_OK; } - id &= SFTK_OBJ_ID_MASK; - - CK_ATTRIBUTE_TYPE authAttrTypes[] = { - CKA_MODULUS, - CKA_PUBLIC_EXPONENT, - CKA_CERT_SHA1_HASH, - CKA_CERT_MD5_HASH, - CKA_TRUST_SERVER_AUTH, - CKA_TRUST_CLIENT_AUTH, - CKA_TRUST_EMAIL_PROTECTION, - CKA_TRUST_CODE_SIGNING, - CKA_TRUST_STEP_UP_APPROVED, - CKA_NSS_OVERRIDE_EXTENSIONS, - }; - const CK_ULONG authAttrTypeCount = sizeof(authAttrTypes) / sizeof(authAttrTypes[0]); - - // We don't know what attributes this object has, so we update them one at a - // time. - unsigned int i; - for (i = 0; i < authAttrTypeCount; i++) { - CK_ATTRIBUTE authAttr = { authAttrTypes[i], NULL, 0 }; - CK_RV rv = sftkdb_GetAttributeValue(handle, id, &authAttr, 1); - if (rv != CKR_OK) { + /* + * STEP 1: find the MACed attributes of this object + */ + (void)sftkdb_GetAttributeValue(handle, id, authAttrs, authAttrCount); + count = 0; + /* allocate space for the attributes */ + for (i = 0; i < authAttrCount; i++) { + if ((authAttrs[i].ulValueLen == -1) || (authAttrs[i].ulValueLen == 0)) { continue; } - if ((authAttr.ulValueLen == -1) || (authAttr.ulValueLen == 0)) { - continue; - } - authAttr.pValue = PORT_ArenaAlloc(arena, authAttr.ulValueLen); - if (authAttr.pValue == NULL) { - return CKR_HOST_MEMORY; - } - rv = sftkdb_GetAttributeValue(handle, id, &authAttr, 1); - if (rv != CKR_OK) { - return rv; - } - if ((authAttr.ulValueLen == -1) || (authAttr.ulValueLen == 0)) { - return CKR_GENERAL_ERROR; - } - // GetAttributeValue just verified the old macs, so it is safe to write - // them out now. - if (authAttr.ulValueLen == sizeof(CK_ULONG) && - sftkdb_isULONGAttribute(authAttr.type)) { - CK_ULONG value = *(CK_ULONG *)authAttr.pValue; - sftk_ULong2SDBULong(authAttr.pValue, value); - authAttr.ulValueLen = SDB_ULONG_SIZE; + count++; + authAttrs[i].pValue = PORT_ArenaAlloc(arena, authAttrs[i].ulValueLen); + if (authAttrs[i].pValue == NULL) { + break; } + } + + /* if count was zero, none were found, finished with MACs */ + if (count == 0) { + return CKR_OK; + } + + (void)sftkdb_GetAttributeValue(handle, id, authAttrs, authAttrCount); + /* ignore error code, we expect some possible errors */ + + /* GetAttributeValue just verified the old macs, safe to write + * them out then... */ + for (i = 0; i < authAttrCount; i++) { SECItem *signText; SECItem plainText; - plainText.data = authAttr.pValue; - plainText.len = authAttr.ulValueLen; - if (sftkdb_SignAttribute(arena, newKey, id, authAttr.type, &plainText, - &signText) != SECSuccess) { + SECStatus rv; + + if ((authAttrs[i].ulValueLen == -1) || (authAttrs[i].ulValueLen == 0)) { + continue; + } + + if (authAttrs[i].ulValueLen == sizeof(CK_ULONG) && + sftkdb_isULONGAttribute(authAttrs[i].type)) { + CK_ULONG value = *(CK_ULONG *)authAttrs[i].pValue; + sftk_ULong2SDBULong(authAttrs[i].pValue, value); + authAttrs[i].ulValueLen = SDB_ULONG_SIZE; + } + + plainText.data = authAttrs[i].pValue; + plainText.len = authAttrs[i].ulValueLen; + rv = sftkdb_SignAttribute(arena, newKey, id, + authAttrs[i].type, &plainText, &signText); + if (rv != SECSuccess) { return CKR_GENERAL_ERROR; } - if (sftkdb_PutAttributeSignature(handle, keyTarget, id, authAttr.type, - signText) != SECSuccess) { + rv = sftkdb_PutAttributeSignature(handle, keyTarget, id, + authAttrs[i].type, signText); + if (rv != SECSuccess) { return CKR_GENERAL_ERROR; } } @@ -941,64 +956,110 @@ static CK_RV sftk_updateEncrypted(PLArenaPool *arena, SFTKDBHandle *keydb, CK_OBJECT_HANDLE id, SECItem *newKey) { - CK_ATTRIBUTE_TYPE privAttrTypes[] = { - CKA_VALUE, - CKA_PRIVATE_EXPONENT, - CKA_PRIME_1, - CKA_PRIME_2, - CKA_EXPONENT_1, - CKA_EXPONENT_2, - CKA_COEFFICIENT, + CK_RV crv = CKR_OK; + CK_RV crv2; + CK_ATTRIBUTE *first, *last; + CK_ATTRIBUTE privAttrs[] = { + { CKA_VALUE, NULL, 0 }, + { CKA_PRIVATE_EXPONENT, NULL, 0 }, + { CKA_PRIME_1, NULL, 0 }, + { CKA_PRIME_2, NULL, 0 }, + { CKA_EXPONENT_1, NULL, 0 }, + { CKA_EXPONENT_2, NULL, 0 }, + { CKA_COEFFICIENT, NULL, 0 } }; - const CK_ULONG privAttrCount = sizeof(privAttrTypes) / sizeof(privAttrTypes[0]); + CK_ULONG privAttrCount = sizeof(privAttrs) / sizeof(CK_ATTRIBUTE); + unsigned int i, count; - // We don't know what attributes this object has, so we update them one at a - // time. - unsigned int i; + /* + * STEP 1. Read the old attributes in the clear. + */ + + /* Get the attribute sizes. + * ignore the error code, we will have unknown attributes here */ + crv2 = sftkdb_GetAttributeValue(keydb, id, privAttrs, privAttrCount); + + /* + * find the valid block of attributes and fill allocate space for + * their data */ + first = last = NULL; for (i = 0; i < privAttrCount; i++) { - // Read the old attribute in the clear. - CK_ATTRIBUTE privAttr = { privAttrTypes[i], NULL, 0 }; - CK_RV crv = sftkdb_GetAttributeValue(keydb, id, &privAttr, 1); - if (crv != CKR_OK) { + /* find the block of attributes that are appropriate for this + * objects. There should only be once contiguous block, if not + * there's an error. + * + * find the first and last good entry. + */ + if ((privAttrs[i].ulValueLen == -1) || (privAttrs[i].ulValueLen == 0)) { + if (!first) + continue; + if (!last) { + /* previous entry was last good entry */ + last = &privAttrs[i - 1]; + } continue; } - if ((privAttr.ulValueLen == -1) || (privAttr.ulValueLen == 0)) { - continue; + if (!first) { + first = &privAttrs[i]; } - privAttr.pValue = PORT_ArenaAlloc(arena, privAttr.ulValueLen); - if (privAttr.pValue == NULL) { - return CKR_HOST_MEMORY; + if (last) { + /* OOPS, we've found another good entry beyond the end of the + * last good entry, we need to fail here. */ + crv = CKR_GENERAL_ERROR; + break; } - crv = sftkdb_GetAttributeValue(keydb, id, &privAttr, 1); - if (crv != CKR_OK) { - return crv; - } - if ((privAttr.ulValueLen == -1) || (privAttr.ulValueLen == 0)) { - return CKR_GENERAL_ERROR; - } - SECItem plainText; - SECItem *result; - plainText.data = privAttr.pValue; - plainText.len = privAttr.ulValueLen; - if (sftkdb_EncryptAttribute(arena, newKey, &plainText, &result) != SECSuccess) { - return CKR_GENERAL_ERROR; - } - privAttr.pValue = result->data; - privAttr.ulValueLen = result->len; - // Clear sensitive data. - PORT_Memset(plainText.data, 0, plainText.len); - - // Write the newly encrypted attributes out directly. - CK_OBJECT_HANDLE newId = id & SFTK_OBJ_ID_MASK; - keydb->newKey = newKey; - crv = (*keydb->db->sdb_SetAttributeValue)(keydb->db, newId, &privAttr, 1); - keydb->newKey = NULL; - if (crv != CKR_OK) { - return crv; + privAttrs[i].pValue = PORT_ArenaAlloc(arena, privAttrs[i].ulValueLen); + if (privAttrs[i].pValue == NULL) { + crv = CKR_HOST_MEMORY; + break; } } + if (first == NULL) { + /* no valid entries found, return error based on crv2 */ + return crv2; + } + if (last == NULL) { + last = &privAttrs[privAttrCount - 1]; + } + if (crv != CKR_OK) { + return crv; + } + /* read the attributes */ + count = (last - first) + 1; + crv = sftkdb_GetAttributeValue(keydb, id, first, count); + if (crv != CKR_OK) { + return crv; + } - return CKR_OK; + /* + * STEP 2: read the encrypt the attributes with the new key. + */ + for (i = 0; i < count; i++) { + SECItem plainText; + SECItem *result; + SECStatus rv; + + plainText.data = first[i].pValue; + plainText.len = first[i].ulValueLen; + rv = sftkdb_EncryptAttribute(arena, newKey, &plainText, &result); + if (rv != SECSuccess) { + return CKR_GENERAL_ERROR; + } + first[i].pValue = result->data; + first[i].ulValueLen = result->len; + /* clear our sensitive data out */ + PORT_Memset(plainText.data, 0, plainText.len); + } + + /* + * STEP 3: write the newly encrypted attributes out directly + */ + id &= SFTK_OBJ_ID_MASK; + keydb->newKey = newKey; + crv = (*keydb->db->sdb_SetAttributeValue)(keydb->db, id, first, count); + keydb->newKey = NULL; + + return crv; } static CK_RV diff --git a/security/nss/lib/softoken/softkver.h b/security/nss/lib/softoken/softkver.h index 5702460254..906ee1d2cc 100644 --- a/security/nss/lib/softoken/softkver.h +++ b/security/nss/lib/softoken/softkver.h @@ -17,11 +17,11 @@ * The format of the version string should be * ".[.[.]][ ][ ]" */ -#define SOFTOKEN_VERSION "3.44" SOFTOKEN_ECC_STRING " Beta" +#define SOFTOKEN_VERSION "3.43" SOFTOKEN_ECC_STRING #define SOFTOKEN_VMAJOR 3 -#define SOFTOKEN_VMINOR 44 +#define SOFTOKEN_VMINOR 43 #define SOFTOKEN_VPATCH 0 #define SOFTOKEN_VBUILD 0 -#define SOFTOKEN_BETA PR_TRUE +#define SOFTOKEN_BETA PR_FALSE #endif /* _SOFTKVER_H_ */ diff --git a/security/nss/lib/ssl/SSLerrs.h b/security/nss/lib/ssl/SSLerrs.h index a6047e6dbb..5e428406a2 100644 --- a/security/nss/lib/ssl/SSLerrs.h +++ b/security/nss/lib/ssl/SSLerrs.h @@ -564,6 +564,3 @@ ER3(SSL_ERROR_MISSING_ESNI_EXTENSION, (SSL_ERROR_BASE + 178), ER3(SSL_ERROR_RX_UNEXPECTED_RECORD_TYPE, (SSL_ERROR_BASE + 179), "SSL received an unexpected record type.") - -ER3(SSL_ERROR_RX_CERTIFICATE_REQUIRED_ALERT, (SSL_ERROR_BASE + 181), - "SSL received a certificate_required alert.") diff --git a/security/nss/lib/ssl/ssl3con.c b/security/nss/lib/ssl/ssl3con.c index 142c8bccf1..2797e627f5 100644 --- a/security/nss/lib/ssl/ssl3con.c +++ b/security/nss/lib/ssl/ssl3con.c @@ -2683,12 +2683,7 @@ ssl3_HandleNoCertificate(sslSocket *ss) PRFileDesc *lower; ssl_UncacheSessionID(ss); - - if (ss->version >= SSL_LIBRARY_VERSION_TLS_1_3) { - SSL3_SendAlert(ss, alert_fatal, certificate_required); - } else { - SSL3_SendAlert(ss, alert_fatal, bad_certificate); - } + SSL3_SendAlert(ss, alert_fatal, bad_certificate); lower = ss->fd->lower; #ifdef _WIN32 @@ -2924,9 +2919,6 @@ ssl3_HandleAlert(sslSocket *ss, sslBuffer *buf) case no_certificate: error = SSL_ERROR_NO_CERTIFICATE; break; - case certificate_required: - error = SSL_ERROR_RX_CERTIFICATE_REQUIRED_ALERT; - break; case bad_certificate: error = SSL_ERROR_BAD_CERT_ALERT; break; @@ -3727,10 +3719,6 @@ ssl3_RestartHandshakeHashes(sslSocket *ss) PK11_DestroyContext(ss->ssl3.hs.sha, PR_TRUE); ss->ssl3.hs.sha = NULL; } - if (ss->ssl3.hs.shaPostHandshake) { - PK11_DestroyContext(ss->ssl3.hs.shaPostHandshake, PR_TRUE); - ss->ssl3.hs.shaPostHandshake = NULL; - } } /* @@ -3790,24 +3778,6 @@ ssl3_UpdateHandshakeHashes(sslSocket *ss, const unsigned char *b, unsigned int l return rv; } -SECStatus -ssl3_UpdatePostHandshakeHashes(sslSocket *ss, const unsigned char *b, unsigned int l) -{ - SECStatus rv = SECSuccess; - - PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss)); - - PRINT_BUF(90, (ss, "post handshake hash input:", b, l)); - - PORT_Assert(ss->ssl3.hs.hashType == handshake_hash_single); - PORT_Assert(ss->version >= SSL_LIBRARY_VERSION_TLS_1_3); - rv = PK11_DigestOp(ss->ssl3.hs.shaPostHandshake, b, l); - if (rv != SECSuccess) { - PORT_SetError(SSL_ERROR_DIGEST_FAILURE); - } - return rv; -} - SECStatus ssl3_AppendHandshakeHeader(sslSocket *ss, SSLHandshakeType t, PRUint32 length) { @@ -8655,45 +8625,6 @@ loser: return SECFailure; } -/* unwrap helper function to handle the case where the wrapKey doesn't wind - * up in the correct token for the master secret */ -PK11SymKey * -ssl_unwrapSymKey(PK11SymKey *wrapKey, - CK_MECHANISM_TYPE wrapType, SECItem *param, - SECItem *wrappedKey, - CK_MECHANISM_TYPE target, CK_ATTRIBUTE_TYPE operation, - int keySize, CK_FLAGS keyFlags, void *pinArg) -{ - PK11SymKey *unwrappedKey; - - /* unwrap the master secret. */ - unwrappedKey = PK11_UnwrapSymKeyWithFlags(wrapKey, wrapType, param, - wrappedKey, target, operation, keySize, - keyFlags); - if (!unwrappedKey) { - PK11SlotInfo *targetSlot = PK11_GetBestSlot(target, pinArg); - PK11SymKey *newWrapKey; - - /* it's possible that we failed to unwrap because the wrapKey is in - * a slot that can't handle target. Move the wrapKey to a slot that - * can handle this mechanism and retry the operation */ - if (targetSlot == NULL) { - return NULL; - } - newWrapKey = PK11_MoveSymKey(targetSlot, CKA_UNWRAP, 0, - PR_FALSE, wrapKey); - PK11_FreeSlot(targetSlot); - if (newWrapKey == NULL) { - return NULL; - } - unwrappedKey = PK11_UnwrapSymKeyWithFlags(newWrapKey, wrapType, param, - wrappedKey, target, operation, keySize, - keyFlags); - PK11_FreeSymKey(newWrapKey); - } - return unwrappedKey; -} - static SECStatus ssl3_UnwrapMasterSecretServer(sslSocket *ss, sslSessionID *sid, PK11SymKey **ms) { @@ -8715,14 +8646,12 @@ ssl3_UnwrapMasterSecretServer(sslSocket *ss, sslSessionID *sid, PK11SymKey **ms) keyFlags = CKF_SIGN | CKF_VERIFY; } - *ms = ssl_unwrapSymKey(wrapKey, sid->u.ssl3.masterWrapMech, NULL, - &wrappedMS, CKM_SSL3_MASTER_KEY_DERIVE, - CKA_DERIVE, SSL3_MASTER_SECRET_LENGTH, - keyFlags, ss->pkcs11PinArg); + /* unwrap the master secret. */ + *ms = PK11_UnwrapSymKeyWithFlags(wrapKey, sid->u.ssl3.masterWrapMech, + NULL, &wrappedMS, CKM_SSL3_MASTER_KEY_DERIVE, + CKA_DERIVE, SSL3_MASTER_SECRET_LENGTH, keyFlags); PK11_FreeSymKey(wrapKey); if (!*ms) { - SSL_TRC(10, ("%d: SSL3[%d]: server wrapping key found, but couldn't unwrap MasterSecret. wrapMech=0x%0lx", - SSL_GETPID(), ss->fd, sid->u.ssl3.masterWrapMech)); return SECFailure; } return SECSuccess; @@ -11653,8 +11582,7 @@ ssl3_FinishHandshake(sslSocket *ss) SECStatus ssl_HashHandshakeMessageInt(sslSocket *ss, SSLHandshakeType ct, PRUint32 dtlsSeq, - const PRUint8 *b, PRUint32 length, - sslUpdateHandshakeHashes updateHashes) + const PRUint8 *b, PRUint32 length) { PRUint8 hdr[4]; PRUint8 dtlsData[8]; @@ -11667,7 +11595,7 @@ ssl_HashHandshakeMessageInt(sslSocket *ss, SSLHandshakeType ct, hdr[2] = (PRUint8)(length >> 8); hdr[3] = (PRUint8)(length); - rv = updateHashes(ss, (unsigned char *)hdr, 4); + rv = ssl3_UpdateHandshakeHashes(ss, (unsigned char *)hdr, 4); if (rv != SECSuccess) return rv; /* err code already set. */ @@ -11687,13 +11615,14 @@ ssl_HashHandshakeMessageInt(sslSocket *ss, SSLHandshakeType ct, dtlsData[6] = (PRUint8)(length >> 8); dtlsData[7] = (PRUint8)(length); - rv = updateHashes(ss, (unsigned char *)dtlsData, sizeof(dtlsData)); + rv = ssl3_UpdateHandshakeHashes(ss, (unsigned char *)dtlsData, + sizeof(dtlsData)); if (rv != SECSuccess) return rv; /* err code already set. */ } /* The message body */ - rv = updateHashes(ss, b, length); + rv = ssl3_UpdateHandshakeHashes(ss, b, length); if (rv != SECSuccess) return rv; /* err code already set. */ @@ -11705,15 +11634,7 @@ ssl_HashHandshakeMessage(sslSocket *ss, SSLHandshakeType ct, const PRUint8 *b, PRUint32 length) { return ssl_HashHandshakeMessageInt(ss, ct, ss->ssl3.hs.recvMessageSeq, - b, length, ssl3_UpdateHandshakeHashes); -} - -SECStatus -ssl_HashPostHandshakeMessage(sslSocket *ss, SSLHandshakeType ct, - const PRUint8 *b, PRUint32 length) -{ - return ssl_HashHandshakeMessageInt(ss, ct, ss->ssl3.hs.recvMessageSeq, - b, length, ssl3_UpdatePostHandshakeHashes); + b, length); } /* Called from ssl3_HandleHandshake() when it has gathered a complete ssl3 @@ -11752,11 +11673,9 @@ ssl3_HandleHandshakeMessage(sslSocket *ss, PRUint8 *b, PRUint32 length, break; default: - if (!tls13_IsPostHandshake(ss)) { - rv = ssl_HashHandshakeMessage(ss, ss->ssl3.hs.msg_type, b, length); - if (rv != SECSuccess) { - return SECFailure; - } + rv = ssl_HashHandshakeMessage(ss, ss->ssl3.hs.msg_type, b, length); + if (rv != SECSuccess) { + return SECFailure; } } @@ -11955,7 +11874,7 @@ ssl3_HandleHandshake(sslSocket *ss, sslBuffer *origBuf) if (ss->ssl3.hs.msg_len > MAX_HANDSHAKE_MSG_LEN) { (void)ssl3_DecodeError(ss); PORT_SetError(SSL_ERROR_RX_MALFORMED_HANDSHAKE); - goto loser; + return SECFailure; } #undef MAX_HANDSHAKE_MSG_LEN @@ -11980,7 +11899,7 @@ ssl3_HandleHandshake(sslSocket *ss, sslBuffer *origBuf) ss->ssl3.hs.msg_len = 0; ss->ssl3.hs.header_bytes = 0; if (rv != SECSuccess) { - goto loser; + return rv; } } else { /* must be copied to msg_body and dealt with from there */ @@ -11993,7 +11912,7 @@ ssl3_HandleHandshake(sslSocket *ss, sslBuffer *origBuf) rv = sslBuffer_Grow(&ss->ssl3.hs.msg_body, ss->ssl3.hs.msg_len); if (rv != SECSuccess) { /* sslBuffer_Grow has set a memory error code. */ - goto loser; + return SECFailure; } PORT_Memcpy(ss->ssl3.hs.msg_body.buf + ss->ssl3.hs.msg_body.len, @@ -12013,7 +11932,7 @@ ssl3_HandleHandshake(sslSocket *ss, sslBuffer *origBuf) ss->ssl3.hs.msg_len = 0; ss->ssl3.hs.header_bytes = 0; if (rv != SECSuccess) { - goto loser; + return rv; } } else { PORT_Assert(buf.len == 0); @@ -12024,17 +11943,6 @@ ssl3_HandleHandshake(sslSocket *ss, sslBuffer *origBuf) origBuf->len = 0; /* So ssl3_GatherAppDataRecord will keep looping. */ return SECSuccess; - -loser : { - /* Make sure to remove any data that was consumed. */ - unsigned int consumed = origBuf->len - buf.len; - PORT_Assert(consumed == buf.buf - origBuf->buf); - if (consumed > 0) { - memmove(origBuf->buf, origBuf->buf + consumed, buf.len); - origBuf->len = buf.len; - } -} - return SECFailure; } /* These macros return the given value with the MSB copied to all the other @@ -13169,9 +13077,6 @@ ssl3_DestroySSL3Info(sslSocket *ss) if (ss->ssl3.hs.sha) { PK11_DestroyContext(ss->ssl3.hs.sha, PR_TRUE); } - if (ss->ssl3.hs.shaPostHandshake) { - PK11_DestroyContext(ss->ssl3.hs.shaPostHandshake, PR_TRUE); - } if (ss->ssl3.hs.messages.buf) { sslBuffer_Clear(&ss->ssl3.hs.messages); } diff --git a/security/nss/lib/ssl/ssl3prot.h b/security/nss/lib/ssl/ssl3prot.h index ffe8373011..bfaa10d3fb 100644 --- a/security/nss/lib/ssl/ssl3prot.h +++ b/security/nss/lib/ssl/ssl3prot.h @@ -74,7 +74,6 @@ typedef enum { unrecognized_name = 112, bad_certificate_status_response = 113, bad_certificate_hash_value = 114, - certificate_required = 116, no_application_protocol = 120, /* invalid alert */ diff --git a/security/nss/lib/ssl/sslencode.c b/security/nss/lib/ssl/sslencode.c index e59e758ff9..e508804515 100644 --- a/security/nss/lib/ssl/sslencode.c +++ b/security/nss/lib/ssl/sslencode.c @@ -10,7 +10,6 @@ #include "prnetdb.h" #include "ssl.h" #include "sslimpl.h" -#include "sslproto.h" /* Helper function to encode an unsigned integer into a buffer. */ static void @@ -264,11 +263,9 @@ ssl3_AppendHandshake(sslSocket *ss, const void *void_src, unsigned int bytes) } PRINT_BUF(60, (ss, "Append to Handshake", (unsigned char *)void_src, bytes)); - if (!ss->firstHsDone || ss->version < SSL_LIBRARY_VERSION_TLS_1_3) { - rv = ssl3_UpdateHandshakeHashes(ss, src, bytes); - if (rv != SECSuccess) - return SECFailure; /* error code set by ssl3_UpdateHandshakeHashes */ - } + rv = ssl3_UpdateHandshakeHashes(ss, src, bytes); + if (rv != SECSuccess) + return SECFailure; /* error code set by ssl3_UpdateHandshakeHashes */ while (bytes > room) { if (room > 0) diff --git a/security/nss/lib/ssl/sslerr.h b/security/nss/lib/ssl/sslerr.h index 9e72da28fe..b8f4e30eaf 100644 --- a/security/nss/lib/ssl/sslerr.h +++ b/security/nss/lib/ssl/sslerr.h @@ -269,7 +269,6 @@ typedef enum { SSL_ERROR_MISSING_ESNI_EXTENSION = (SSL_ERROR_BASE + 178), SSL_ERROR_RX_UNEXPECTED_RECORD_TYPE = (SSL_ERROR_BASE + 179), SSL_ERROR_MISSING_POST_HANDSHAKE_AUTH_EXTENSION = (SSL_ERROR_BASE + 180), - SSL_ERROR_RX_CERTIFICATE_REQUIRED_ALERT = (SSL_ERROR_BASE + 181), SSL_ERROR_END_OF_LIST /* let the c compiler determine the value of this. */ } SSLErrorCodes; #endif /* NO_SECURITY_ERROR_ENUM */ diff --git a/security/nss/lib/ssl/sslimpl.h b/security/nss/lib/ssl/sslimpl.h index b70ddc9558..247d1107f4 100644 --- a/security/nss/lib/ssl/sslimpl.h +++ b/security/nss/lib/ssl/sslimpl.h @@ -144,11 +144,6 @@ typedef enum { ticket_allow_psk_sign_auth = 16 } TLS13SessionTicketFlags; -typedef enum { - update_not_requested = 0, - update_requested = 1 -} tls13KeyUpdateRequest; - struct sslNamedGroupDefStr { /* The name is the value that is encoded on the wire in TLS. */ SSLNamedGroup name; @@ -615,7 +610,6 @@ typedef struct SSL3HandshakeStateStr { * TLS 1.2 and later use only |sha|, for SHA-256. */ PK11Context *md5; PK11Context *sha; - PK11Context *shaPostHandshake; SSLSignatureScheme signatureScheme; const ssl3KEADef *kea_def; ssl3CipherSuite cipher_suite; @@ -749,11 +743,6 @@ struct ssl3StateStr { * update is initiated locally. */ PRBool peerRequestedKeyUpdate; - /* This is true if we deferred sending a key update as - * post-handshake auth is in progress. */ - PRBool keyUpdateDeferred; - tls13KeyUpdateRequest deferredKeyUpdateRequest; - /* This is true after the server requests client certificate; * false after the client certificate is received. Used by the * server. */ @@ -1224,24 +1213,15 @@ extern SECStatus Null_Cipher(void *ctx, unsigned char *output, unsigned int *out unsigned int maxOutputLen, const unsigned char *input, unsigned int inputLen); extern void ssl3_RestartHandshakeHashes(sslSocket *ss); -typedef SECStatus (*sslUpdateHandshakeHashes)(sslSocket *ss, - const unsigned char *b, - unsigned int l); extern SECStatus ssl3_UpdateHandshakeHashes(sslSocket *ss, const unsigned char *b, unsigned int l); -extern SECStatus ssl3_UpdatePostHandshakeHashes(sslSocket *ss, - const unsigned char *b, - unsigned int l); SECStatus ssl_HashHandshakeMessageInt(sslSocket *ss, SSLHandshakeType type, PRUint32 dtlsSeq, - const PRUint8 *b, PRUint32 length, - sslUpdateHandshakeHashes cb); + const PRUint8 *b, PRUint32 length); SECStatus ssl_HashHandshakeMessage(sslSocket *ss, SSLHandshakeType type, const PRUint8 *b, PRUint32 length); -SECStatus ssl_HashPostHandshakeMessage(sslSocket *ss, SSLHandshakeType type, - const PRUint8 *b, PRUint32 length); /* Returns PR_TRUE if we are still waiting for the server to complete its * response to our client second round. Once we've received the Finished from @@ -1754,14 +1734,6 @@ SECStatus ssl_DecodeResumptionToken(sslSessionID *sid, const PRUint8 *encodedTic PRUint32 encodedTicketLen); PRBool ssl_IsResumptionTokenUsable(sslSocket *ss, sslSessionID *sid); -/* unwrap helper function to handle the case where the wrapKey doesn't wind - * * up in the correct token for the master secret */ -PK11SymKey *ssl_unwrapSymKey(PK11SymKey *wrapKey, - CK_MECHANISM_TYPE wrapType, SECItem *param, - SECItem *wrappedKey, - CK_MECHANISM_TYPE target, CK_ATTRIBUTE_TYPE operation, - int keySize, CK_FLAGS keyFlags, void *pinArg); - /* Remove when stable. */ SECStatus SSLExp_SetResumptionTokenCallback(PRFileDesc *fd, diff --git a/security/nss/lib/ssl/sslsecur.c b/security/nss/lib/ssl/sslsecur.c index 14320fa190..79634e4039 100644 --- a/security/nss/lib/ssl/sslsecur.c +++ b/security/nss/lib/ssl/sslsecur.c @@ -720,8 +720,7 @@ tls13_CheckKeyUpdate(sslSocket *ss, SSLSecretDirection dir) ssl3CipherSpec *spec; sslSequenceNumber seqNum; sslSequenceNumber margin; - tls13KeyUpdateRequest keyUpdateRequest; - SECStatus rv = SECSuccess; + SECStatus rv; /* Bug 1413368: enable for DTLS */ if (ss->version < SSL_LIBRARY_VERSION_TLS_1_3 || IS_DTLS(ss)) { @@ -756,15 +755,9 @@ tls13_CheckKeyUpdate(sslSocket *ss, SSLSecretDirection dir) SSL_TRC(5, ("%d: SSL[%d]: automatic key update at %llx for %s cipher spec", SSL_GETPID(), ss->fd, seqNum, (dir == ssl_secret_read) ? "read" : "write")); - keyUpdateRequest = (dir == ssl_secret_read) ? update_requested : update_not_requested; ssl_GetSSL3HandshakeLock(ss); - if (ss->ssl3.clientCertRequested) { - ss->ssl3.keyUpdateDeferred = PR_TRUE; - ss->ssl3.deferredKeyUpdateRequest = keyUpdateRequest; - } else { - rv = tls13_SendKeyUpdate(ss, keyUpdateRequest, - dir == ssl_secret_write /* buffer */); - } + rv = tls13_SendKeyUpdate(ss, (dir == ssl_secret_read) ? update_requested : update_not_requested, + dir == ssl_secret_write /* buffer */); ssl_ReleaseSSL3HandshakeLock(ss); return rv; } diff --git a/security/nss/lib/ssl/tls13con.c b/security/nss/lib/ssl/tls13con.c index 88bc618b34..825f8e1710 100644 --- a/security/nss/lib/ssl/tls13con.c +++ b/security/nss/lib/ssl/tls13con.c @@ -259,12 +259,6 @@ tls13_CheckHsState(sslSocket *ss, int err, const char *error_name, return SECFailure; } -PRBool -tls13_IsPostHandshake(const sslSocket *ss) -{ - return ss->version >= SSL_LIBRARY_VERSION_TLS_1_3 && ss->firstHsDone; -} - SSLHashType tls13_GetHashForCipherSuite(ssl3CipherSuite suite) { @@ -688,9 +682,8 @@ tls13_SendKeyUpdate(sslSocket *ss, tls13KeyUpdateRequest request, PRBool buffer) : "not requested")); PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss)); - PORT_Assert(!ss->sec.isServer || !ss->ssl3.clientCertRequested); - if (!tls13_IsPostHandshake(ss)) { + if (!ss->firstHsDone) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; } @@ -748,16 +741,11 @@ SSLExp_KeyUpdate(PRFileDesc *fd, PRBool requestUpdate) return SECFailure; } - if (!tls13_IsPostHandshake(ss)) { + if (!ss->firstHsDone) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } - if (ss->ssl3.clientCertRequested) { - PORT_SetError(PR_WOULD_BLOCK_ERROR); - return SECFailure; - } - rv = TLS13_CHECK_HS_STATE(ss, SEC_ERROR_INVALID_ARGS, idle_handshake); if (rv != SECSuccess) { @@ -798,7 +786,7 @@ tls13_HandleKeyUpdate(sslSocket *ss, PRUint8 *b, unsigned int length) PORT_Assert(ss->opt.noLocks || ssl_HaveSSL3HandshakeLock(ss)); PORT_Assert(ss->firstHsDone); - if (!tls13_IsPostHandshake(ss)) { + if (!ss->firstHsDone) { FATAL_ERROR(ss, SSL_ERROR_RX_UNEXPECTED_KEY_UPDATE, unexpected_message); return SECFailure; } @@ -832,12 +820,7 @@ tls13_HandleKeyUpdate(sslSocket *ss, PRUint8 *b, unsigned int length) if (update == update_requested) { PRBool sendUpdate; - if (ss->ssl3.clientCertRequested) { - /* Post-handshake auth is in progress; defer sending a key update. */ - ss->ssl3.keyUpdateDeferred = PR_TRUE; - ss->ssl3.deferredKeyUpdateRequest = update_not_requested; - sendUpdate = PR_FALSE; - } else if (ss->ssl3.peerRequestedKeyUpdate) { + if (ss->ssl3.peerRequestedKeyUpdate) { /* Only send an update if we have sent with the current spec. This * prevents us from being forced to crank forward pointlessly. */ ssl_GetSpecReadLock(ss); @@ -874,7 +857,7 @@ SSLExp_SendCertificateRequest(PRFileDesc *fd) return SECFailure; } - if (!tls13_IsPostHandshake(ss)) { + if (!ss->firstHsDone || ss->version < SSL_LIBRARY_VERSION_TLS_1_3) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; } @@ -998,13 +981,13 @@ tls13_RecoverWrappedSharedSecret(sslSocket *ss, sslSessionID *sid) wrappedMS.len = sid->u.ssl3.keys.wrapped_master_secret_len; /* unwrap the "master secret" which is actually RMS. */ - ss->ssl3.hs.resumptionMasterSecret = ssl_unwrapSymKey( + ss->ssl3.hs.resumptionMasterSecret = PK11_UnwrapSymKeyWithFlags( wrapKey, sid->u.ssl3.masterWrapMech, NULL, &wrappedMS, CKM_SSL3_MASTER_KEY_DERIVE, CKA_DERIVE, tls13_GetHashSizeForHash(hashType), - CKF_SIGN | CKF_VERIFY, ss->pkcs11PinArg); + CKF_SIGN | CKF_VERIFY); PK11_FreeSymKey(wrapKey); if (!ss->ssl3.hs.resumptionMasterSecret) { return SECFailure; @@ -2212,20 +2195,10 @@ tls13_SendCertificateRequest(sslSocket *ss) { SECStatus rv; sslBuffer extensionBuf = SSL_BUFFER_EMPTY; - unsigned int offset = 0; SSL_TRC(3, ("%d: TLS13[%d]: begin send certificate_request", SSL_GETPID(), ss->fd)); - if (ss->firstHsDone) { - PORT_Assert(ss->ssl3.hs.shaPostHandshake == NULL); - ss->ssl3.hs.shaPostHandshake = PK11_CloneContext(ss->ssl3.hs.sha); - if (ss->ssl3.hs.shaPostHandshake == NULL) { - ssl_MapLowLevelError(SSL_ERROR_SHA_DIGEST_FAILURE); - return SECFailure; - } - } - rv = ssl_ConstructExtensions(ss, &extensionBuf, ssl_hs_certificate_request); if (rv != SECSuccess) { return SECFailure; /* Code already set. */ @@ -2249,8 +2222,6 @@ tls13_SendCertificateRequest(sslSocket *ss) FATAL_ERROR(ss, SEC_ERROR_NO_MEMORY, internal_error); goto loser; } - - offset = SSL_BUFFER_LEN(&ss->sec.ci.sendBuf); } rv = ssl3_AppendHandshakeHeader(ss, ssl_hs_certificate_request, @@ -2274,15 +2245,6 @@ tls13_SendCertificateRequest(sslSocket *ss) goto loser; /* err set by AppendHandshake. */ } - if (ss->firstHsDone) { - rv = ssl3_UpdatePostHandshakeHashes(ss, - SSL_BUFFER_BASE(&ss->sec.ci.sendBuf) + offset, - SSL_BUFFER_LEN(&ss->sec.ci.sendBuf) - offset); - if (rv != SECSuccess) { - goto loser; - } - } - sslBuffer_Clear(&extensionBuf); return SECSuccess; @@ -2448,19 +2410,7 @@ tls13_HandleCertificateRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) return SECFailure; } - if (tls13_IsPostHandshake(ss)) { - PORT_Assert(ss->ssl3.hs.shaPostHandshake == NULL); - ss->ssl3.hs.shaPostHandshake = PK11_CloneContext(ss->ssl3.hs.sha); - if (ss->ssl3.hs.shaPostHandshake == NULL) { - ssl_MapLowLevelError(SSL_ERROR_SHA_DIGEST_FAILURE); - return SECFailure; - } - rv = ssl_HashPostHandshakeMessage(ss, ssl_hs_certificate_request, b, length); - if (rv != SECSuccess) { - FATAL_ERROR(ss, SEC_ERROR_LIBRARY_FAILURE, internal_error); - return SECFailure; - } - + if (ss->firstHsDone) { /* clean up anything left from previous handshake. */ if (ss->ssl3.clientCertChain != NULL) { CERT_DestroyCertificateList(ss->ssl3.clientCertChain); @@ -2491,7 +2441,7 @@ tls13_HandleCertificateRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) /* Unless it is a post-handshake client auth, the certificate * request context must be empty. */ - if (!tls13_IsPostHandshake(ss) && context.len > 0) { + if (!ss->firstHsDone && context.len > 0) { FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CERT_REQUEST, illegal_parameter); return SECFailure; } @@ -2551,9 +2501,6 @@ tls13_HandleCertificateRequest(sslSocket *ss, PRUint8 *b, PRUint32 length) return SECFailure; } PORT_Assert(ss->ssl3.hs.ws == idle_handshake); - PORT_Assert(ss->ssl3.hs.shaPostHandshake != NULL); - PK11_DestroyContext(ss->ssl3.hs.shaPostHandshake, PR_TRUE); - ss->ssl3.hs.shaPostHandshake = NULL; } else { TLS13_SET_HS_STATE(ss, wait_server_cert); } @@ -3111,15 +3058,6 @@ tls13_HandleCertificate(sslSocket *ss, PRUint8 *b, PRUint32 length) ssl_CipherSpecReleaseByEpoch(ss, ssl_secret_read, TrafficKeyClearText); dtls_ReceivedFirstMessageInFlight(ss); } - - if (ss->firstHsDone) { - rv = ssl_HashPostHandshakeMessage(ss, ssl_hs_certificate, b, length); - if (rv != SECSuccess) { - PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); - return SECFailure; - } - } - /* Process the context string */ rv = ssl3_ConsumeHandshakeVariable(ss, &context, 1, &b, &length); if (rv != SECSuccess) @@ -3677,11 +3615,7 @@ tls13_ComputeHandshakeHashes(sslSocket *ss, SSL3Hashes *hashes) goto loser; } } else { - if (ss->firstHsDone) { - ctx = PK11_CloneContext(ss->ssl3.hs.shaPostHandshake); - } else { - ctx = PK11_CloneContext(ss->ssl3.hs.sha); - } + ctx = PK11_CloneContext(ss->ssl3.hs.sha); if (!ctx) { ssl_MapLowLevelError(SSL_ERROR_SHA_DIGEST_FAILURE); return SECFailure; @@ -4135,11 +4069,7 @@ tls13_HandleCertificateVerify(sslSocket *ss, PRUint8 *b, PRUint32 length) return SECFailure; } - if (ss->firstHsDone) { - rv = ssl_HashPostHandshakeMessage(ss, ssl_hs_certificate_verify, b, length); - } else { - rv = ssl_HashHandshakeMessage(ss, ssl_hs_certificate_verify, b, length); - } + rv = ssl_HashHandshakeMessage(ss, ssl_hs_certificate_verify, b, length); if (rv != SECSuccess) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; @@ -4199,6 +4129,10 @@ tls13_HandleCertificateVerify(sslSocket *ss, PRUint8 *b, PRUint32 length) } } + if (ss->ssl3.clientCertRequested) { + PORT_Assert(ss->sec.isServer); + ss->ssl3.clientCertRequested = PR_FALSE; + } TLS13_SET_HS_STATE(ss, wait_finished); return SECSuccess; @@ -4459,11 +4393,7 @@ tls13_CommonHandleFinished(sslSocket *ss, PK11SymKey *key, return SECFailure; } - if (ss->firstHsDone) { - rv = ssl_HashPostHandshakeMessage(ss, ssl_hs_finished, b, length); - } else { - rv = ssl_HashHandshakeMessage(ss, ssl_hs_finished, b, length); - } + rv = ssl_HashHandshakeMessage(ss, ssl_hs_finished, b, length); if (rv != SECSuccess) { PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); return SECFailure; @@ -4513,22 +4443,6 @@ tls13_ServerHandleFinished(sslSocket *ss, PRUint8 *b, PRUint32 length) if (ss->firstHsDone) { TLS13_SET_HS_STATE(ss, idle_handshake); - - PORT_Assert(ss->ssl3.hs.shaPostHandshake != NULL); - PK11_DestroyContext(ss->ssl3.hs.shaPostHandshake, PR_TRUE); - ss->ssl3.hs.shaPostHandshake = NULL; - - ss->ssl3.clientCertRequested = PR_FALSE; - - if (ss->ssl3.keyUpdateDeferred) { - rv = tls13_SendKeyUpdate(ss, ss->ssl3.deferredKeyUpdateRequest, - PR_FALSE); - if (rv != SECSuccess) { - return SECFailure; /* error is set. */ - } - ss->ssl3.keyUpdateDeferred = PR_FALSE; - } - return SECSuccess; } @@ -4611,16 +4525,11 @@ tls13_SendClientSecondFlight(sslSocket *ss, PRBool sendClientCert, SSL3AlertDescription *sendAlert) { SECStatus rv; - unsigned int offset = 0; PORT_Assert(ss->opt.noLocks || ssl_HaveXmitBufLock(ss)); *sendAlert = internal_error; - if (ss->firstHsDone) { - offset = SSL_BUFFER_LEN(&ss->sec.ci.sendBuf); - } - if (ss->ssl3.sendEmptyCert) { ss->ssl3.sendEmptyCert = PR_FALSE; rv = ssl3_SendEmptyCertificate(ss); @@ -4634,16 +4543,6 @@ tls13_SendClientSecondFlight(sslSocket *ss, PRBool sendClientCert, return SECFailure; /* error code is set. */ } } - - if (ss->firstHsDone) { - rv = ssl3_UpdatePostHandshakeHashes(ss, - SSL_BUFFER_BASE(&ss->sec.ci.sendBuf) + offset, - SSL_BUFFER_LEN(&ss->sec.ci.sendBuf) - offset); - if (rv != SECSuccess) { - return SECFailure; /* error code is set. */ - } - } - if (ss->ssl3.hs.clientCertRequested) { SECITEM_FreeItem(&ss->xtnData.certReqContext, PR_FALSE); if (ss->xtnData.certReqAuthorities.arena) { @@ -4656,25 +4555,12 @@ tls13_SendClientSecondFlight(sslSocket *ss, PRBool sendClientCert, } if (sendClientCert) { - if (ss->firstHsDone) { - offset = SSL_BUFFER_LEN(&ss->sec.ci.sendBuf); - } - rv = tls13_SendCertificateVerify(ss, ss->ssl3.clientPrivateKey); SECKEY_DestroyPrivateKey(ss->ssl3.clientPrivateKey); ss->ssl3.clientPrivateKey = NULL; if (rv != SECSuccess) { return SECFailure; /* err is set. */ } - - if (ss->firstHsDone) { - rv = ssl3_UpdatePostHandshakeHashes(ss, - SSL_BUFFER_BASE(&ss->sec.ci.sendBuf) + offset, - SSL_BUFFER_LEN(&ss->sec.ci.sendBuf) - offset); - if (rv != SECSuccess) { - return SECFailure; /* error is set. */ - } - } } rv = tls13_SendFinished(ss, ss->firstHsDone ? ss->ssl3.hs.clientTrafficSecret : ss->ssl3.hs.clientHsTrafficSecret); @@ -4939,7 +4825,8 @@ SSLExp_SendSessionTicket(PRFileDesc *fd, const PRUint8 *token, return SECFailure; } - if (!ss->sec.isServer || !tls13_IsPostHandshake(ss) || + if (!ss->sec.isServer || !ss->firstHsDone || + ss->version < SSL_LIBRARY_VERSION_TLS_1_3 || tokenLen > 0xffff) { PORT_SetError(SEC_ERROR_INVALID_ARGS); return SECFailure; @@ -4975,7 +4862,7 @@ tls13_HandleNewSessionTicket(sslSocket *ss, PRUint8 *b, PRUint32 length) if (rv != SECSuccess) { return SECFailure; } - if (!tls13_IsPostHandshake(ss) || ss->sec.isServer) { + if (!ss->firstHsDone || ss->sec.isServer) { FATAL_ERROR(ss, SSL_ERROR_RX_UNEXPECTED_NEW_SESSION_TICKET, unexpected_message); return SECFailure; diff --git a/security/nss/lib/ssl/tls13con.h b/security/nss/lib/ssl/tls13con.h index 4968ac3619..ed4c4ec787 100644 --- a/security/nss/lib/ssl/tls13con.h +++ b/security/nss/lib/ssl/tls13con.h @@ -18,6 +18,11 @@ typedef enum { tls13_extension_unknown } tls13ExtensionStatus; +typedef enum { + update_not_requested = 0, + update_requested = 1 +} tls13KeyUpdateRequest; + #define TLS13_MAX_FINISHED_SIZE 64 SECStatus tls13_UnprotectRecord( @@ -42,8 +47,6 @@ PRBool tls13_InHsState(sslSocket *ss, ...); #define TLS13_IN_HS_STATE(ss, ...) \ tls13_InHsState(ss, __VA_ARGS__, wait_invalid) -PRBool tls13_IsPostHandshake(const sslSocket *ss); - SSLHashType tls13_GetHashForCipherSuite(ssl3CipherSuite suite); SSLHashType tls13_GetHash(const sslSocket *ss); unsigned int tls13_GetHashSizeForHash(SSLHashType hash); diff --git a/security/nss/lib/ssl/tls13hashstate.c b/security/nss/lib/ssl/tls13hashstate.c index 53d3738f0c..cc0ed286b0 100644 --- a/security/nss/lib/ssl/tls13hashstate.c +++ b/security/nss/lib/ssl/tls13hashstate.c @@ -157,8 +157,7 @@ tls13_RecoverHashState(sslSocket *ss, /* Now reinject the message. */ SSL_ASSERT_HASHES_EMPTY(ss); rv = ssl_HashHandshakeMessageInt(ss, ssl_hs_message_hash, 0, - SSL_READER_CURRENT(&reader), hashLen, - ssl3_UpdateHandshakeHashes); + SSL_READER_CURRENT(&reader), hashLen); if (rv != SECSuccess) { return SECFailure; } @@ -174,8 +173,7 @@ tls13_RecoverHashState(sslSocket *ss, rv = ssl_HashHandshakeMessageInt(ss, ssl_hs_server_hello, 0, SSL_BUFFER_BASE(&messageBuf), - SSL_BUFFER_LEN(&messageBuf), - ssl3_UpdateHandshakeHashes); + SSL_BUFFER_LEN(&messageBuf)); sslBuffer_Clear(&messageBuf); if (rv != SECSuccess) { return SECFailure; diff --git a/security/nss/lib/util/nssutil.h b/security/nss/lib/util/nssutil.h index 75c32f46c0..45392b9391 100644 --- a/security/nss/lib/util/nssutil.h +++ b/security/nss/lib/util/nssutil.h @@ -19,12 +19,12 @@ * The format of the version string should be * ".[.[.]][ ]" */ -#define NSSUTIL_VERSION "3.44 Beta" +#define NSSUTIL_VERSION "3.43" #define NSSUTIL_VMAJOR 3 -#define NSSUTIL_VMINOR 44 +#define NSSUTIL_VMINOR 43 #define NSSUTIL_VPATCH 0 #define NSSUTIL_VBUILD 0 -#define NSSUTIL_BETA PR_TRUE +#define NSSUTIL_BETA PR_FALSE SEC_BEGIN_PROTOS diff --git a/security/nss/tests/cert/cert.sh b/security/nss/tests/cert/cert.sh index 616043cff1..b74de9be53 100644 --- a/security/nss/tests/cert/cert.sh +++ b/security/nss/tests/cert/cert.sh @@ -317,7 +317,7 @@ cert_create_cert() cert_add_cert() { CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 if [ "$RET" -ne 0 ]; then return $RET @@ -343,7 +343,7 @@ cert_add_cert() # Generate and add DSA cert # CU_ACTION="Generate DSA Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -k dsa -d "${PROFILEDIR}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 if [ "$RET" -ne 0 ]; then @@ -367,7 +367,7 @@ cert_add_cert() # Generate DSA certificate signed with RSA CU_ACTION="Generate mixed DSA Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -k dsa -d "${PROFILEDIR}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 if [ "$RET" -ne 0 ]; then @@ -398,7 +398,7 @@ cert_add_cert() # CURVE="secp384r1" CU_ACTION="Generate EC Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -k ec -q "${CURVE}" -d "${PROFILEDIR}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 if [ "$RET" -ne 0 ]; then @@ -422,7 +422,7 @@ cert_add_cert() # Generate EC certificate signed with RSA CU_ACTION="Generate mixed EC Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -k ec -q "${CURVE}" -d "${PROFILEDIR}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 if [ "$RET" -ne 0 ]; then @@ -455,7 +455,7 @@ cert_add_cert() grep 'TestUser-rsa-pss-interop$' | sed -n 's/^<.*> [^ ]\{1,\} *\([^ ]\{1,\}\).*/\1/p'` CU_ACTION="Generate RSA-PSS Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-rsa-pss@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-rsa-pss@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k ${KEYID} -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -873,15 +873,15 @@ cert_smime_client() ## call to cert_create_cert ends up creating two separate certs ## one for Eve and another for Eve-ec but they both end up with ## the same Subject Alt Name Extension, i.e., both the cert for -## Eve@example.com and the cert for Eve-ec@example.com end up -## listing eve@example.net in the Certificate Subject Alt Name extension. +## Eve@bogus.com and the cert for Eve-ec@bogus.com end up +## listing eve@bogus.net in the Certificate Subject Alt Name extension. ## This can cause a problem later when cmsutil attempts to create ## enveloped data and accidently picks up the ECC cert (NSS currently ## does not support ECC for enveloped data creation). This script ## avoids the problem by ensuring that these conflicting certs are ## never added to the same cert database (see comment marked XXXX). echo "$SCRIPTNAME: Creating multiEmail's Certificate --------------------" - cert_create_cert "${EVEDIR}" "Eve" 60 ${D_EVE} "-7 eve@example.net,eve@example.org,beve@example.com" + cert_create_cert "${EVEDIR}" "Eve" 60 ${D_EVE} "-7 eve@bogus.net,eve@bogus.cc,beve@bogus.com" #echo "************* Copying CA files to ${SERVERDIR}" #cp ${CADIR}/*.db . @@ -891,7 +891,7 @@ cert_smime_client() # #cd ${CERTDIR} #CU_ACTION="Creating ${CERTNAME}'s Server Cert" - #CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@example.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" + #CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@bogus.com, O=BOGUS Netscape, L=Mountain View, ST=California, C=US" #certu -S -n "${CERTNAME}" -c "TestCA" -t "u,u,u" -m "$CERTSERIAL" \ # -d ${PROFILEDIR} -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -v 60 2>&1 @@ -975,7 +975,7 @@ cert_extended_ssl() modu -add "RootCerts" -libfile "${ROOTCERTSFILE}" -dbdir "${PROFILEDIR}" 2>&1 CU_ACTION="Generate Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request (ext)" @@ -995,7 +995,7 @@ cert_extended_ssl() # Repeat the above for DSA certs # CU_ACTION="Generate DSA Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k dsa -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1017,7 +1017,7 @@ cert_extended_ssl() # Repeat again for mixed DSA certs # CU_ACTION="Generate mixed DSA Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k dsa -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1040,7 +1040,7 @@ cert_extended_ssl() # EC_CURVE="secp256r1" CU_ACTION="Generate EC Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1063,7 +1063,7 @@ cert_extended_ssl() # EC_CURVE="secp256r1" CU_ACTION="Generate mixed EC Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1124,7 +1124,7 @@ cert_extended_ssl() modu -add "RootCerts" -libfile "${ROOTCERTSFILE}" -dbdir "${PROFILEDIR}" 2>&1 CU_ACTION="Generate Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" \ -o req 2>&1 @@ -1144,7 +1144,7 @@ cert_extended_ssl() # Repeat the above for DSA certs # CU_ACTION="Generate DSA Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsa@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k dsa -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1167,7 +1167,7 @@ cert_extended_ssl() # Repeat the above for mixed DSA certs # CU_ACTION="Generate mixed DSA Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-dsamixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k dsa -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1191,7 +1191,7 @@ cert_extended_ssl() # Repeat the above for EC certs # CU_ACTION="Generate EC Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1214,7 +1214,7 @@ cert_extended_ssl() # Repeat the above for mixed EC certs # CU_ACTION="Generate mixed EC Cert Request for $CERTNAME (ext)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1387,7 +1387,7 @@ MODSCRIPT RETEXPECTED=0 CU_ACTION="Generate Certificate for ${CERTNAME}" - CU_SUBJECT="CN=${CERTNAME}, E=fips@example.com, O=BOGUS NSS, OU=FIPS PUB 140, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=${CERTNAME}, E=fips@bogus.com, O=BOGUS NSS, OU=FIPS PUB 140, L=Mountain View, ST=California, C=US" certu -S -n ${FIPSCERTNICK} -x -t "Cu,Cu,Cu" -d "${PROFILEDIR}" -f "${R_FIPSPWFILE}" -k dsa -v 600 -m 500 -z "${R_NOISE_FILE}" 2>&1 if [ "$RET" -eq 0 ]; then cert_log "SUCCESS: FIPS passed" @@ -1439,7 +1439,7 @@ cert_eccurves() CERTNAME="Curve-${CURVE}" CERTSERIAL=`expr $CERTSERIAL + 1 ` CU_ACTION="Generate EC Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ec@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -k ec -q "${CURVE}" -d "${PROFILEDIR}" -f "${R_PWFILE}" \ -z "${R_NOISE_FILE}" -o req 2>&1 @@ -1464,7 +1464,7 @@ cert_extensions_test() { COUNT=`expr ${COUNT} + 1` CERTNAME=TestExt${COUNT} - CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" echo echo certutil -d ${CERT_EXTENSIONS_DIR} -S -n ${CERTNAME} \ @@ -2026,7 +2026,7 @@ cert_test_password() # finally make sure we can use the old key with the new password CU_ACTION="Generate Certificate for ${CERTNAME} with new password" - CU_SUBJECT="CN=${CERTNAME}, E=password@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=${CERTNAME}, E=password@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -S -n PasswordCert -c PasswordCA -t "u,u,u" -d "${PROFILEDIR}" -f "${R_FIPSPWFILE}" -z "${R_NOISE_FILE}" 2>&1 if [ "$RET" -eq 0 ]; then cert_log "SUCCESS: PASSWORD passed" @@ -2055,7 +2055,7 @@ cert_test_distrust() certu -M -n "Distrusted" -t p,p,p -d ${PROFILEDIR} -f "${R_PWFILE}" 2>&1 echo "$SCRIPTNAME: Creating Distrusted Intermediate" CERTNAME="DistrustedCA" - ALL_CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + ALL_CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" cert_CA ${CADIR} "${CERTNAME}" "-c TestCA" ",," ${D_CA} 2010 2>&1 CU_ACTION="Import Distrusted Intermediate" certu -A -n "${CERTNAME}" -t "p,p,p" -f "${R_PWFILE}" -d "${PROFILEDIR}" \ @@ -2065,7 +2065,7 @@ cert_test_distrust() # since it's not signed by TestCA it requires more steps. CU_ACTION="Generate Cert Request for Leaf Chained to Distrusted CA" CERTNAME="LeafChainedToDistrustedCA" - CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=${CERTNAME}, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2205,7 +2205,7 @@ cert_test_rsapss() CERTNAME="TestUser-rsa-pss1" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2236,7 +2236,7 @@ EOF CERTNAME="TestUser-rsa-pss2" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2267,7 +2267,7 @@ EOF CERTNAME="TestUser-rsa-pss3" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2298,7 +2298,7 @@ EOF CERTNAME="TestUser-rsa-pss4" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2329,7 +2329,7 @@ EOF CERTNAME="TestUser-rsa-pss5" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2360,7 +2360,7 @@ EOF CERTNAME="TestUser-rsa-pss6" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2392,7 +2392,7 @@ EOF CERTNAME="TestUser-rsa-pss7" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2409,7 +2409,7 @@ EOF CERTNAME="TestUser-rsa-pss8" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2440,7 +2440,7 @@ EOF CERTNAME="TestUser-rsa-pss9" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2471,7 +2471,7 @@ EOF CERTNAME="TestUser-rsa-pss10" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2503,7 +2503,7 @@ EOF CERTNAME="TestUser-rsa-pss11" CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" @@ -2571,7 +2571,7 @@ cert_test_rsapss_policy() # Issuer certificate: RSA # Signature: RSA-PSS (explicit, with --pss-sign and -Z SHA1) CU_ACTION="Generate Cert Request for $CERTNAME" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" certu -R -d "${PROFILEDIR}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}" --pss -o req 2>&1 CU_ACTION="Sign ${CERTNAME}'s Request" diff --git a/security/nss/tests/common/certsetup.sh b/security/nss/tests/common/certsetup.sh index f9ee459e12..2b5cef840b 100644 --- a/security/nss/tests/common/certsetup.sh +++ b/security/nss/tests/common/certsetup.sh @@ -47,12 +47,11 @@ make_cert() { rsa_ca_rsapss_chain) type_args=(-g 1024 --pss-sign);sign=(-c rsa_ca);type=rsa;; ecdh_rsa) type_args=(-q nistp256);sign=(-c rsa_ca);type=ec ;; esac - msg="create certificate: $@" shift 2 counter=$(($counter + 1)) certscript $@ | ${BINDIR}/certutil -S \ - -z "$R_NOISE_FILE" -d "$PROFILEDIR" \ + -z ${R_NOISE_FILE} -d "${PROFILEDIR}" \ -n $name -s "CN=$name" -t "$trust" "${sign[@]}" -m "$counter" \ -w -2 -v 120 -k "$type" "${type_args[@]}" "${sighash[@]}" -1 -2 - html_msg $? 0 "$msg" + html_msg $? 0 "create certificate: $@" } diff --git a/security/nss/tests/crmf/crmf.sh b/security/nss/tests/crmf/crmf.sh index 4e1f357822..6059c19912 100644 --- a/security/nss/tests/crmf/crmf.sh +++ b/security/nss/tests/crmf/crmf.sh @@ -58,12 +58,12 @@ crmf_init() crmf_main() { echo "$SCRIPTNAME: CRMF/CMMF Tests ------------------------------" - echo "crmftest -d ${P_R_BOBDIR} -p Bob -e dave@example.com -s TestCA -P nss crmf decode" - ${BINDIR}/crmftest -d ${P_R_BOBDIR} -p Bob -e dave@example.com -s TestCA -P nss crmf decode + echo "crmftest -d ${P_R_BOBDIR} -p Bob -e dave@bogus.com -s TestCA -P nss crmf decode" + ${BINDIR}/crmftest -d ${P_R_BOBDIR} -p Bob -e dave@bogus.com -s TestCA -P nss crmf decode html_msg $? 0 "CRMF test" "." - echo "crmftest -d ${P_R_BOBDIR} -p Bob -e dave@example.com -s TestCA -P nss cmmf" - ${BINDIR}/crmftest -d ${P_R_BOBDIR} -p Bob -e dave@example.com -s TestCA -P nss cmmf + echo "crmftest -d ${P_R_BOBDIR} -p Bob -e dave@bogus.com -s TestCA -P nss cmmf" + ${BINDIR}/crmftest -d ${P_R_BOBDIR} -p Bob -e dave@bogus.com -s TestCA -P nss cmmf html_msg $? 0 "CMMF test" "." # Add tests for key recovery and challange as crmftest's capabilities increase diff --git a/security/nss/tests/gtests/gtests.sh b/security/nss/tests/gtests/gtests.sh index 2b45e1ccda..f9f3ca81c2 100644 --- a/security/nss/tests/gtests/gtests.sh +++ b/security/nss/tests/gtests/gtests.sh @@ -23,7 +23,6 @@ gtest_init() { cd "$(dirname "$1")" - pwd SOURCE_DIR="$PWD"/../.. if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then cd ../common @@ -31,14 +30,11 @@ gtest_init() fi SCRIPTNAME=gtests.sh - . "${QADIR}"/common/certsetup.sh if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for CLEANUP="${SCRIPTNAME}" # cleaning this script will do it fi - mkdir -p "${GTESTDIR}" - cd "${GTESTDIR}" } ########################## gtest_start ############################# @@ -52,22 +48,20 @@ gtest_start() html_unknown "Skipping $i (not built)" continue fi - DIR="${GTESTDIR}/$i" + GTESTDIR="${HOSTDIR}/$i" html_head "$i" - if [ ! -d "$DIR" ]; then - mkdir -p "$DIR" - echo "${BINDIR}/certutil" -N -d "$DIR" --empty-password 2>&1 - "${BINDIR}/certutil" -N -d "$DIR" --empty-password 2>&1 - - PROFILEDIR="$DIR" make_cert dummy p256 sign + if [ ! -d "$GTESTDIR" ]; then + mkdir -p "$GTESTDIR" + echo "${BINDIR}/certutil" -N -d "$GTESTDIR" --empty-password 2>&1 + "${BINDIR}/certutil" -N -d "$GTESTDIR" --empty-password 2>&1 fi - pushd "$DIR" - GTESTREPORT="$DIR/report.xml" - PARSED_REPORT="$DIR/report.parsed" + cd "$GTESTDIR" + GTESTREPORT="$GTESTDIR/report.xml" + PARSED_REPORT="$GTESTDIR/report.parsed" echo "executing $i" "${BINDIR}/$i" "${SOURCE_DIR}/gtests/freebl_gtest/kat/Hash_DRBG.rsp" \ - -d "$DIR" -w --gtest_output=xml:"${GTESTREPORT}" \ - --gtest_filter="${GTESTFILTER:-*}" + -d "$GTESTDIR" -w --gtest_output=xml:"${GTESTREPORT}" \ + --gtest_filter="${GTESTFILTER:-*}" html_msg $? 0 "$i run successfully" echo "test output dir: ${GTESTREPORT}" echo "executing sed to parse the xml report" @@ -82,14 +76,14 @@ gtest_start() html_failed_ignore_core "$name" fi done - popd done } gtest_cleanup() { html "
" - . "${QADIR}"/common/cleanup.sh + cd "${QADIR}" + . common/cleanup.sh } ################## main ################################################# diff --git a/security/nss/tests/iopr/cert_iopr.sh b/security/nss/tests/iopr/cert_iopr.sh index b162a2d81c..bb1bf047c2 100644 --- a/security/nss/tests/iopr/cert_iopr.sh +++ b/security/nss/tests/iopr/cert_iopr.sh @@ -252,7 +252,7 @@ download_install_certs() { CERTNAME=$HOSTADDR CU_ACTION="Generate Cert Request for $CERTNAME (ws: $host)" - CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@example.com, O=BOGUS NSS, \ + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}@bogus.com, O=BOGUS NSS, \ L=Mountain View, ST=California, C=US" certu -R -d "${sslServerDir}" -f "${R_PWFILE}" -z "${R_NOISE_FILE}"\ -o $sslServerDir/req 2>&1 diff --git a/security/nss/tests/iopr/server_scr/cert_gen.sh b/security/nss/tests/iopr/server_scr/cert_gen.sh index 6611a0f416..17771ade16 100644 --- a/security/nss/tests/iopr/server_scr/cert_gen.sh +++ b/security/nss/tests/iopr/server_scr/cert_gen.sh @@ -116,7 +116,7 @@ createSignedCert() { echo Creating cert $certName-$keyType with SN=$certSN - CU_SUBJECT="CN=$certName, E=${certName}-${keyType}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=$certName, E=${certName}-${keyType}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" repAndExec \ certutil -R -d $dir -f "${PW_FILE}" -z "${NOISE_FILE}" \ -k $keyType -o $dir/req 2>&1 @@ -267,7 +267,7 @@ generateAndExportCACert() { certName=TestCA [ "$caName" ] && certName=$caName - CU_SUBJECT="CN=NSS IOPR Test CA $$, E=${certName}@example.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + CU_SUBJECT="CN=NSS IOPR Test CA $$, E=${certName}@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" repAndExec \ certutil -S -n $certName -t "CTu,CTu,CTu" -v 600 -x -d ${dir} -1 -2 \ -f ${PW_FILE} -z ${NOISE_FILE} -m `expr $$ + 2238` >&1 < TestCA.ca.cert certutil -d . -L -n u50 -r > TestUser50.cert diff --git a/security/nss/tests/smime/bob.txt b/security/nss/tests/smime/bob.txt index 5ec307f0b6..330b2c94d5 100644 --- a/security/nss/tests/smime/bob.txt +++ b/security/nss/tests/smime/bob.txt @@ -1,6 +1,6 @@ Date: Wed, 20 Sep 2000 00:00:01 -0700 (PDT) -From: bob@example.com +From: bob@bogus.com Subject: message Bob --> Alice -To: alice@example.com +To: alice@bogus.com This is a test message from Bob to Alice. diff --git a/security/nss/tests/smime/smime.sh b/security/nss/tests/smime/smime.sh index f319d93ccb..02a2b843e9 100644 --- a/security/nss/tests/smime/smime.sh +++ b/security/nss/tests/smime/smime.sh @@ -107,8 +107,8 @@ cms_sign() } header_mime_from_to_subject="MIME-Version: 1.0 -From: Alice@example.com -To: Bob@example.com +From: Alice@bogus.com +To: Bob@bogus.com Subject: " header_opaque_signed="Content-Type: application/pkcs7-mime; name=smime.p7m; @@ -167,7 +167,7 @@ mime_init() smime_enveloped() { - ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@example.com -i tb/alice.mime -d ${P_R_ALICEDIR} -p nss -o tb/alice.mime.env + ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@bogus.com -i tb/alice.mime -d ${P_R_ALICEDIR} -p nss -o tb/alice.mime.env OUT="tb/alice.env.eml" echo -n "${header_mime_from_to_subject}" >>${OUT} @@ -191,7 +191,7 @@ smime_signed_enveloped() cat tb/alice.mime.d${SIG} | ${BINDIR}/btoa | sed 's/\r$//' >>${OUT} echo "${multipart_end}" >>${OUT} - ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@example.com -i ${OUT} -d ${P_R_ALICEDIR} -p nss -o ${OUT}.env + ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@bogus.com -i ${OUT} -d ${P_R_ALICEDIR} -p nss -o ${OUT}.env OUT="tb/alice.d${SIG}.multipart.eml" echo -n "${header_mime_from_to_subject}" >>${OUT} @@ -213,7 +213,7 @@ smime_signed_enveloped() echo "$header_opaque_signed" >>${OUT} cat tb/alice.textplain.${SIG} | ${BINDIR}/btoa | sed 's/\r$//' >>${OUT} - ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@example.com -i ${OUT} -d ${P_R_ALICEDIR} -p nss -o ${OUT}.env + ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@bogus.com -i ${OUT} -d ${P_R_ALICEDIR} -p nss -o ${OUT}.env OUT="tb/alice.${SIG}.opaque.eml" echo -n "${header_mime_from_to_subject}" >>${OUT} @@ -301,9 +301,9 @@ smime_main() smime_signed_enveloped echo "$SCRIPTNAME: Enveloped Data Tests ------------------------------" - echo "cmsutil -E -r bob@example.com -i alice.txt -d ${P_R_ALICEDIR} -p nss \\" + echo "cmsutil -E -r bob@bogus.com -i alice.txt -d ${P_R_ALICEDIR} -p nss \\" echo " -o alice.env" - ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@example.com -i alice.txt -d ${P_R_ALICEDIR} -p nss -o alice.env + ${PROFTOOL} ${BINDIR}/cmsutil -E -r bob@bogus.com -i alice.txt -d ${P_R_ALICEDIR} -p nss -o alice.env html_msg $? 0 "Create Enveloped Data Alice" "." echo "cmsutil -D -i alice.env -d ${P_R_BOBDIR} -p nss -o alice.data1" @@ -317,23 +317,23 @@ smime_main() # multiple recip echo "$SCRIPTNAME: Testing multiple recipients ------------------------------" echo "cmsutil -E -i alice.txt -d ${P_R_ALICEDIR} -o alicecc.env \\" - echo " -r bob@example.com,dave@example.com" + echo " -r bob@bogus.com,dave@bogus.com" ${PROFTOOL} ${BINDIR}/cmsutil -E -i alice.txt -d ${P_R_ALICEDIR} -o alicecc.env \ - -r bob@example.com,dave@example.com + -r bob@bogus.com,dave@bogus.com ret=$? html_msg $ret 0 "Create Multiple Recipients Enveloped Data Alice" "." if [ $ret != 0 ] ; then echo "certutil -L -d ${P_R_ALICEDIR}" ${BINDIR}/certutil -L -d ${P_R_ALICEDIR} - echo "certutil -L -d ${P_R_ALICEDIR} -n dave@example.com" - ${BINDIR}/certutil -L -d ${P_R_ALICEDIR} -n dave@example.com + echo "certutil -L -d ${P_R_ALICEDIR} -n dave@bogus.com" + ${BINDIR}/certutil -L -d ${P_R_ALICEDIR} -n dave@bogus.com fi echo "$SCRIPTNAME: Testing multiple email addrs ------------------------------" echo "cmsutil -E -i alice.txt -d ${P_R_ALICEDIR} -o aliceve.env \\" - echo " -r eve@example.net" + echo " -r eve@bogus.net" ${PROFTOOL} ${BINDIR}/cmsutil -E -i alice.txt -d ${P_R_ALICEDIR} -o aliceve.env \ - -r eve@example.net + -r eve@bogus.net ret=$? html_msg $ret 0 "Encrypt to a Multiple Email cert" "." @@ -359,9 +359,9 @@ smime_main() html_msg $? 0 "Compare Decoded with Multiple Email cert" "." echo "$SCRIPTNAME: Sending CERTS-ONLY Message ------------------------------" - echo "cmsutil -O -r \"Alice,bob@example.com,dave@example.com\" \\" + echo "cmsutil -O -r \"Alice,bob@bogus.com,dave@bogus.com\" \\" echo " -d ${P_R_ALICEDIR} > co.der" - ${PROFTOOL} ${BINDIR}/cmsutil -O -r "Alice,bob@example.com,dave@example.com" -d ${P_R_ALICEDIR} > co.der + ${PROFTOOL} ${BINDIR}/cmsutil -O -r "Alice,bob@bogus.com,dave@bogus.com" -d ${P_R_ALICEDIR} > co.der html_msg $? 0 "Create Certs-Only Alice" "." echo "cmsutil -D -i co.der -d ${P_R_BOBDIR}" @@ -370,9 +370,9 @@ smime_main() echo "$SCRIPTNAME: Encrypted-Data Message ---------------------------------" echo "cmsutil -C -i alice.txt -e alicehello.env -d ${P_R_ALICEDIR} \\" - echo " -r \"bob@example.com\" > alice.enc" + echo " -r \"bob@bogus.com\" > alice.enc" ${PROFTOOL} ${BINDIR}/cmsutil -C -i alice.txt -e alicehello.env -d ${P_R_ALICEDIR} \ - -r "bob@example.com" > alice.enc + -r "bob@bogus.com" > alice.enc html_msg $? 0 "Create Encrypted-Data" "." echo "cmsutil -D -i alice.enc -d ${P_R_BOBDIR} -e alicehello.env -p nss \\" diff --git a/security/nss/tests/ssl/ssl.sh b/security/nss/tests/ssl/ssl.sh index 3c3d4206b2..525855e100 100644 --- a/security/nss/tests/ssl/ssl.sh +++ b/security/nss/tests/ssl/ssl.sh @@ -220,20 +220,18 @@ start_selfserv() else RSA_OPTIONS="-n ${HOSTADDR}-rsa-pss" fi - SERVER_VMIN=${SERVER_VMIN-ssl3} - SERVER_VMAX=${SERVER_VMAX-tls1.2} echo "selfserv starting at `date`" echo "selfserv -D -p ${PORT} -d ${P_R_SERVERDIR} ${RSA_OPTIONS} ${SERVER_OPTIONS} \\" echo " ${ECC_OPTIONS} -S ${HOSTADDR}-dsa -w nss "$@" -i ${R_SERVERPID}\\" - echo " -V ${SERVER_VMIN}:${SERVER_VMAX} $verbose -H 1 &" + echo " -V ssl3:tls1.2 $verbose -H 1 &" if [ ${fileout} -eq 1 ]; then ${PROFTOOL} ${BINDIR}/selfserv -D -p ${PORT} -d ${P_R_SERVERDIR} ${RSA_OPTIONS} ${SERVER_OPTIONS} \ - ${ECC_OPTIONS} -S ${HOSTADDR}-dsa -w nss "$@" -i ${R_SERVERPID} -V ${SERVER_VMIN}:${SERVER_VMAX} $verbose -H 1 \ + ${ECC_OPTIONS} -S ${HOSTADDR}-dsa -w nss "$@" -i ${R_SERVERPID} -V ssl3:tls1.2 $verbose -H 1 \ > ${SERVEROUTFILE} 2>&1 & RET=$? else ${PROFTOOL} ${BINDIR}/selfserv -D -p ${PORT} -d ${P_R_SERVERDIR} ${RSA_OPTIONS} ${SERVER_OPTIONS} \ - ${ECC_OPTIONS} -S ${HOSTADDR}-dsa -w nss "$@" -i ${R_SERVERPID} -V ${SERVER_VMIN}:${SERVER_VMAX} $verbose -H 1 & + ${ECC_OPTIONS} -S ${HOSTADDR}-dsa -w nss "$@" -i ${R_SERVERPID} -V ssl3:tls1.2 $verbose -H 1 & RET=$? fi @@ -390,8 +388,6 @@ ssl_auth() do echo "${testname}" | grep "don't require client auth" > /dev/null CAUTH=$? - echo "${testname}" | grep "TLS 1.3" > /dev/null - TLS13=$? if [ "${CLIENT_MODE}" = "fips" -a "${CAUTH}" -eq 0 ] ; then echo "$SCRIPTNAME: skipping $testname (non-FIPS only)" @@ -403,13 +399,6 @@ ssl_auth() cparam=`echo $cparam | sed -e "s/Host/$HOST/g" -e "s/Dom/$DOMSUF/g" ` sparam=`echo $sparam | sed -e "s/Host/$HOST/g" -e "s/Dom/$DOMSUF/g" ` fi - # SSL3 cannot be used with TLS 1.3 - unset SERVER_VMIN - unset SERVER_VMAX - if [ $TLS13 -eq 0 ] ; then - SERVER_VMIN=tls1.0 - SERVER_VMAX=tls1.3 - fi start_selfserv `echo "$sparam" | sed -e 's,_, ,g'` echo "tstclnt -4 -p ${PORT} -h ${HOSTADDR} -f -d ${P_R_CLIENTDIR} $verbose ${CLIENT_OPTIONS} \\" @@ -680,18 +669,9 @@ ssl_crl_ssl() ignore_blank_lines ${SSLAUTH} | \ while read ectype value sparam cparam testname do - echo "${testname}" | grep "TLS 1.3" > /dev/null - TLS13=$? if [ "$ectype" = "SNI" ]; then continue else - # SSL3 cannot be used with TLS 1.3 - unset SERVER_VMIN - unset SERVER_VMAX - if [ $TLS13 -eq 0 ] ; then - SERVER_VMIN=tls1.0 - SERVER_VMAX=tls1.3 - fi servarg=`echo $sparam | awk '{r=split($0,a,"-r") - 1;print r;}'` pwd=`echo $cparam | grep nss` user=`echo $cparam | grep TestUser` @@ -1059,7 +1039,7 @@ ssl_crl_cache() rm -f ${SSLAUTH_TMP} echo ${SSLAUTH_TMP} - grep -- " $SERV_ARG " ${SSLAUTH} | grep -v "^#" | grep -v none | grep -v bogus | grep -v 'post hs' > ${SSLAUTH_TMP} + grep -- " $SERV_ARG " ${SSLAUTH} | grep -v "^#" | grep -v none | grep -v bogus > ${SSLAUTH_TMP} echo $? while [ $? -eq 0 -a -f ${SSLAUTH_TMP} ] do diff --git a/security/nss/tests/ssl/sslauth.txt b/security/nss/tests/ssl/sslauth.txt index a84630f066..82d1ddea48 100644 --- a/security/nss/tests/ssl/sslauth.txt +++ b/security/nss/tests/ssl/sslauth.txt @@ -38,10 +38,6 @@ noECC 1 -r_-r_-r_-r -V_ssl3:ssl3_-w_nss_-n_none SSL3 Require client auth on 2nd hs (client does not provide auth) noECC 1 -r_-r_-r_-r -V_ssl3:ssl3_-n_TestUser_-w_bogus SSL3 Require client auth on 2nd hs (bad password) noECC 0 -r_-r_-r_-r -V_ssl3:ssl3_-n_TestUser_-w_nss SSL3 Require client auth on 2nd hs (client auth) - noECC 0 -r_-r_-r_-E -V_tls1.3:tls1.3_-E_-n_TestUser_-w_nss TLS 1.3 Request don't require client auth on post hs (client auth) - noECC 0 -r_-r_-r_-r_-E -V_tls1.3:tls1.3_-E_-n_TestUser_-w_nss TLS 1.3 Require client auth on post hs (client auth) - noECC 0 -r_-r_-r_-E -V_tls1.3:tls1.3_-E_-n_none_-w_nss TLS 1.3 Request don't require client auth on post hs (client does not provide auth) - noECC 1 -r_-r_-r_-r_-E -V_tls1.3:tls1.3_-E_-n_none_-w_nss TLS 1.3 Require client auth on post hs (client does not provide auth) # # Use EC cert for client authentication #