a bQ @s.ddlZddlmZddlmZddlmZmZmZm Z m Z ddl m Z ej e jejejeje jfZGdddZGdd d Zdeejeejejeje ejejejejfd d d Zdeejeejed d dZej ejefZejeejeejejejejeej edddZ!dS)N)x509) serialization)dsaeced25519ed448rsa)PRIVATE_KEY_TYPESc@s|eZdZejejedddZe ejedddZ e ejdddZ e e d d d Zedd d ZedddZdS)PKCS12Certificate)cert friendly_namecCs>t|tjstd|dur.t|ts.td||_||_dS)Nz!Expecting x509.Certificate objectz#friendly_name must be bytes or None) isinstancer Certificate TypeErrorbytes_cert_friendly_name)selfr r rZ/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/serialization/pkcs12.py__init__s  zPKCS12Certificate.__init__returncCs|jSN)rrrrrr +szPKCS12Certificate.friendly_namecCs|jSrrrrrr certificate/szPKCS12Certificate.certificateotherrcCs&t|tstS|j|jko$|j|jkSr)r r NotImplementedrr rrrrr__eq__3s    zPKCS12Certificate.__eq__cCst|j|jfSr)hashrr rrrr__hash__<szPKCS12Certificate.__hash__cCsd|j|jS)Nz+)formatrr rrrr__repr__?szPKCS12Certificate.__repr__N)__name__ __module__ __qualname__rrtypingOptionalrrpropertyr robjectboolr!intr#strr%rrrrr s  r c@seZdZejeejeejedddZe ejedddZ e ejedddZ e ejedd d Z e ed d d ZedddZedddZdS)PKCS12KeyAndCertificates)keyr additional_certscCsx|dur.t|tjtjtjtjt j fs.t d|durHt|t sHt dt dd|Dsbt d||_||_||_dS)NLKey must be RSA, DSA, EllipticCurve, ED25519, or ED448 private key, or None.z/cert must be a PKCS12Certificate object or Nonecss|]}t|tVqdSr)r r ).0Zadd_certrrr \sz4PKCS12KeyAndCertificates.__init__..z@all values in additional_certs must be PKCS12Certificate objects)r r RSAPrivateKeyr DSAPrivateKeyrEllipticCurvePrivateKeyrEd25519PrivateKeyrEd448PrivateKeyrr all_keyr_additional_certs)rr1r r2rrrrFs.  z!PKCS12KeyAndCertificates.__init__rcCs|jSr)r<rrrrr1hszPKCS12KeyAndCertificates.keycCs|jSrrrrrrr lszPKCS12KeyAndCertificates.certcCs|jSr)r=rrrrr2psz)PKCS12KeyAndCertificates.additional_certsrcCs2t|tstS|j|jko0|j|jko0|j|jkSr)r r0rr1r r2r rrrr!ts    zPKCS12KeyAndCertificates.__eq__cCst|j|jt|jfSr)r"r1r tupler2rrrrr#~sz!PKCS12KeyAndCertificates.__hash__cCsd}||j|j|jS)Nz@)r$r1r r2)rfmtrrrr%sz!PKCS12KeyAndCertificates.__repr__N)r&r'r(r)r*r r Listrr+r1r r2r,r-r!r.r#r/r%rrrrr0Es " r0)datapasswordbackendrcCsddlm}|||SNrrC),cryptography.hazmat.backends.openssl.backendrCZ%load_key_and_certificates_from_pkcs12rArBrCZosslrrrload_key_and_certificatess rHcCsddlm}|||SrD)rFrC load_pkcs12rGrrrrIs rI)namer1r casencryption_algorithmrcCs|dur.t|tjtjtjtjt j fs.t d|durJt|t j sJt d|durtt|}tdd|Dstt dt|tjst d|dur|dur|stddd lm}||||||S) Nr3z"cert must be a certificate or Nonecss|]}t|tjtfVqdSr)r rrr )r4valrrrr5sz1serialize_key_and_certificates..z&all values in cas must be certificateszFKey encryption algorithm must be a KeySerializationEncryption instancez1You must supply at least one of key, cert, or casrrE)r rr6rr7rr8rr9rr:rrrlistr;rKeySerializationEncryption ValueErrorrFrCZ(serialize_key_and_certificates_to_pkcs12)rJr1r rKrLrCrrrserialize_key_and_certificatess@     rQ)N)N)"r)Z cryptographyrZcryptography.hazmat.primitivesrZ)cryptography.hazmat.primitives.asymmetricrrrrrZ/cryptography.hazmat.primitives.asymmetric.typesr Unionr6r7r8r9r:Z_ALLOWED_PKCS12_TYPESr r0rr*AnyTuplerr@rHrIZ_PKCS12_CAS_TYPESIterablerOrQrrrrsZ    'F