o )%a @sddlZddlmZddlmZddlmZddlmZm Z m Z ej e j ej e jfZ ddedejedejejeejejejejffd d Zd ejed ejed ejejdejejejdejdef ddZdS)N)x509) _get_backend) serialization)dsaecrsadatapasswordreturncCst|}|||SN)r%load_key_and_certificates_from_pkcs12)rr backendrU/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/pkcs12.pyload_key_and_certificatess rnamekeycertcasencryption_algorithmcCs|durt|tjtjtjfstd|dur!t|tj s!td|dur6t |}t dd|Ds6tdt|t j s@td|durN|durN|sNtdtd}||||||S)Nz3Key must be RSA, DSA, or EllipticCurve private key.zcert must be a certificatecss|] }t|tjVqdSr ) isinstancer Certificate).0valrrr 4sz1serialize_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 cas)rr RSAPrivateKeyr DSAPrivateKeyrEllipticCurvePrivateKey TypeErrorrrlistallrKeySerializationEncryption ValueErrorr(serialize_key_and_certificates_to_pkcs12)rrrrrr rrrserialize_key_and_certificatess4  r$r )typing cryptographyrcryptography.hazmat.backendsrcryptography.hazmat.primitivesr)cryptography.hazmat.primitives.asymmetricrrrUnionrrr_ALLOWED_PKCS12_TYPESbytesOptionalTuplerListrIterabler!r$rrrrsJ