OLD | NEW |
1 /* | 1 /* |
2 * SSL3 Protocol | 2 * SSL3 Protocol |
3 * | 3 * |
4 * This Source Code Form is subject to the terms of the Mozilla Public | 4 * This Source Code Form is subject to the terms of the Mozilla Public |
5 * License, v. 2.0. If a copy of the MPL was not distributed with this | 5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
7 | 7 |
8 /* ECC code moved here from ssl3con.c */ | 8 /* ECC code moved here from ssl3con.c */ |
9 | 9 |
10 #include "nss.h" | 10 #include "nss.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 #include "prthread.h" | 25 #include "prthread.h" |
26 #include "prinit.h" | 26 #include "prinit.h" |
27 | 27 |
28 #include "pk11func.h" | 28 #include "pk11func.h" |
29 #include "secmod.h" | 29 #include "secmod.h" |
30 | 30 |
31 #include <stdio.h> | 31 #include <stdio.h> |
32 | 32 |
33 /* This is a bodge to allow this code to be compiled against older NSS headers | 33 /* This is a bodge to allow this code to be compiled against older NSS headers |
34 * that don't contain the TLS 1.2 changes. */ | 34 * that don't contain the TLS 1.2 changes. */ |
35 #ifndef CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256 | 35 #ifndef CKM_TLS12_MASTER_KEY_DERIVE_DH |
36 #define CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256 (CKM_NSS + 24) | 36 #define CKM_TLS12_MASTER_KEY_DERIVE_DH 0x000003E2 |
37 #endif | 37 #endif |
38 | 38 |
39 #ifdef NSS_ENABLE_ECC | 39 #ifdef NSS_ENABLE_ECC |
40 | 40 |
41 /* | 41 /* |
42 * In NSS 3.13.2 the definition of the EC_POINT_FORM_UNCOMPRESSED macro | 42 * In NSS 3.13.2 the definition of the EC_POINT_FORM_UNCOMPRESSED macro |
43 * was moved from the internal header ec.h to the public header blapit.h. | 43 * was moved from the internal header ec.h to the public header blapit.h. |
44 * Define the macro here when compiling against older system NSS headers. | 44 * Define the macro here when compiling against older system NSS headers. |
45 */ | 45 */ |
46 #ifndef EC_POINT_FORM_UNCOMPRESSED | 46 #ifndef EC_POINT_FORM_UNCOMPRESSED |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 if (!privKey || !pubKey) { | 304 if (!privKey || !pubKey) { |
305 ssl_MapLowLevelError(SEC_ERROR_KEYGEN_FAIL); | 305 ssl_MapLowLevelError(SEC_ERROR_KEYGEN_FAIL); |
306 rv = SECFailure; | 306 rv = SECFailure; |
307 goto loser; | 307 goto loser; |
308 } | 308 } |
309 PRINT_BUF(50, (ss, "ECDH public value:", | 309 PRINT_BUF(50, (ss, "ECDH public value:", |
310 pubKey->u.ec.publicValue.data, | 310 pubKey->u.ec.publicValue.data, |
311 pubKey->u.ec.publicValue.len)); | 311 pubKey->u.ec.publicValue.len)); |
312 | 312 |
313 if (isTLS12) { | 313 if (isTLS12) { |
314 » target = CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256; | 314 » target = CKM_TLS12_MASTER_KEY_DERIVE_DH; |
315 } else if (isTLS) { | 315 } else if (isTLS) { |
316 target = CKM_TLS_MASTER_KEY_DERIVE_DH; | 316 target = CKM_TLS_MASTER_KEY_DERIVE_DH; |
317 } else { | 317 } else { |
318 target = CKM_SSL3_MASTER_KEY_DERIVE_DH; | 318 target = CKM_SSL3_MASTER_KEY_DERIVE_DH; |
319 } | 319 } |
320 | 320 |
321 /* Determine the PMS */ | 321 /* Determine the PMS */ |
322 pms = PK11_PubDeriveWithKDF(privKey, svrPubKey, PR_FALSE, NULL, NULL, | 322 pms = PK11_PubDeriveWithKDF(privKey, svrPubKey, PR_FALSE, NULL, NULL, |
323 CKM_ECDH1_DERIVE, target, CKA_DERIVE, 0, | 323 CKM_ECDH1_DERIVE, target, CKA_DERIVE, 0, |
324 CKD_NULL, NULL, NULL); | 324 CKD_NULL, NULL, NULL); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 1, &b, &length); | 395 1, &b, &length); |
396 if (rv != SECSuccess) { | 396 if (rv != SECSuccess) { |
397 SEND_ALERT | 397 SEND_ALERT |
398 return SECFailure; /* XXX Who sets the error code?? */ | 398 return SECFailure; /* XXX Who sets the error code?? */ |
399 } | 399 } |
400 | 400 |
401 isTLS = (PRBool)(ss->ssl3.prSpec->version > SSL_LIBRARY_VERSION_3_0); | 401 isTLS = (PRBool)(ss->ssl3.prSpec->version > SSL_LIBRARY_VERSION_3_0); |
402 isTLS12 = (PRBool)(ss->ssl3.prSpec->version >= SSL_LIBRARY_VERSION_TLS_1_2); | 402 isTLS12 = (PRBool)(ss->ssl3.prSpec->version >= SSL_LIBRARY_VERSION_TLS_1_2); |
403 | 403 |
404 if (isTLS12) { | 404 if (isTLS12) { |
405 » target = CKM_NSS_TLS_MASTER_KEY_DERIVE_DH_SHA256; | 405 » target = CKM_TLS12_MASTER_KEY_DERIVE_DH; |
406 } else if (isTLS) { | 406 } else if (isTLS) { |
407 target = CKM_TLS_MASTER_KEY_DERIVE_DH; | 407 target = CKM_TLS_MASTER_KEY_DERIVE_DH; |
408 } else { | 408 } else { |
409 target = CKM_SSL3_MASTER_KEY_DERIVE_DH; | 409 target = CKM_SSL3_MASTER_KEY_DERIVE_DH; |
410 } | 410 } |
411 | 411 |
412 /* Determine the PMS */ | 412 /* Determine the PMS */ |
413 pms = PK11_PubDeriveWithKDF(srvrPrivKey, &clntPubKey, PR_FALSE, NULL, NULL, | 413 pms = PK11_PubDeriveWithKDF(srvrPrivKey, &clntPubKey, PR_FALSE, NULL, NULL, |
414 CKM_ECDH1_DERIVE, target, CKA_DERIVE, 0, | 414 CKM_ECDH1_DERIVE, target, CKA_DERIVE, 0, |
415 CKD_NULL, NULL, NULL); | 415 CKD_NULL, NULL, NULL); |
(...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 ssl3_DisableECCSuites(ss, ecdhe_ecdsa_suites); | 1271 ssl3_DisableECCSuites(ss, ecdhe_ecdsa_suites); |
1272 return SECFailure; | 1272 return SECFailure; |
1273 | 1273 |
1274 loser: | 1274 loser: |
1275 /* no common curve supported */ | 1275 /* no common curve supported */ |
1276 ssl3_DisableECCSuites(ss, ecSuites); | 1276 ssl3_DisableECCSuites(ss, ecSuites); |
1277 return SECFailure; | 1277 return SECFailure; |
1278 } | 1278 } |
1279 | 1279 |
1280 #endif /* NSS_ENABLE_ECC */ | 1280 #endif /* NSS_ENABLE_ECC */ |
OLD | NEW |