úÎ30,Üi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh unknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Inferedunknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Infered     unknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Infered    None ijklmnopqrs ijklmnopqrs ijklmnopqrsunknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Infered!?key usage flag that is found in the key usage extension field.  !"#$%&'()*+,tuvwx !"#$%&'()*+,+ !*)('&%$#", ! *)('&%$#"+,tuvwx Safe-Infered/Certificate Version 0Certificate Serial number 1 Certificate Signature algorithm 2Certificate Issuer DN 3Certificate Subject DN 4Certificate Validity period 5Certificate Public key 6Certificate Extensions @unrecognized format A ECDSA format not done yet FIXME B,DH format with (p,g,q,j,(seed,pgenCounter)) CDSA public key DRSA public key \Kparse header structure of a x509 certificate. the structure the following:  Version  Serial Number  Algorithm ID  Issuer  Validity  Not Before  Not After  Subject  Subject Public Key Info  Public Key Algorithm  Subject Public Key - Issuer Unique Identifier (Optional) (>= 2) - Subject Unique Identifier (Optional) (>= 2) ! Extensions (Optional) (>= v3) 1-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]K !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]1EGFNUTSRQPOHMLKJI?DCBA@8>=<;:97-./0123456VYXWZ[\]- ./012345678>=<;:9?DCBA@EGFHMLKJINUTSRQPOVWXYZ[\]unknown experimental#Vincent Hanquez <vincent@snarc.org> Safe-Infered`)the certificate part of a X509 structure a?a cache of the raw representation of the x509 part for signing I since encoding+decoding might not result in the same data being signed. b5a cache of the raw representation of the whole x509. cthe signature algorithm used. dthe signature. e,get signing data related to a X509 message, ? - which is either the cached data or the encoded certificate f!decode an X509 from a bytestring # - the structure is the following:  - Certificate % - Certificate Signature Algorithm  - Certificate Signature g+encode a X509 certificate to a bytestring ^_`abcdefgyM !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU^_`abcdefg3^_`abcdEGFNUTSRQPOHMLKJI?DCBA@8>=<;:97-./0123456efg^_`abcdefgy  unix only experimental#Vincent Hanquez <vincent@snarc.org> Safe-Inferedz{hz{hz{hgood experimental#Vincent Hanquez <vincent@snarc.org> Safe-Inferedhh|        !"#$%&'()*+,-.//0123456789:;<=>?@ABCDEFGFHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdef ghijklmnopqrstuvwx y z{certificate-1.1.0Data.Certificate.KeyRSAData.Certificate.KeyDSAData.Certificate.PEMData.Certificate.X509.ExtData.Certificate.X509.CertData.Certificate.X509System.Certificate.X509Data.Certificate.X509.InternalSystem.Certificate.X509.Unix decodePrivate encodePrivatePrivateversionprivpubpqg parsePEMsfindPEM parsePEMCertparsePEMCertReqparsePEMKeyRSAparsePEMKeyDSA parsePEMKeyExtAuthorityKeyIdExtSubjectAltNameExtSubjectKeyId ExtKeyUsageExtBasicConstraints ExtensionextOID extEncode extDecodeExtKeyUsageFlagKeyUsage_decipherOnlyKeyUsage_encipherOnlyKeyUsage_cRLSignKeyUsage_keyCertSignKeyUsage_keyAgreementKeyUsage_dataEnciphermentKeyUsage_keyEnciphermentKeyUsage_nonRepudiationKeyUsage_digitalSignature ExtensionRaw extensionGet Certificate certVersion certSerialcertSignatureAlg certIssuerDN certSubjectDN certValidity certPubKeycertExtensions ASN1StringASN1StringTypeT61IA5BMPUniv PrintableUTF8PubKey PubKeyUnknown PubKeyECDSAPubKeyDH PubKeyDSA PubKeyRSA SignatureALGSignatureALG_Unknown PubKeyALGPubKeyALG_Unknown PubKeyALG_DHPubKeyALG_ECDSA PubKeyALG_DSA PubKeyALG_RSAHashALG HashSHA512 HashSHA384 HashSHA256 HashSHA224HashSHA1HashMD5HashMD2 oidCommonName oidCountryoidOrganizationoidOrganizationUnitoidSigsigOIDparseCertificateencodeCertificateHeaderX509x509Certx509CachedSigningDatax509CachedDatax509SignatureALG x509SignaturegetSigningDatadecodeCertificateencodeCertificatefindCertificate ParseASN1OID runParseASN1getNextgetNextContaineronNextContainergetNextContainerMaybeonNextContainerMaybehasNext asn1ContainermakeASN1Sequence$fExtensionExtAuthorityKeyId$fExtensionExtSubjectAltName$fExtensionExtSubjectKeyId$fExtensionExtKeyUsage$fExtensionExtBasicConstraints$fEqX509 getSystemPathreadAll