,%S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRunknown experimental#Vincent Hanquez <vincent@snarc.org> S      unknown experimental#Vincent Hanquez <vincent@snarc.org> T   unknown experimental#Vincent Hanquez <vincent@snarc.org> UVWX YZ[\]^_`abcd Y\]^_`abcd Y\]^_`abcdM !Certificate Version "Certificate Serial number # Certificate Signature algorithm $Certificate Issuer DN %Certificate Subject DN &Certificate Validity period 'Certificate Public key (Certificate Extensions )*+,-./01efghijklmno23unrecognized format 4 ECDSA format not done yet FIXME 5,DH format with (p,g,q,j,(seed,pgenCounter)) 6DSA format with (pub, p, q, g) 7*RSA format with (len modulus, modulus, e) 89:;<=>?@ABCDpEFGHq,parse a RSA pubkeys from ASN1 encoded bits. = - return PubKeyRSA (len-modulus, modulus, e) if successful rstuvIwJxyz{|}~KKparse 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) L. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL.>DCBA@?8=<;:9276543+10/.-,*) !"#$%&'(EHGFIJKL. !"#$%&'( !"#$%&'()*+10/.-,,-./01276543345678=<;:99:;<=>DCBA@??@ABCDEFGHIJKLunknown experimental#Vincent Hanquez <vincent@snarc.org>MNO,get signing data related to a X509 message, ? - which is either the cached data or the encoded certificate P!decode an X509 from a bytestring # - the structure is the following:  - Certificate % - Certificate Signature Algorithm  - Certificate Signature Q+encode a X509 certificate to a bytestring + !"#$%&'()*+,-./0123456789:;<=>?@ABCDMNOPQ+MN>DCBA@?8=<;:9276543+10/.-,* !"#$%&'()OPQMNNOPQ unix only experimental#Vincent Hanquez <vincent@snarc.org> RRRgood experimental#Vincent Hanquez <vincent@snarc.org>RR          !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOOPQRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~certificate-0.9.1Data.Certificate.KeyRSAData.Certificate.KeyDSAData.Certificate.PEMData.Certificate.X509CertData.Certificate.X509System.Certificate.X509Data.Certificate.X509InternalSystem.Certificate.X509.UnixPrivateversion lenmodulusmoduluspublic_exponantprivate_exponantp1p2exp1exp2coef decodePrivate encodePrivateprivpubpqg parsePEMsfindPEM parsePEMCertparsePEMCertReqparsePEMKeyRSAparsePEMKeyDSA parsePEMKey Certificate certVersion certSerialcertSignatureAlg certIssuerDN certSubjectDN certValidity certPubKeycertExtensionsCertificateExt ASN1StringASN1StringTypeT61IA5BMPUniv PrintableUTF8PubKey PubKeyUnknown PubKeyECDSAPubKeyDH PubKeyDSA PubKeyRSA PubKeyALGPubKeyALG_Unknown PubKeyALG_DHPubKeyALG_ECDSA PubKeyALG_DSA PubKeyALG_RSA SignatureALGSignatureALG_UnknownSignatureALG_ecdsaWithSHA384SignatureALG_dsaWithSHA1"SignatureALG_sha1WithRSAEncryption!SignatureALG_md2WithRSAEncryption!SignatureALG_md5WithRSAEncryption oidCommonName oidCountryoidOrganizationoidOrganizationUnitoidSigsigOIDparseCertificateencodeCertificateHeaderX509getSigningDatadecodeCertificateencodeCertificatefindCertificate parsePrivatePEM takeTillEndfindSectionNameparsePEMSections ParseASN1PrunP runParseASN1getNextgetNextContaineronNextContainergetNextContainerMaybeonNextContainerMaybehasNext asn1ContainermakeASN1Sequence CertKeyUsageCertKeyUsageDecipherOnlyCertKeyUsageEncipherOnlyCertKeyUsageCRLSignCertKeyUsageKeyCertSignCertKeyUsageKeyAgreementCertKeyUsageDataEnciphermentCertKeyUsageKeyEnciphermentCertKeyUsageNonRepudiationCertKeyUsageDigitalSignatureTimeOID parse_RSA parse_ECDSAparseCertHeaderVersionparseCertHeaderSerial sig_tablepk_table oidPubKey pubkeyalgOID pubkeyToAlgparseCertHeaderAlgorithmID asn1StringencodeAsn1StringparseCertHeaderDNparseCertHeaderValidityparseCertHeaderSubjectPKparseCertExtensionsencodeDNencodePK encodeExtsReadErr CertError ExceptiondefaultSystemPathenvPathOverride getSystemPathreadCertificatereadAll