-
Notifications
You must be signed in to change notification settings - Fork 20
Feature/verify cert chain and hashes #28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/verify cert chain and hashes #28
Conversation
- Add optional 'errors' parameter to MobileDocument.__init__() - Include 'errors' field in dump() output when present - Add comprehensive test suite (test_09_errors_field.py) - Fixes TypeError when parsing Device Response with status != 0 - ISO 18013-5 compliance for error handling - All tests pass (36/36) - fix: handle simple values in list elements within _decode_claims When elementValue is a list (e.g., nationality: ['FR']), elements can be simple values (strings, numbers) instead of dicts. Added check to handle both cases instead of assuming all elements have .items() method. See docs/FIX_ERRORS_FIELD.md for detailed documentation
feat: add element hash verification against MSO valueDigests - Add trusted_root_certs parameter to verify() methods - Verify DS certificate is signed by trusted IACA root - Verify certificate validity dates - Store verified root certificate in MsoVerifier.verified_root - Backward compatible: skips validation if trusted_root_certs is None - Add comprehensive documentation in docs/certificate_chain_verification.md - Add verify_element_hashes() method to MsoVerifier - Verify SHA-256 hash of each IssuerSignedItem against MSO - Add verify_hashes parameter to verify() methods (default: True) - Store verification results in MobileDocument.hash_verification - Handle CBORTag objects properly when computing hashes - Update documentation with hash verification details and examples
| # Verify certificate chain | ||
| from cryptography import x509 | ||
| from cryptography.hazmat.primitives import hashes | ||
| from cryptography.exceptions import InvalidSignature |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please move these in the top of this file,
we never nest import statements within class/object methods or function definitions
| # Verify certificate chain | ||
| from cryptography import x509 | ||
| from cryptography.hazmat.primitives import hashes | ||
| from cryptography.exceptions import InvalidSignature |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # Verify certificate chain | |
| from cryptography import x509 | |
| from cryptography.hazmat.primitives import hashes | |
| from cryptography.exceptions import InvalidSignature | |
| from pymdoccbor.exceptions import InvalidMdoc | ||
| from pymdoccbor.mdoc.issuersigned import IssuerSigned | ||
| from pymdoccbor.mdoc.exceptions import NoDocumentTypeProvided, NoSignedDocumentProvided | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # Verify certificate chain | |
| from cryptography import x509 | |
| from cryptography.hazmat.primitives import hashes | |
| from cryptography.exceptions import InvalidSignature | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed in new PR
PR in order to verify X.509 MSO signature and compare hashes.
this PR includes also optionnal error fields