.&Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXunknown experimental#Vincent Hanquez <vincent@snarc.org> Y      unknown experimental#Vincent Hanquez <vincent@snarc.org> Z   unknown experimental#Vincent Hanquez <vincent@snarc.org> [\]^ _`abcdefghij _bcdefghij _bcdefghijS !"#$%&'(Certificate Version )Certificate Serial number * Certificate Signature algorithm +Certificate Issuer DN ,Certificate Subject DN -Certificate Validity period .Certificate Public key /Certificate Extensions 01234567klmnopqrstu89unrecognized format : ECDSA format not done yet FIXME ;,DH format with (p,g,q,j,(seed,pgenCounter)) <DSA format with (pub, p, q, g) =*RSA format with (len modulus, modulus, e) >?@ABCDEFGHIJvKLMNw,parse a RSA pubkeys from ASN1 encoded bits. = - return PubKeyRSA (len-modulus, modulus, e) if successful xyz{|O}P~QKparse 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) R4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR4DJIHGFE>CBA@?8=<;:917654320&'()*+,-./ !"#$%KLMNOPQR4 !"#$% !"#$%& '()*+,-./'()*+,-./017654322345678=<;:99:;<=>CBA@??@ABCDJIHGFEEFGHIJKLMNOPQRunknown experimental#Vincent Hanquez <vincent@snarc.org>STU,get signing data related to a X509 message, ? - which is either the cached data or the encoded certificate V!decode an X509 from a bytestring # - the structure is the following:  - Certificate % - Certificate Signature Algorithm  - Certificate Signature W+encode a X509 certificate to a bytestring 1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJSTUVW1STDJIHGFE>CBA@?8=<;:917654320&'()*+,-./ !"#$%UVWSTTUVW unix only experimental#Vincent Hanquez <vincent@snarc.org> XXXgood experimental#Vincent Hanquez <vincent@snarc.org>XX          !""#$%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~certificate-0.9.0Data.Certificate.KeyRSAData.Certificate.KeyDSAData.Certificate.PEMData.Certificate.X509CertData.Certificate.X509System.Certificate.X509Data.Certificate.X509InternalSystem.Certificate.X509.UnixPrivateversion lenmodulusmoduluspublic_exponantprivate_exponantp1p2exp1exp2coef decodePrivate encodePrivateprivpubpqg parsePEMsfindPEM parsePEMCertparsePEMCertReqparsePEMKeyRSAparsePEMKeyDSA parsePEMKeyCertificateExtscertExtKeyUsagecertExtBasicConstraintscertExtSubjectKeyIdentifiercertExtPolicies certExtOthers Certificate certVersion certSerialcertSignatureAlg certIssuerDN certSubjectDN certValidity certPubKeycertExtensions 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 asn1StringencodeAsn1StringparseCertHeaderDNparseCertHeaderValidityparseCertHeaderSubjectPKparseCertExtensionHelperparseCertExtensionsencodeDNencodePKReadErr CertError ExceptiondefaultSystemPathenvPathOverride getSystemPathreadCertificatereadAll