Feature/verify cert chain and hashes#28
Merged
peppelinux merged 2 commits intoIdentityPython:mainfrom Jan 30, 2026
Merged
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
peppelinux
requested changes
Jan 30, 2026
Comment on lines
+134
to
+137
| # Verify certificate chain | ||
| from cryptography import x509 | ||
| from cryptography.hazmat.primitives import hashes | ||
| from cryptography.exceptions import InvalidSignature |
Member
There was a problem hiding this comment.
please move these in the top of this file,
we never nest import statements within class/object methods or function definitions
peppelinux
reviewed
Jan 30, 2026
Comment on lines
+134
to
+137
| # Verify certificate chain | ||
| from cryptography import x509 | ||
| from cryptography.hazmat.primitives import hashes | ||
| from cryptography.exceptions import InvalidSignature |
Member
There was a problem hiding this comment.
Suggested change
| # Verify certificate chain | |
| from cryptography import x509 | |
| from cryptography.hazmat.primitives import hashes | |
| from cryptography.exceptions import InvalidSignature | |
peppelinux
reviewed
Jan 30, 2026
| from pymdoccbor.exceptions import InvalidMdoc | ||
| from pymdoccbor.mdoc.issuersigned import IssuerSigned | ||
| from pymdoccbor.mdoc.exceptions import NoDocumentTypeProvided, NoSignedDocumentProvided | ||
|
|
Member
There was a problem hiding this comment.
Suggested change
| # Verify certificate chain | |
| from cryptography import x509 | |
| from cryptography.hazmat.primitives import hashes | |
| from cryptography.exceptions import InvalidSignature | |
peppelinux
approved these changes
Jan 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR in order to verify X.509 MSO signature and compare hashes.
this PR includes also optionnal error fields