Skip to content

x509-cert: make Name a new type over RdnSequence#1499

Merged
tarcieri merged 2 commits into
RustCrypto:masterfrom
baloo:baloo/x509-cert/name-newtype
Sep 10, 2024
Merged

x509-cert: make Name a new type over RdnSequence#1499
tarcieri merged 2 commits into
RustCrypto:masterfrom
baloo:baloo/x509-cert/name-newtype

Conversation

@baloo

@baloo baloo commented Sep 5, 2024

Copy link
Copy Markdown
Member

This make FromStr documented way to build a name. This also exposes a set of getter methods to get elements from the name (CN, Org, ...).

see:

@baloo baloo force-pushed the baloo/x509-cert/name-newtype branch 5 times, most recently from 3a8da71 to d059733 Compare September 5, 2024 05:10
Comment thread x509-cert/src/name.rs

@str4d str4d left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't review the changes to tests, as I'm on my phone.

Comment thread x509-cert/src/name.rs Outdated
Comment thread x509-cert/src/name.rs Outdated
Comment thread x509-cert/src/name.rs
Comment thread x509-cert/src/name.rs Outdated
Comment thread x509-cert/src/name.rs Outdated
Comment thread x509-cert/src/name.rs Outdated
Comment thread x509-cert/src/name.rs Outdated
@baloo baloo force-pushed the baloo/x509-cert/name-newtype branch 2 times, most recently from b168e0d to d9fbfc4 Compare September 5, 2024 23:07
@baloo baloo marked this pull request as draft September 5, 2024 23:10
@baloo baloo force-pushed the baloo/x509-cert/name-newtype branch 3 times, most recently from 94ddacf to 32615dd Compare September 6, 2024 05:52
@baloo baloo marked this pull request as ready for review September 6, 2024 05:52
@baloo

baloo commented Sep 6, 2024

Copy link
Copy Markdown
Member Author

I guess there would be value in a builder for name, but this PR is already large enough.

@baloo baloo force-pushed the baloo/x509-cert/name-newtype branch 2 times, most recently from cd16b39 to cb27b48 Compare September 6, 2024 16:06
@tarcieri

tarcieri commented Sep 8, 2024

Copy link
Copy Markdown
Member

@baloo some merge conflicts in the tests.

Edit: oof, a lot more now, sorry. I'm done for now.

This make `FromStr` documented way to build a name.
This also exposes a set of getter methods to get elements from the name
(CN, Org, ...).
@baloo baloo force-pushed the baloo/x509-cert/name-newtype branch from cb27b48 to 593176c Compare September 9, 2024 17:47
@tarcieri

Copy link
Copy Markdown
Member

Going to merge this both as an improvement and to avoid additional merge conflicts

@tarcieri tarcieri merged commit 6ed9934 into RustCrypto:master Sep 10, 2024
@baloo baloo deleted the baloo/x509-cert/name-newtype branch September 10, 2024 02:02
baloo added a commit to baloo/formats that referenced this pull request Jul 6, 2026
Added

- Serial number generator ([RustCrypto#1270])
- `DecodeValue` for `x509_cert::time::Time` ([RustCrypto#1986])
- `FromStr` for `x509_cert::time::Time` ([RustCrypto#1961])
- impl `Hash` for `Name` ([RustCrypto#1764])
- impl `Ord` for `CrlReason` ([RustCrypto#1869])
- `DirectoryString::BmpString` ([RustCrypto#1794])
- `Crl` builder ([RustCrypto#1759])
- `Time::now` method ([RustCrypto#1761])
- `Validity::infinity` helper ([RustCrypto#1528])
- `Validity::new` method ([RustCrypto#1529])
- Re-export `spki` types without `*Owned` suffixes ([RustCrypto#1534])
- `x509_cert::builder::AsyncBuilder` using `AsyncSigner` ([RustCrypto#1280])

Changed

- Decompose `AsExtension` into `Criticality + AsExtension` ([RustCrypto#2109])
- Improve extension API flexibility and ergonomics ([RustCrypto#2120])
- Expose `Profile` in the `CrlBuilder` ([RustCrypto#1870])
- Ensure a serial number can be stored in a database ([RustCrypto#1868])
- Move the CSR builder `x509_cert::request` ([RustCrypto#1581])
- Rename `x509_cert::builder::Profile` to `BuilderProfile` ([RustCrypto#1514] && [RustCrypto#1517])
- `Name` is now a new type over `RdnSequence` ([RustCrypto#1499])
- make `RelativeDistinguishedName` fields private ([RustCrypto#1510])
- make `RdnSequence` fields private ([RustCrypto#1508])
- make (Tbs)`CertificateInner` fields private ([RustCrypto#1505])
- rename helpers to `get_extension`/`filter_extensions` ([RustCrypto#1497])
- `check_name_encoding` now allow extraneous components ([RustCrypto#1447])
- Accept RFC-invalid certificates as TrustAnchors ([RustCrypto#1403])

- Edition changed to 2024 and MSRV bumped to 1.85 ([RustCrypto#1689])
- Bump `rand` to `v0.10` ([RustCrypto#2212])
- Bump `der` to `v0.8` ([RustCrypto#2234])
- Bump `digest` to `v0.11` ([RustCrypto#2237])
- Bump `sha2` to `v0.11` ([RustCrypto#2273])
- Bump `spki` to `v0.8` ([RustCrypto#2277])
- Bump `signature` to `v3` ([RustCrypto#2326])

Fixed

- Converting from `SystemTime` should use `UtcTime` if date <= 2049 ([RustCrypto#1969])
- Underflow on empty input in `Certificate::load_pem_chain` ([RustCrypto#1965])
- Domain validated should accept CNs ([RustCrypto#1815])
- Serialization of email addresses ([RustCrypto#1425])

Removed

- Std requirement for `x509_cert::builder` ([RustCrypto#1709])
- `RelativeDistinguishedName::encode_from_string` ([RustCrypto#1509])

[RustCrypto#1270]: RustCrypto#1270
[RustCrypto#1280]: RustCrypto#1280
[RustCrypto#1403]: RustCrypto#1403
[RustCrypto#1425]: RustCrypto#1425
[RustCrypto#1447]: RustCrypto#1447
[RustCrypto#1497]: RustCrypto#1497
[RustCrypto#1499]: RustCrypto#1499
[RustCrypto#1505]: RustCrypto#1505
[RustCrypto#1508]: RustCrypto#1508
[RustCrypto#1509]: RustCrypto#1509
[RustCrypto#1510]: RustCrypto#1510
[RustCrypto#1514]: RustCrypto#1514
[RustCrypto#1517]: RustCrypto#1517
[RustCrypto#1528]: RustCrypto#1528
[RustCrypto#1529]: RustCrypto#1529
[RustCrypto#1534]: RustCrypto#1534
[RustCrypto#1581]: RustCrypto#1581
[RustCrypto#1689]: RustCrypto#1689
[RustCrypto#1709]: RustCrypto#1709
[RustCrypto#1759]: RustCrypto#1759
[RustCrypto#1761]: RustCrypto#1761
[RustCrypto#1764]: RustCrypto#1764
[RustCrypto#1794]: RustCrypto#1794
[RustCrypto#1815]: RustCrypto#1815
[RustCrypto#1868]: RustCrypto#1868
[RustCrypto#1869]: RustCrypto#1869
[RustCrypto#1870]: RustCrypto#1870
[RustCrypto#1961]: RustCrypto#1961
[RustCrypto#1965]: RustCrypto#1965
[RustCrypto#1969]: RustCrypto#1969
[RustCrypto#1986]: RustCrypto#1986
[RustCrypto#2109]: RustCrypto#2109
[RustCrypto#2120]: RustCrypto#2120
[RustCrypto#2212]: RustCrypto#2212
[RustCrypto#2234]: RustCrypto#2234
[RustCrypto#2237]: RustCrypto#2237
[RustCrypto#2273]: RustCrypto#2273
[RustCrypto#2277]: RustCrypto#2277
[RustCrypto#2326]: RustCrypto#2326
@baloo baloo mentioned this pull request Jul 6, 2026
baloo added a commit to baloo/formats that referenced this pull request Jul 6, 2026
Added

- Serial number generator ([RustCrypto#1270])
- `DecodeValue` for `x509_cert::time::Time` ([RustCrypto#1986])
- `FromStr` for `x509_cert::time::Time` ([RustCrypto#1961])
- impl `Hash` for `Name` ([RustCrypto#1764])
- impl `Ord` for `CrlReason` ([RustCrypto#1869])
- `DirectoryString::BmpString` ([RustCrypto#1794])
- `Crl` builder ([RustCrypto#1759])
- `Time::now` method ([RustCrypto#1761])
- `Validity::infinity` helper ([RustCrypto#1528])
- `Validity::new` method ([RustCrypto#1529])
- Re-export `spki` types without `*Owned` suffixes ([RustCrypto#1534])
- `x509_cert::builder::AsyncBuilder` using `AsyncSigner` ([RustCrypto#1280])

Changed

- Decompose `AsExtension` into `Criticality + AsExtension` ([RustCrypto#2109])
- Improve extension API flexibility and ergonomics ([RustCrypto#2120])
- Expose `Profile` in the `CrlBuilder` ([RustCrypto#1870])
- Ensure a serial number can be stored in a database ([RustCrypto#1868])
- Move the CSR builder `x509_cert::request` ([RustCrypto#1581])
- Rename `x509_cert::builder::Profile` to `BuilderProfile` ([RustCrypto#1514] && [RustCrypto#1517])
- `Name` is now a new type over `RdnSequence` ([RustCrypto#1499])
- make `RelativeDistinguishedName` fields private ([RustCrypto#1510])
- make `RdnSequence` fields private ([RustCrypto#1508])
- make (Tbs)`CertificateInner` fields private ([RustCrypto#1505])
- rename helpers to `get_extension`/`filter_extensions` ([RustCrypto#1497])
- `check_name_encoding` now allow extraneous components ([RustCrypto#1447])
- Accept RFC-invalid certificates as TrustAnchors ([RustCrypto#1403])

- Edition changed to 2024 and MSRV bumped to 1.85 ([RustCrypto#1689])
- Bump `rand` to `v0.10` ([RustCrypto#2212])
- Bump `der` to `v0.8` ([RustCrypto#2234])
- Bump `digest` to `v0.11` ([RustCrypto#2237])
- Bump `sha2` to `v0.11` ([RustCrypto#2273])
- Bump `spki` to `v0.8` ([RustCrypto#2277])
- Bump `signature` to `v3` ([RustCrypto#2326])

Fixed

- Converting from `SystemTime` should use `UtcTime` if date <= 2049 ([RustCrypto#1969])
- Underflow on empty input in `Certificate::load_pem_chain` ([RustCrypto#1965])
- Domain validated should accept CNs ([RustCrypto#1815])
- Serialization of email addresses ([RustCrypto#1425])

Removed

- Std requirement for `x509_cert::builder` ([RustCrypto#1709])
- `RelativeDistinguishedName::encode_from_string` ([RustCrypto#1509])

[RustCrypto#1270]: RustCrypto#1270
[RustCrypto#1280]: RustCrypto#1280
[RustCrypto#1403]: RustCrypto#1403
[RustCrypto#1425]: RustCrypto#1425
[RustCrypto#1447]: RustCrypto#1447
[RustCrypto#1497]: RustCrypto#1497
[RustCrypto#1499]: RustCrypto#1499
[RustCrypto#1505]: RustCrypto#1505
[RustCrypto#1508]: RustCrypto#1508
[RustCrypto#1509]: RustCrypto#1509
[RustCrypto#1510]: RustCrypto#1510
[RustCrypto#1514]: RustCrypto#1514
[RustCrypto#1517]: RustCrypto#1517
[RustCrypto#1528]: RustCrypto#1528
[RustCrypto#1529]: RustCrypto#1529
[RustCrypto#1534]: RustCrypto#1534
[RustCrypto#1581]: RustCrypto#1581
[RustCrypto#1689]: RustCrypto#1689
[RustCrypto#1709]: RustCrypto#1709
[RustCrypto#1759]: RustCrypto#1759
[RustCrypto#1761]: RustCrypto#1761
[RustCrypto#1764]: RustCrypto#1764
[RustCrypto#1794]: RustCrypto#1794
[RustCrypto#1815]: RustCrypto#1815
[RustCrypto#1868]: RustCrypto#1868
[RustCrypto#1869]: RustCrypto#1869
[RustCrypto#1870]: RustCrypto#1870
[RustCrypto#1961]: RustCrypto#1961
[RustCrypto#1965]: RustCrypto#1965
[RustCrypto#1969]: RustCrypto#1969
[RustCrypto#1986]: RustCrypto#1986
[RustCrypto#2109]: RustCrypto#2109
[RustCrypto#2120]: RustCrypto#2120
[RustCrypto#2212]: RustCrypto#2212
[RustCrypto#2234]: RustCrypto#2234
[RustCrypto#2237]: RustCrypto#2237
[RustCrypto#2273]: RustCrypto#2273
[RustCrypto#2277]: RustCrypto#2277
[RustCrypto#2326]: RustCrypto#2326
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

x509-cert: Make it easier to work with the contents of a Name

3 participants