Commit graph

2517 commits

Author SHA1 Message Date
William Woodruff
d643b04eb7
Add top-level ServerVerifier.verify API (#9805)
* Add top-level ServerVerifier.verify API

This is a breakout from #8873, with just the interface/types and
a `NotImplementedError` stub.

Signed-off-by: William Woodruff <william@trailofbits.com>

* verification: move Store into PolicyBuilder/ServerVerifier

Signed-off-by: William Woodruff <william@trailofbits.com>

* verification: docs

Signed-off-by: William Woodruff <william@trailofbits.com>

* lintage

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: document ServerVerifier.store

Signed-off-by: William Woodruff <william@trailofbits.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
2023-10-31 15:03:35 -04:00
Alex Gaynor
1cb847a597
Updates to dev docs (#9780)
- Stop talking about black
- Use type annotations in examples
2023-10-26 00:49:20 +00:00
Paul Kehrer
9d41ee63f0
test on sonoma on M1 (#9777)
* test on sonoma on M1

* sonoma is also a word
2023-10-25 17:39:20 -04:00
Alex Gaynor
a87d041ab7
Bump default CI job to 3.12 (#9697) 2023-10-05 07:39:31 -05:00
Facundo Tuesca
566fcd6c4d
Deprecate naive datetime x509 APIs (#9667)
* Deprecate naive datetime x509 APIs

* Add missing tests for timezone-aware x509 APIs

* Document the deprecation of the naive datetime APIs
2023-09-29 09:58:48 -05:00
Facundo Tuesca
ce94de03e8
Add timezone-aware API variants for x509 (#9661)
* Add timezone-aware API variants for x509

* Add documentation for timezone-aware APIs
2023-09-28 10:45:30 -05:00
Alex Gaynor
699449302e
More CF domains making linkcheck not work (#9626)
* More CF domains making linkcheck not work

* Update conf.py
2023-09-19 06:51:40 -07:00
William Woodruff
73d070e853
Path validation: builder/verifier API skeletons (#9405)
* src, tests: flatten all changes

Signed-off-by: William Woodruff <william@trailofbits.com>

validation: remove Profile abstract from public APIs

One step towards removing it entirely

Signed-off-by: William Woodruff <william@trailofbits.com>

policy: disambiguate references

Signed-off-by: William Woodruff <william@trailofbits.com>

policy: remove separate rfc5280 profile

Signed-off-by: William Woodruff <william@trailofbits.com>

policy: remove profile abstraction entirely

Signed-off-by: William Woodruff <william@trailofbits.com>

rust: permitted_algorithms filtering

Signed-off-by: William Woodruff <william@trailofbits.com>

verify: simplify policy API substantially

No more manual monomorphization.

Signed-off-by: William Woodruff <william@trailofbits.com>

src, tests: remove verification code

Signed-off-by: William Woodruff <william@trailofbits.com>

validation: remove more validation code

Signed-off-by: William Woodruff <william@trailofbits.com>

* cryptography, rust: lintage

Signed-off-by: William Woodruff <william@trailofbits.com>

* cryptography, rust: lintage, add Policy.subject API

Signed-off-by: William Woodruff <william@trailofbits.com>

* src, tests: initial PolicyBuilder tests

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: Policy.validation_time getter

Signed-off-by: William Woodruff <william@trailofbits.com>

* push Store into rust

Signed-off-by: William Woodruff <william@trailofbits.com>

* cleanup, fixup

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: lintage

Signed-off-by: William Woodruff <william@trailofbits.com>

* src: lintage

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: fix linter warning

* policy: apply the relevant parts of trail-of-forks/cryptography/pull/3

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: typo

Signed-off-by: William Woodruff <william@trailofbits.com>

* fixup type hints

Signed-off-by: William Woodruff <william@trailofbits.com>

* drop dep

Not used, yet.

Signed-off-by: William Woodruff <william@trailofbits.com>

* Revert "drop dep"

This reverts commit a5154e1245e666a79838cd73784884fad6743e7f.

* mod: remove permits_* bodies

Will include these in a subsequent PR.

Signed-off-by: William Woodruff <william@trailofbits.com>

* src: drop certificate helpers as well

Not needed yet.

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: remove unneeded explicit lifetimes

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: builder API coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: more coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* type hints

Signed-off-by: William Woodruff <william@trailofbits.com>

* unused derives

Signed-off-by: William Woodruff <william@trailofbits.com>

* validation: more coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: more cov

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: more coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: add some known bad testcases

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* validation: remove trust_store

Not yet used.

Signed-off-by: William Woodruff <william@trailofbits.com>

* ops: add NullOps test

Signed-off-by: William Woodruff <william@trailofbits.com>

* x509: reimplement verify_directly_issued_by via CryptoOps

Tests fail, but this gets the right coverage.

Signed-off-by: William Woodruff <william@trailofbits.com>

* ops: use results

Signed-off-by: William Woodruff <william@trailofbits.com>

* src, tests: last cov, hopefully

Signed-off-by: William Woodruff <william@trailofbits.com>

* test: lintage

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: fill in API docs

Signed-off-by: William Woodruff <william@trailofbits.com>

* rust: uniform imports

Signed-off-by: William Woodruff <william@trailofbits.com>

* minimize for MVP

No configurable profile, Web PKI only.

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: remove old NOTE

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: remove another old NOTE

Signed-off-by: William Woodruff <william@trailofbits.com>

* src, tests: fixup tests

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: cleanup

Signed-off-by: William Woodruff <william@trailofbits.com>

* src, tests: drop support for missing subjects

As part of the MVP.

Signed-off-by: William Woodruff <william@trailofbits.com>

* profile: remove old comments

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove some verify-adjacent APIs

Paring down for review.

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove more verify-adjacent APIs

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove some From impls

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove rfc5280 constructor

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: declutter diff

Signed-off-by: William Woodruff <william@trailofbits.com>

* profile: prune even more state

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove old TODO

Signed-off-by: William Woodruff <william@trailofbits.com>

* policy: remove PolicyError

For now.

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: typo

Signed-off-by: William Woodruff <william@trailofbits.com>

* ops: remove NullOps

Signed-off-by: William Woodruff <william@trailofbits.com>

* rust: remove dev-dep, don't use import

Signed-off-by: William Woodruff <william@trailofbits.com>

* rust: fix IP_ADDRESS rename

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: clarify time behavior

Signed-off-by: William Woodruff <william@trailofbits.com>

* rename webpki() to new()

Since it doesn't actually do anything WebPKI related at the moment.

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: relocate

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: FixedPolicy -> PyCryptoPolicy

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: simplify SubjectOwner substantially

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: remove getter helper

Signed-off-by: William Woodruff <william@trailofbits.com>

* verify: reloc TODO

Signed-off-by: William Woodruff <william@trailofbits.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
Co-authored-by: Facundo Tuesca <facundo.tuesca@trailofbits.com>
2023-09-16 20:56:11 +00:00
Alex Gaynor
d35e0f8be8
Be clear that x509.verification is not yet covered by our policies (#9609)
* Be clear that x509.verification is not yet covered by our policies

* Update verification.rst
2023-09-15 13:24:16 -07:00
William Woodruff
3e411cf951
verification: add PolicyBuilder API (#9601)
* verification: add PolicyBuilder API

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: fix the docs build

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs: drop doc for `webpki()` classmethod

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs, src, test: refactoring

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: coverage

Signed-off-by: William Woodruff <william@trailofbits.com>

* docs, src, tests: rename `build_server_policy`

Signed-off-by: William Woodruff <william@trailofbits.com>

* Update docs/x509/verification.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

* Update docs/x509/verification.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

* verification: feedback

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: fix test

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: fix some more

Signed-off-by: William Woodruff <william@trailofbits.com>

* Update docs/x509/verification.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>
2023-09-14 17:36:01 +00:00
McCoy Patiño
da21e9670b
Add algorithm/MGF properties to asymmetric paddings (#9582)
* Add properties

* Update documentation

* Add tests

* Line length; Expose MGF class

* Remove unnecessary flags
2023-09-11 19:58:01 -04:00
Paul Kehrer
6bdf404054
support PSS signing for CSRs (#9514)
* support PSS signing for CSRs

* doc fix
2023-08-28 23:24:33 +00:00
Alex Gaynor
466d41ce72
Remove FAQ that's no longer up to date (#9484)
I don't think this is the right error message, and it hasn't been for a while
2023-08-22 07:05:13 -07:00
Alex Gaynor
a8dd927f04
Fix ruff on main (#9443) 2023-08-17 14:11:09 +00:00
Facundo Tuesca
b660044dce
Add test vectors for ChaCha20 counter overflow (#9221)
* Adapt ChaCha20 test vectors to 64-bit counter

* Add ChaCha20 test vectors for counter overflow

These vectors test the behavior during counter overflow. Since
different implementations use different counter sizes (e.g. OpenSSL
uses a 64-bit counter, whereas BoringSSL uses a 32-bit counter),
it's important to ensure that the behavior during counter overflow
is consistent between implementations.

These vectors take into account both 32-bit and 64-bit overflows.
2023-08-17 08:54:35 -05:00
William Woodruff
f4362f4e6a
docs: add Store docs (#9416)
* docs: add Store docs

Signed-off-by: William Woodruff <william@trailofbits.com>

* src, tests: don't allow empty stores

Signed-off-by: William Woodruff <william@trailofbits.com>

* Update docs/x509/verification.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>
2023-08-14 18:48:27 +00:00
Paul Kehrer
f7e629f70a
tested platforms update (#9358) 2023-08-04 23:38:13 -04:00
William Woodruff
41d89f1ae6
noxfile, docs: fix posargs handling (#9354)
* noxfile, docs: fix posargs handling

Signed-off-by: William Woodruff <william@trailofbits.com>

* Update docs/development/getting-started.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>
2023-08-04 16:48:15 +00:00
Alex Gaynor
e718a49097
Raise MSRV to 1.63.0 (#9043) 2023-08-03 11:15:07 +12:00
Jean Paul Galea
caeafe6c4a
docs: fix broken link to https://ed25519.cr.yp.to/software.html (#9338) 2023-08-02 19:02:56 +12:00
Paul Kehrer
1961fdb264
update pypy supported versions in the docs (#9318)
* update tested pypy version

* update pypy supported version
2023-07-31 17:41:15 -04:00
Paul Kehrer
1b4bbea008
tolerate (with warning) invalid DSA params encoding in X.509 (#9271)
fixes #9253
2023-07-20 17:10:15 -04:00
Paul Kehrer
b2abc35bda
fix another NIST link (#9270) 2023-07-20 20:27:44 +00:00
Paul Kehrer
c5c99b2d1c
fix a link from the NIST CSRC migration (#9267) 2023-07-20 06:07:58 -04:00
Alex Gaynor
10813b0bed
Finish replacing utcnow (#9260)
refs #9186
2023-07-18 12:37:00 +00:00
Alex Gaynor
e949b2e15c
Prepare for new ruff release (#9227) 2023-07-12 19:40:26 -07:00
jeanluc
1ca7adc97b
Fix encoding of SSH certs with critical options (#9208)
* Add tests for issue #9207

* Fix encoding of SSH certs with critical options

* Test unexpected additional values for crit opts/exts
2023-07-10 11:50:49 -05:00
Magnus Watn
50932e2f15
Add organizationIdentifier Name OID (2.5.4.97) (#9206) 2023-07-10 07:05:11 -04:00
Paul Kehrer
b5709f7d18
update linkcheck (#9193) 2023-07-07 16:32:58 +00:00
Facundo Tuesca
f4b7707af5
Fixes for ChaCha20 documentation (#9192)
* Restore missing section from ChaCha20 docs

This change fixes the indentation of a note inside the ChaCha20
section of the docs, which caused the note to not render in the
resulting HTML.

* Fix ChaCha20 docs to specify non RFC-compliance

Currently, cryptography uses OpenSSL's ChaCha20 implementation,
which is based on the original algorithm designed by Daniel J.
Bernstein rather than the later standardized version (RFC 7539).

Since the documentation does not reflect this (it describes the RFC
version of the algorithm, rather than the original version we use),
this change fixes that.

* Remove random counter from ChaCha20 example docs

This changes the ChaCha20 example in the documentation to use a
normal user-defined variable for the counter part of the nonce,
rather than a randomized counter.
2023-07-07 10:59:23 -05:00
Alex Gaynor
c52e192ed8
Update link (#9102) 2023-06-21 06:22:44 +02:00
Alex Gaynor
0f5071e251
Test against Debian Trixie (#9062) 2023-06-13 01:11:20 +00:00
Alex Gaynor
2baf62196f
fixes #9048 -- document where to find known vulnerabilities (#9055) 2023-06-10 14:12:44 -06:00
Alex Gaynor
bab5cecd63
Simplify debian rust instructions now that bookworm is out (#9050) 2023-06-10 13:26:33 -06:00
Paul Kehrer
1355c2e460
tolerate NULL params in ECDSA SHA2 AlgorithmIdentifier (#9002)
* tolerate NULL params in ECDSA SHA2 AlgorithmIdentifier

Java 11 does this incorrectly. It was fixed in Java16+ and they are
planning to do a backport, but we'll need to tolerate this invalid
encoding for a while.

* test both inner and outer
2023-05-31 23:21:28 -04:00
Paul Kehrer
31436a4866
admit to the existence of nuance in HKDF (#8987)
* admit to the existence of nuance in HKDF

* Update docs/hazmat/primitives/key-derivation-functions.rst

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>

---------

Co-authored-by: Alex Gaynor <alex.gaynor@gmail.com>
2023-05-30 02:32:57 +00:00
Paul Kehrer
93c96b777a
allow null params in AlgorithmIdentifiers with SHA hash function OIDs (#8974)
RFC 4055 section 2.1 states "All implementations MUST accept both
NULL and absent parameters as legal and equivalent encodings".

It also makes some somewhat conflicting statements after that, but
LibreSSL omits the null params for PSS, and OpenSSL parses this
without issue so tolerance it is.
2023-05-27 10:07:20 -04:00
Alex Gaynor
5b7dd82561
Fix gitlab URLs for linkcheck (#8938) 2023-05-17 00:39:18 +00:00
Alex Gaynor
cff3c8fee7
There are wheels for basically all linux distros now (#8923) 2023-05-15 04:36:57 +08:00
Alex Gaynor
cc4555394d
Remove linkcheck skip (#8915)
It now has a trusted issuer
2023-05-13 03:38:54 +08:00
Paul Kehrer
1ef3cdb616
support X.509 certificate PSS signing (#8888)
* support X.509 certificate PSS signing

no CSR, CRL, etc

* handle PSS.(MAX_LENGTH, DIGEST_LENGTH), review feedback

* name the kwarg

* test improvements

* skip if sha3 isn't supported
2023-05-10 21:09:56 -04:00
Paul Kehrer
cfee3c85a7
add RSA PSS SHA1 hash algorithm + SHA1 MGF1 test vector (#8906) 2023-05-11 00:29:39 +00:00
Paul Kehrer
b436fafa7c
add signature_algorithm_parameters to certificate (#8795)
this allows easier verification of cert signatures, but more
specifically allows PSS signature verification
2023-05-07 20:26:45 +00:00
Paul Kehrer
0f2b72bb12
invalid visible string support (#8884)
* invalid visible string support

this allows utf8 in visiblestring, which is not valid DER. we raise a
warning when this happens, but allow it since belgian eIDs, among
others, have encoding errors. Belgium fixed this by 2021 (and possibly
earlier), but their eID certificates have 10 year validity.

* review comments

* clippy
2023-05-07 16:01:33 +00:00
Harmin Parra Rueda
bbea31b68d
Fix for #8854 (#8855)
* Fix for #8854

Fix for issue #8854

* Fix for issue #8854

Fix for issue #8854

* versionadded

---------

Co-authored-by: Paul Kehrer <paul.l.kehrer@gmail.com>
2023-05-03 17:34:54 -04:00
Alex Gaynor
f0f9c9cf6f
Switch the vectors pacakge to use modern pyproject.toml (#8853) 2023-05-02 09:09:19 -05:00
Alex Gaynor
9d06775cb1
Automate the version bump (#8828) 2023-04-26 08:21:39 -05:00
Alex Gaynor
eb995fed64
modernize intersphinx_mapping configuration (#8806) 2023-04-24 13:23:15 +00:00
Paul Kehrer
9425d2376b
add one more RSA PSS invalid test vector (#8798) 2023-04-23 20:22:50 +00:00
Paul Kehrer
5f3871e4df
add two RSA PSS certificate vectors that have invalid encodings (#8797)
* add two RSA PSS certificate vectors that have invalid encodings

The signatures on these vectors are not valid.

* spelling
2023-04-23 19:51:35 +00:00