RustCrypto / formats

Cryptography-related format encoders/decoders: DER, PEM, PKCS, PKIX
229 stars 122 forks source link

const-oid: make `ObjectIdentifier`'s size const generic #1300

Closed tarcieri closed 6 months ago

tarcieri commented 6 months ago

Previously the v0.10-pre release series has attempted to make ObjectIdentifier generic around a backing buffer containing the BER encoding and bounded on AsRef<[u8]>.

This approach has a drawback though: we can't use derived PartialEq/Eq, which means it isn't possible to use in match expressions anymore, an ergonomics drawback noted in #1293, with the implementation reverted in #1299.

An alternative way to go for what it was trying to implement: an ObjectIdentifierRef backed by a &[u8] is to use a separate struct. With that approach, there could be overlapping PartialEq/Eq impls that would allow the two to be compared.

As a start towards going that route, this gets rid of the generic backing buffer and opts instead to make the struct const generic around its size with a default.