I noticed a possible issue with x509::Extension, but I haven't investigated it completely. Specifically, Extension::critical seems to not emit any DER for that field when serialized if the value of the field is false. This means that if you deserialize and the re-serialize an Extension that contains the field in the DER, you will not be able to re-produce the original DER. This might cause problems with signature validations. Perhaps Option<bool> might be the better choice here?