summaryrefslogtreecommitdiff
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Set version numbers to 3.64 finalNSS_3_64_RTMBenjamin Beurdouche2021-04-153-6/+6
|
* Bug 1687164 - Introduce NSS_DISABLE_CRYPTO_VSX and disable_crypto_vsx ↵glaubitz2021-04-062-44/+100
| | | | | | | | | | | | r=bbeurdouche Currently, NSS assumes that every PowerPC target supports the crypto and VSX extensions of the PowerPC ABI. However, VSX was only introduced with ISA version 2.06 and the crypto extensions with ISA version 2.07 and enabling them on older PowerPC targets will result in a SIGILL. Thus, make their use configurable and enable them by default on ppc64le only. Differential Revision: https://phabricator.services.mozilla.com/D105354
* Set version numbers to 3.64 BetaBenjamin Beurdouche2021-03-183-6/+6
|
* Bug 1698320 - replace __builtin_cpu_supports("vsx") with ↵aoeu2021-03-164-14/+146
| | | | | | ppc_crypto_support() for clang. r=bbeurdouche Differential Revision: https://phabricator.services.mozilla.com/D108354
* Bug 1613235 - Clang-format for: POWER ChaCha20 stream cipher vector ↵NSS_3_63_BETA1Benjamin Beurdouche2021-03-104-17/+16
| | | | | | | | acceleration r=beurdouche Depends on D107221 Differential Revision: https://phabricator.services.mozilla.com/D107788
* Bug 1613235 - Add POWER ChaCha20 stream cipher vector acceleration. ↵aoeu2021-03-107-2/+143
| | | | | | | | r=bbeurdouche Depends on D107220 Differential Revision: https://phabricator.services.mozilla.com/D107221
* Bug 1613235 - Add POWER ChaCha20 stream cipher vector acceleration. ↵aoeu2021-03-106-0/+1199
| | | | | | r=bbeurdouche Differential Revision: https://phabricator.services.mozilla.com/D107220
* Bug 1697380 - Make a clang-format run on top of helpful contributions. ↵Benjamin Beurdouche2021-03-102-24/+24
| | | | | | | | r=beurdouche Depends on D106881 Differential Revision: https://phabricator.services.mozilla.com/D107787
* Bug 1683520 - ECCKiila P384, change syntax of nested structs initialization ↵Benjamin Beurdouche2021-03-101-8/+8
| | | | | | | | to prevent build isses with GCC 4.8. r=bbrumley Depends on D102389 Differential Revision: https://phabricator.services.mozilla.com/D106881
* Bug 1683520 - [lib/freebl/ecl] P-384: allow zero scalars in dual scalar ↵Billy Brumley2021-03-101-482/+576
| | | | | | multiplication r=bbeurdouche Differential Revision: https://phabricator.services.mozilla.com/D102389
* Bug 1683520 - ECCKiila P521, change syntax of nested structs initialization ↵Benjamin Beurdouche2021-03-101-8/+8
| | | | | | | | to prevent build isses with GCC 4.8. r=bbrumley Depends on D102406 Differential Revision: https://phabricator.services.mozilla.com/D106882
* Bug 1683520 - [lib/freebl/ecl] P-521: allow zero scalars in dual scalar ↵Billy Brumley2021-03-101-750/+954
| | | | | | multiplication r=bbeurdouche Differential Revision: https://phabricator.services.mozilla.com/D102406
* Bug 1696800 - HACL* update March 2021 - ↵Benjamin Beurdouche2021-03-0831-813/+1171
| | | | | | c95ab70fcb2bc21025d8845281bc4bc8987ca683 r=beurdouche Differential Revision: https://phabricator.services.mozilla.com/D107387
* Fix clang failure.Robert Relyea2021-02-251-1/+1
|
* Bug 1694392 NSS does not work with PKCS #11 modules not supporting profilesRobert Relyea2021-02-241-4/+3
| | | | | | | | | | | | | | | | | | | | | | r=ueno,bbeurdouche User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0 Steps to reproduce: Using NSS with PKCS #11 library that returns CKR_ATTRIBUTE_VALUE_INVALID when searching for CKA_CLASS = CKO_PROFILE. Actual results: PK11_InitToken calls pk11_ReadProfileList and passes on failures. Thus, if the profiles cannot be read the token cannot be initialized. pk11_ReadProfileList in turn uses pk11_FindObjectsByTemplate to search for CKO_PROFILE objects. This function fails if C_FindObjectsInit fails. However, it should be perfectly ok that C_FindObjectsInit fails if CKO_PROFILE is not known. In fact, CKR_ATTRIBUTE_VALUE_INVALID is a valid return code here since the library does not know (yet) the value CKO_PROFILE for CKA_CLASS and since the CKA_CLASS is a fixed list it the standard allows to return this error code. Expected results: PK11_InitToken should complete successfully. Differential Revision: https://phabricator.services.mozilla.com/D106167
* Bug 1685880 - Minor fix to prevent unused variable on early return. r=beurdoucheBenjamin Beurdouche2021-02-241-4/+2
| | | | | | Depends on D104418 Differential Revision: https://phabricator.services.mozilla.com/D106144
* Bug 1685880 - Fix for the gcc compiler version 7 to support setenv with nss ↵Arora Aashish2021-02-241-3/+10
| | | | | | build. r=rrelyea Differential Revision: https://phabricator.services.mozilla.com/D104418
* Bug 1693217 - Increase nssckbi.h version number for March 2021 batch of root ↵Benjamin Beurdouche2021-02-231-2/+2
| | | | | | CA changes, CA list version 2.48. r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105451
* Bug 1692094 - Set email distrust after to 21-03-01 for Camerfirma's ↵Benjamin Beurdouche2021-02-231-2/+8
| | | | | | 'Chambers of Commerce' and 'Global Chambersign' roots. r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105435
* Bug 1618407 - Symantec root certs - Set CKA_NSS_EMAIL_DISTRUST_AFTER. r=kjacobsBenjamin Beurdouche2021-02-231-5/+20
| | | | Differential Revision: https://phabricator.services.mozilla.com/D85334
* Bug 1693173 - Add GlobalSign R45, E45, R46, and E46 root certs to NSS. ↵Benjamin Beurdouche2021-02-231-1/+557
| | | | | | | | r=KathleenWilson Depends on D105448 Differential Revision: https://phabricator.services.mozilla.com/D105457
* Bug 1683738 - Add AC RAIZ FNMT-RCM SERVIDORES SEGUROS root cert to NSS. ↵Benjamin Beurdouche2021-02-231-0/+126
| | | | | | r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105448
* Bug 1686854 - Remove GeoTrust PCA-G2 and VeriSign Universal root certs from ↵Benjamin Beurdouche2021-02-231-316/+0
| | | | | | NSS. r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105444
* Bug 1687822 - Turn off Websites trust bit for the “Staat der Nederlanden ↵Benjamin Beurdouche2021-02-231-1/+1
| | | | | | Root CA - G3” root cert in NSS. r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105436
* Bug 1692094 - Turn off Websites Trust Bit for 'Chambers of Commerce Root - ↵Benjamin Beurdouche2021-02-231-2/+2
| | | | | | 2008' and 'Global Chambersign Root - 2008'. r=KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D105433
* Bug 1694291 - Tracing fixes for ECH, r=mtStephen Farrell2021-02-231-2/+8
|
* Set version numbers to 3.63 BetaBenjamin Beurdouche2021-02-193-6/+6
|
* Bug 1682044 pkix_Build_GatherCerts() + pkix_CacheCert_Add() can corrupt ↵Robert Relyea2021-02-051-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "cachedCertTable" Patch by Andrew Cagney Preliminary Review by Ryan Sleevie Tested against all.sh rrelyea. r=kjacobs (this bug is old) pkix_Build_GatherCerts() has two code paths for creating the list "certsFound": pkix_CacheCert_Lookup() this sets "certsFound" to a new list "certsFound" and "cachedCertTable" share items but not the list pkix_CacheCert_Add(pkix_pl_Pk11CertStore_CertQuery()) this sets "certsFound" to a new list; and then adds the list to "cachedCertTable" "certsFound" and "cachedCertTable" share a linked list Because the latter doesn't create a separate list, deleting list elements from "certsFound" can also delete list elements from within "cacheCertTable". And if this happens while pkix_CacheCert_Lookup() is trying to update the same element's reference, a core dump can result. In detail (note that reference counts may occasionally seem off by 1, its because data is being captured before function local variables release their reference): pkix_Build_GatherCerts() calls pkix_pl_Pk11CertStore_CertQuery() (via a pointer) to sets "certsFound": PKIX_CHECK(getCerts (certStore, state->certSel, state->verifyNode, &nbioContext, &certsFound, plContext), PKIX_GETCERTSFAILED); it then calls: PKIX_CHECK(pkix_CacheCert_Add (certStore, certSelParams, certsFound, plContext), PKIX_CACHECERTADDFAILED);
* Bug 1690583 - Fix CH padding extension size calculation. r=mtKevin Jacobs2021-02-041-5/+2
| | | | | | | | Bug 1654332 changed the way that NSS constructs Client Hello messages. `ssl_CalculatePaddingExtLen` now receives a `clientHelloLength` value that includes the 4B handshake header. This looks okay per the inline comment (which states that only the record header is omitted from the length), but the function actually assumes that the handshake header is also omitted. This patch removes the addition of the handshake header length. Those bytes are already included in the buffered CH. Differential Revision: https://phabricator.services.mozilla.com/D103934
* Bug 1689228 - Minor ECH -09 fixes for interop testing, fuzzing. r=mtKevin Jacobs2021-01-312-14/+16
| | | | | | | | | | | | | | | A few minor ECH -09 fixes for interop testing and fuzzing: - selfserv now takes a PKCS8 keypair for ECH. This is more maintainable and significantly less terrible than parsing the ECHConfigs and cobbling one together within selfserv (e.g. we can support other KEMs without modifying the server). - Get rid of the newline character in tstclnt retry_configs output. - Fuzzer fixes in tls13_HandleHrrCookie: - We shouldn't use internal_error when PK11_HPKE_ImportContext fails. Cookies are unprotected in fuzzer mode, so this can be expected to occur. - Only restore the application token when recovering hash state, otherwise the copy could happen twice, leaking one of the allocations. Differential Revision: https://phabricator.services.mozilla.com/D103247
* Bug 1674819 - Fixup a51fae403328, enum type may be signed. r=bbeurdoucheKevin Jacobs2021-01-251-1/+1
| | | | Differential Revision: https://phabricator.services.mozilla.com/D102964
* Bug 1681585 - Update ECH to Draft-09. r=mtKevin Jacobs2021-01-2516-595/+883
| | | | | | | | | | | | | This patch updates ECH implementation to draft-09. Changes of note are: - Acceptance signal derivation is now based on the handshake secret. - `config_id` hint changes from 32B to 8B, trial decryption added on the server. - Duplicate code in HRR cookie handling has been consolidated into `tls13_HandleHrrCookie`. - `ech_is_inner` extension is added, which causes a server to indicate ECH acceptance. - Per the above, support signaling ECH acceptance when acting as a backend server in split-mode (i.e. when there is no other local Encrypted Client Hello state). Differential Revision: https://phabricator.services.mozilla.com/D101049
* Bug 1678398 - Add Export/Import functions for HPKE context. r=mtKevin Jacobs2021-01-253-1/+302
| | | | | | | | | | | | | | | | This patch adds and exports two new HPKE functions: `PK11_HPKE_ExportContext` and `PK11_HPKE_ImportContext`, which are used to export a serialized HPKE context, then later reimport that context and resume Open and Export operations. Only receiver contexts are currently supported for export (see the rationale in pk11pub.h). One other change introduced here is that `PK11_HPKE_GetEncapPubKey` now works as expected on the receiver side. If the `wrapKey` argument is provided to the Export/Import functions, then the symmetric keys are wrapped with AES Key Wrap with Padding (SP800-38F, 6.3) prior to serialization. Differential Revision: https://phabricator.services.mozilla.com/D99277
* Bug 1678398 - Update HPKE to draft-07. r=mtKevin Jacobs2021-01-253-92/+100
| | | | | | | | | | | | This patch updates HPKE to draft-07. A few other minor changes are included: - Refactor HPKE gtests for increased parameterized testing. - Replace memcpy calls with PORT_Memcpy - Serialization tweaks to make way for context Export/Import (D99277). This should not be landed without an ECH update, as fixed ECH test vectors will otherwise fail to decrypt. Differential Revision: https://phabricator.services.mozilla.com/D99276
* Set version numbers to 3.62 BetaKevin Jacobs2021-01-223-6/+6
|
* Bug 1684300 - Disable legacy storage when compiled with NSS_DISABLE_DBM. r=mtKevin Jacobs2021-01-131-2/+1
| | | | Differential Revision: https://phabricator.services.mozilla.com/D101218
* Bug 1682863 - Revert nssSlot_IsTokenPresent to 3.58 after ongoing Fx hangs ↵Kevin Jacobs2020-12-221-30/+6
| | | | | | | | | | | | | | | | | | | | with slow PKCS11 devices. r=bbeurdouche This patch reverts the `nssSlot_IsTokenPresent` changes made in bug 1663661 and bug 1679290, restoring the version used in NSS 3.58 and earlier. It's not an actual `hg backout` because the comment in lib/dev/devt.h is worth keeping. While removing the nested locking did resolve the hang for some (most?) third-party modules, problems remain with some slower tokens after an even further relaxation of the locking, which defeats the purpose of addressing the races in the first place. The crash addressed by these patches was caused by the Intermediate Preloading Healer in Firefox, which has been disabled. We clearly have insufficient test coverage for third-party modules, and now that osclientcerts is enabled in Fx Nightly, any problems caused by these and similar changes is unlikely to be reported until Fx Beta, well after NSS RTM. I think the best option at this point is to simply revert NSS. Differential Revision: https://phabricator.services.mozilla.com/D100344
* Restore lost portion of the bleichenbacher timing batch that addressedRobert Relyea2020-12-222-6/+5
| | | | | review comments. All the review comments pertained to actual code comments, so this patch only affects the comments.
* Bug 1651411 New tlsfuzzer code can still detect timing issues in RSA operations.Robert Relyea2020-12-183-41/+313
| | | | | | | | | | | | | | | | | | | | | | | | This patch defeats Bleichenbacher by not trying to hide the size of the decrypted text, but to hide if the text succeeded for failed. This is done by generating a fake returned text that's based on the key and the cipher text, so the fake data is always the same for the same key and cipher text. Both the length and the plain text are generated with a prf. Here's the proposed spec the patch codes to: 1. Use SHA-256 to hash the private exponent encoded as a big-endian integer to a string the same length as the public modulus. Keep this value secret. (this is just an optimisation so that the implementation doesn't have to serialise the key over and over again) 2. Check the length of input according to step one of https://tools.ietf.org/html/rfc8017#section-7.2.2 3. When provided with a ciphertext, use SHA-256 HMAC(key=hash_from_step1, text=ciphertext) to generate the key derivation key 4. Use SHA-256 HMAC with key derivation key as the key and a two-byte big-endian iterator concatenated with byte string "length" with the big-endian representation of 2048 (0x0800) as the bit length of the generated string. - Iterate this PRF 8 times to generate a 256 byte string 5. initialise the length of synthetic message to 0 6. split the PRF output into 2 byte strings, convert into big-endian integers, zero-out high-order bits so that they have the same bit length as the octet length of the maximum acceptable message size (k-11), select the last integer that is no larger than (k-11) or remain at 0 if no integer is smaller than (k-11); this selection needs to be performed using a side-channel free operators 7. Use SHA-256 HMAC with key derivation key as the key and a two-byte big-endian iterator concatenated with byte string "message" with the big-endian representation of k*8 - use this PRF to generate k bytes of output (right-truncate last HMAC call if the number of generated bytes is not a multiple of SHA-256 output size) 8. perform the RSA decryption as described in step 2 of section 7.2.2 of rfc8017 9. Verify the EM message padding as described in step 3 of section 7.2.2 of rfc8017, but instead of outputting "decryption error", return the last l bytes of the "message" PRF, when l is the selected synthetic message length using the "length" PRF, make this decision and copy using side-channel free operation Differential Revision: https://phabricator.services.mozilla.com/D99843
* Bug 1682071 IKE Quick mode IPSEC give you incorrect keys if you are asking ↵Robert Relyea2020-12-171-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | for keys smaller than the hash size. IKE Appendix B fixes. This patch fixes 2 problems. If you run either ike v1 App B or quick mode asking for a key with length mod macsize = 0, you will generate an extra block that's not used and overwrites the end of the buffer. If you use quick mode, the function incorrectly subsets the existing key rather than generating a new key. This is correct behavior for Appendix B, where appendix B is trying to take a generated key and create a new longer key (with no diversification, just transform the key into something that's longer), so if you ask for a key less than or equal to, then you want to just subset the original key. In quick mode you are taking a base key and creating a set of new keys based on additional data, so you want to subset the generated data. This patch only subsets the original key if you aren't doing quickmode. Full test vectors have now been added for all ike modes in this patch as well (previously we depended on the FIPS CAVS tests to test ike, which covers basic IKEv1, IKEv1_psk, and IKEv2 but not IKEv1 App B and IKE v1 Quick mode). Differential Revision: https://phabricator.services.mozilla.com/D99569
* Set version numbers to 3.61 BetaKevin Jacobs2020-12-113-6/+6
|
* Bug 1680400 - Fix memory leak in PK11_UnwrapPrivKey. r=bbeurdoucheNSS_3_60_BETA1Kevin Jacobs2020-12-041-6/+6
| | | | Differential Revision: https://phabricator.services.mozilla.com/D98772
* Bug 1675523 - CKR_PUBLIC_KEY_INVALID has an incorrect value r=bbeurdoucheJ.C. Jones2020-12-031-1/+1
| | | | | | | | | | PKCS#11 v2.40: https://www.cryptsoft.com/pkcs11doc/STANDARD/include/v240/pkcs11t.h line 1150 jdk8u: https://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/eb7f437285a1/src/share/native/sun/security/pkcs11/wrapper/pkcs11t.h#l1155 Differential Revision: https://phabricator.services.mozilla.com/D97337
* Bug 1678189 - December 2020 batch of root changes, ↵Kevin Jacobs2020-12-011-2/+2
| | | | | | NSS_BUILTINS_LIBRARY_VERSION 2.46. r=bbeurdouche Differential Revision: https://phabricator.services.mozilla.com/D98268
* Bug 1678166 - Add NAVER Global Root Certification Authority root cert to ↵Kevin Jacobs2020-12-011-0/+174
| | | | | | NSS. r=bbeurdouche,KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D98196
* Bug 1670769 - Remove 10 GeoTrust, thawte, and VeriSign root certs from NSS. ↵Benjamin Beurdouche2020-12-011-1570/+0
| | | | | | r=kjacobs,KathleenWilson Differential Revision: https://phabricator.services.mozilla.com/D97956
* Bug 1674819 - Fix undefined shift when fuzzing r=bbeurdoucheKevin Jacobs2020-12-011-0/+7
| | | | | | In fuzzer mode, session tickets are serialized without any encryption or integrity protection. This leads to a post-deserialize UBSAN error when shifting by a fuzzed (large) authType value. A real NSS server will not produce these values. Differential Revision: https://phabricator.services.mozilla.com/D97803
* Bug 1678384 - Add a build flag to allow building nssckbi-testlib in m-c ↵Benjamin Beurdouche2020-11-302-1/+27
| | | | | | r=kjacobs Differential Revision: https://phabricator.services.mozilla.com/D98154
* Bug 1679290 - Don't hold slot lock when taking session lock r=bbeurdoucheKevin Jacobs2020-12-011-0/+14
| | | | | | | | [[ https://hg.mozilla.org/projects/nss/rev/0ed11a5835ac1556ff978362cd61069d48f4c5db | 0ed11a5835ac1556ff978362cd61069d48f4c5db ]] fixed a number of race conditions related to NSSSlot member accesses. Unfortunately the locking order that was imposed by that patch has been found to cause problems for at least one PKCS11 module, libnsspem. This patch drops nested locking in favor of unlocking/re-locking. While this isn't perfect, the original problem in bug 1663661 was that `slot->token` could become NULL, which we can easily check after reacquiring. Differential Revision: https://phabricator.services.mozilla.com/D98247
* Bug 1678990 - Use __ARM_FEATURE_CRYPTO for feature detection. r=bbeurdoucheMakoto Kato2020-11-251-0/+9
| | | | | | | | | | Actually, we have CPU feature detection for Linux and FreeBSD on aarch64 platform. But others don't. macOS doesn't has any CPU feature detection for ARM Crypto Extension, but toolchain default is turned on. So we should respect __ARM_FEATURE_CRYPTO. Differential Revision: https://phabricator.services.mozilla.com/D97909