/var/opt/nydus/ops/cryptography/hazmat/backends/openssl/__pycache__
NameSizeModeActions
aead.cpython-312.pyc128340644editdlrm
backend.cpython-312.pyc1301920644editdlrm
ciphers.cpython-312.pyc147840644editdlrm
cmac.cpython-312.pyc52500644editdlrm
decode_asn1.cpython-312.pyc11260644editdlrm
dh.cpython-312.pyc213110644editdlrm
dsa.cpython-312.pyc168870644editdlrm
ec.cpython-312.pyc172110644editdlrm
ed448.cpython-312.pyc97260644editdlrm
ed25519.cpython-312.pyc97730644editdlrm
hashes.cpython-312.pyc58410644editdlrm
hmac.cpython-312.pyc57700644editdlrm
poly1305.cpython-312.pyc47250644editdlrm
rsa.cpython-312.pyc287200644editdlrm
utils.cpython-312.pyc32720644editdlrm
x448.cpython-312.pyc66760644editdlrm
x25519.cpython-312.pyc72310644editdlrm
__init__.cpython-312.pyc3000644editdlrm
Edit: /var/opt/nydus/ops/cryptography/hazmat/backends/openssl/__pycache__/backend.cpython-312.pyc (130192B)
O jtddlZddlZddlZddlZddlZddlmZddlmZmZddl m Z m Z ddl m Z ddlmZddlmZddlmZmZmZmZdd lmZmZmZdd lmZmZdd lmZm Z m!Z!dd l"m#Z#m$Z$dd l%m&Z&ddl'm(Z(ddl)m*Z*m+Z+ddl,m-Z-m.Z.ddl/m0Z0m1Z1ddl2m3Z3m4Z4ddl5mZ6ddl7m8Z8ddl9m:Z:m;Z;ddlm?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFddlGmHZHmIZImJZJmKZKddlLmMZMmNZNmOZOddlPmQZQmRZRddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ddl`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZiddljmkZkddllmmZmddlnmoZompZpmqZqmrZrmsZsejd d!d"gZuGd#d$ZvGd%d&ZwGd'd(Zxd)ewd*eTfd+ZyewZzy),N)contextmanager)utilsx509)UnsupportedAlgorithm_Reasons)aead)_CipherContext _CMACContext)_dh_params_dup _DHParameters _DHPrivateKey _DHPublicKey)_DSAParameters_DSAPrivateKey _DSAPublicKey)_EllipticCurvePrivateKey_EllipticCurvePublicKey)_ED448_KEY_SIZE_Ed448PrivateKey_Ed448PublicKey)_Ed25519PrivateKey_Ed25519PublicKey _HashContext _HMACContext)_POLY1305_KEY_SIZE_Poly1305Context)_RSAPrivateKey _RSAPublicKey)_X448PrivateKey_X448PublicKey)_X25519PrivateKey_X25519PublicKey)r)binding)hashes serialization)AsymmetricPadding)dhdsaeced448ed25519rsax448x25519)MGF1OAEPPSSPKCS1v15)#CERTIFICATE_ISSUER_PUBLIC_KEY_TYPESPRIVATE_KEY_TYPESPUBLIC_KEY_TYPES)BlockCipherAlgorithmCipherAlgorithm) AESAES128AES256ARC4SM4CamelliaChaCha20 TripleDES_BlowfishInternal_CAST5Internal _IDEAInternal _SEEDInternal) CBCCFBCFB8CTRECBGCMOFBXTSMode)scrypt)ssh)_ALLOWED_PKCS12_TYPES_PKCS12_CAS_TYPESPBESPKCS12CertificatePKCS12KeyAndCertificates _MemoryBIObiochar_ptrc eZdZy)_RC2N)__name__ __module__ __qualname__]/opt/nydus/tmp/pip-target-a90h98xg/lib/python/cryptography/hazmat/backends/openssl/backend.pyr[r[sr`r[c\eZdZdZdZhdZefZejejejejejejejej ej"ej$ej&ej(f Zej.ej0ej2ej4fZdZdZddzZdZdezZ dZ!de"fd Z# dd e$d e%jLe%jNe(jRdd fd Z*de$fdZ+ddZ,ddZ-e.j^dZ0ddZ1de"fdZ2de"fdZ3de4fdZ5de6dejnde8fdZ9dejnfdZ:dejnfdZ;dejnde$fdZdejnde$fdZ?dejndejfdZAd eBd!eCde$fd"ZDd#ZEdd$ZFd eBd!eCdeGfd%ZHd eBd!eCdeGfd&ZIdejnde$fd'ZJdejnd(e4d)e6d*e4d+e6de6f d,ZKde%jNe(jRfd-ZLde%jNe(jfd.ZNde4fd/ZOdd0e4fd1ZPd2e4d3e4deQjfd4ZSd2e4d3e4de$fd5ZTd6eQjd7e$deQjfd8ZVd6eQjdeQjfd9ZYd:ZZd;Z[dZ]de6fd?Z^d7e$de_fd@Z`deafdAZbdejnde$fdBZcdCedde$fdDZed3e4defjfdEZhdFefjdefjfdGZjd3e4defjfdHZkdIZld6efjdefjfdJZnd6efjdefjfdKZqd6efjdefjfdLZsdMZtde$fdNZudejnde$fdOZvde$fdPZwdexdeyfdQZzd aes-128-ccm aes-128-gcm aes-192-ccm aes-192-gcm aes-256-ccm aes-256-gcmicXtj|_|jj|_|jj |_|j|_i|_ |j|jr1|j jrtjdtn|j|j j g|_|j j$r0|j"j'|j j(yy)Nz)formatopenssl_version_textruro_legacy_provider_loadedrs ra__repr__zBackend.__repr__s7DKK  % % '    MM 1 1  r`NokerrorscFtj|j||S)N)r)r&_openssl_assertrs)rrrs raopenssl_assertzBackend.openssl_asserts &&tyy"VDDr`c|jjr0|jj|jj}n|jj }|dk(r|jj t|SNr)rsCryptography_HAS_300_FIPS&EVP_default_properties_is_fips_enabledrqNULL FIPS_modeERR_clear_errorbool)rmodes rartzBackend._is_fips_enabledsc 99 . .99CC D99&&(D 19 II % % 'Dzr`c|jj|jsJ|j|_yN)ro _enable_fipsrtrurs rarzBackend._enable_fipss7 ""$$$&&&!224r`c|jjr|jj}||jjk7r|jj ||jj |jj}|j|dk(|jj|}|j|dk(yyyNrl) rsrxENGINE_get_default_RANDrqrENGINE_unregister_RANDRAND_set_rand_methodr ENGINE_finishreress raactivate_builtin_randomzBackend.activate_builtin_randoms 99 7 7 113ADIINN" 003ii44TYY^^D##C1H-ii--a0##C1H-# 8r`c#K|jj|jj}|j||jj k7|jj |}|j|dk( ||jj|}|j|dk(|jj|}|j|dk(y#|jj|}|j|dk(|jj|}|j|dk(wxYwwr) rs ENGINE_by_idCryptography_osrandom_engine_idrrqr ENGINE_init ENGINE_freerrs ra_get_osurandom_enginezBackend._get_osurandom_engines II " "499#L#L M A/0ii##A& C1H% *G))''*C   q )))))!,C   q ) ))''*C   q )))))!,C   q )s BE C-AE-A E  Ec|jjr|j|j5}|jj |}|j |dk(ddd|jj |jj}|j |dk(yy#1swYNxYwr) rsrxrrENGINE_set_default_RANDrrrqrrs rar|z Backend.activate_osrandom_engine s 99 7 7  ( ( *++-ii77:##C1H-. ))00@C   q ) 8.-s 0B44B=c z|jjdd}|j5}|jj |dt |||jj d}|j|dkDddd|jj|jdS#1swY3xYw)Nchar[]@sget_implementationrascii) rqnewrrsENGINE_ctrl_cmdlenrrstringdecode)rbufrrs raosrandom_engine_implementationz&Backend.osrandom_engine_implementationsiimmHb)  ' ' )Q))++(#c(CC   a ( * yy$++G44 * )s AB11B:c|jj|jj|jjj dS)z Friendly string name of the loaded OpenSSL library. This is not necessarily the same version as it was compiled against. Example: OpenSSL 1.1.1d 10 Sep 2019 r)rqrrsOpenSSL_versionOPENSSL_VERSIONrrs rarzBackend.openssl_version_text!s@yy II % %dii&?&? @ &/ r`c6|jjSr)rsOpenSSL_version_numrs raopenssl_version_numberzBackend.openssl_version_number,syy,,..r`key algorithmct|||Srr)rrrs racreate_hmac_ctxzBackend.create_hmac_ctx/sD#y11r`c |jdk(s|jdk(r9dj|j|jdzjd}n|jjd}|jj |}|S)Nblake2bblake2sz{}{}r)namer digest_sizeencodersEVP_get_digestbyname)rralgevp_mds ra_evp_md_from_algorithmzBackend._evp_md_from_algorithm4sv >>Y &)..I*E-- 5 5 9fWo ..''0C//4 r`cx|j|}|j||jjk7|Sr)rrrqrrrrs ra_evp_md_non_null_from_algorithmz'Backend._evp_md_non_null_from_algorithm?s2,,Y7 Fdiinn45 r`c|jrt||jsy|j|}||jj k7SNF)ru isinstance _fips_hashesrrqrrs rahash_supportedzBackend.hash_supportedDs@   jDj(23r`c tttfD]H}ttt t tttfD]}|j||td Jttt t tfD]"}|jt|td$tttt fD]"}|jt|td$|jtt td|jttdtd|jtt t"t tt ttfD]"}|jt$|td$|j&j(s|j*j,s!ttt t fD]"}|jt.|td$ttt t fD]"}|jt0|td$t3j4t6t8gtt tt gD]!\}}|j||td#|jt:tdtd |jt<tdtd yy) Nz+{cipher.name}-{cipher.key_size}-{mode.name}zdes-ede3-{mode.name}zdes-ede3chacha20zsm4-{mode.name}zbf-{mode.name}zseed-{mode.name}z{cipher.name}-{mode.name}rc4rc2)r;r<r=rGrJrKrMrHrIrLrGetCipherByNamer@rBrArrN_get_xts_cipherr?rorrs#CRYPTOGRAPHY_OPENSSL_300_OR_GREATERrCrF itertoolsproductrDrEr>r[)rrrs rarwz!Backend._register_default_ciphers}sC/J #sCdC@,,#EA0c3S1H  ( ( MN 2 c4-H  ( (8_5K%L . $$ sOJ7  $$ d4j/*"=  $$S#?c3S1H  ( (X/@A 2 MM 1 199@@ #sC0,,%#$451 !#sC0,,!#$671 )2(9(9/c3$)$ H,,#$?@ )  ( (d4j/%"8   ( (d4j/%"8 7Ar`c:t|||tjSr)r _ENCRYPTrrrs racreate_symmetric_encryption_ctxz'Backend.create_symmetric_encryption_ctxdFD.2I2IJJr`c:t|||tjSr)r _DECRYPTrs racreate_symmetric_decryption_ctxz'Backend.create_symmetric_decryption_ctxrr`c$|j|Sr)rrs rapbkdf2_hmac_supportedzBackend.pbkdf2_hmac_supporteds""9--r`lengthsalt iterations key_materialc ^|jjd|}|j|}|jj|}|jj |t ||t |||||} |j| dk(|jj|ddS)Nunsigned char[]rl) rqrr from_bufferrsPKCS5_PBKDF2_HMACrrbuffer) rrrrrrrrkey_material_ptrrs raderive_pbkdf2_hmaczBackend.derive_pbkdf2_hmacsiimm-v655i@9900>ii))     I       C1H%yy$Q''r`c@tj|jSr)r&_consume_errorsrsrs rarzBackend._consume_errorss&&tyy11r`c@tj|jSr)r&_consume_errors_with_textrsrs rarz!Backend._consume_errors_with_texts00;;r`c||jjk7sJ|j|jj | |jj |}|jj d|}|jj||}|j|dk\tj|jj|d|d}|S)Nrrbig) rqrrrsBN_is_negative BN_num_bytesr BN_bn2binint from_bytesr )rbn bn_num_bytesbin_ptrbin_lenvals ra _bn_to_intzBackend._bn_to_intsTYY^^###  8 8 <<=yy--b1 ))-- 1<@))%%b'2 GqL)nnTYY--g6x@%H r`numcj|||jjk7sJ||jj}|jt|j dz dzd}|j j |t||}|j||jjk7|S)a  Converts a python integer to a BIGNUM. The returned BIGNUM will not be garbage collected (to support adding them to structs that take ownership of the object). Be sure to register it for GC if it will be discarded after use. g @rlr) rqrto_bytesr bit_lengthrs BN_bin2bnrr)rrrbinarybn_ptrs ra _int_to_bnzBackend._int_to_bnszR499>>111 :Bc#.."2S"81"<=uE$$VS["= Fdiinn45 r`public_exponentkey_sizec`tj|||jj}|j ||j j k7|j j||jj}|j|}|j j||jj}|jj||||j j }|j |dk(|j|}t|||dS)NrlTunsafe_skip_rsa_key_validation)r/_verify_rsa_parametersrsRSA_newrrqrgcRSA_freer&BN_freeRSA_generate_key_ex_rsa_cdata_to_evp_pkeyr )rr'r( rsa_cdatarrevp_pkeys ragenerate_rsa_private_keyz Backend.generate_rsa_private_key s ""?H=II%%'  I78IILLDII,>,>? ___ - YY\\"dii// 0ii++ xTYY^^  C1H%..y9 )Xd  r`c.|dk\xr|dzdk7xr|dk\S)Nrlrir_)rr'r(s ra!generate_rsa_parameters_supportedz)Backend.generate_rsa_parameters_supported"s/ q  !#q( C r`numbersr+c (tj|j|j|j|j |j |j|jj|jj|jj}|j||jjk7|jj!||jj"}|j%|j}|j%|j}|j%|j}|j%|j }|j%|j }|j%|j} |j%|jj} |j%|jj} |jj'|||} |j| dk(|jj)|| | |} |j| dk(|jj+|||| } |j| dk(|j-|} t/||| |S)Nrlr*)r/_check_private_key_componentspqddmp1dmq1iqmppublic_numbersrnrsr-rrqrr.r/r&RSA_set0_factors RSA_set0_keyRSA_set0_crt_paramsr2r )rr9r+r3r<r=r>r?r@rArrCrr4s raload_rsa_private_numbersz Backend.load_rsa_private_numbers+s )) II II II LL LL LL  " " $ $  " " $ $ II%%'  I78IILLDII,>,>? OOGII & OOGII & OOGII &w||,w||,w||, OOG2244 5 OOG2244 5ii((Aq9 C1H%ii$$Y1a8 C1H%ii++ItT4H C1H%..y9   +I   r`cntj|j|j|jj }|j ||jjk7|jj||jj}|j|j}|j|j}|jj||||jj}|j |dk(|j|}t|||Sr)r/_check_public_key_componentsrrCrsr-rrqrr.r/r&rEr2r!)rr9r3rrCrr4s raload_rsa_public_numberszBackend.load_rsa_public_numbersTs ((GII>II%%'  I78IILLDII,>,>? OOGII & OOGII &ii$$Y1diinnE C1H%..y9T9h77r`c|jj}|j||jjk7|jj ||jj }|Sr)rs EVP_PKEY_newrrqrr. EVP_PKEY_freerr4s ra_create_evp_pkey_gczBackend._create_evp_pkey_gccsR99))+ H 6799<<$))*A*ABr`c|j}|jj||}|j|dk(|Sr)rOrsEVP_PKEY_set1_RSAr)rr3r4rs rar2zBackend._rsa_cdata_to_evp_pkeyi=++-ii))(I> C1H%r`datacF|jj|}|jj|t |}|j ||jj k7t|jj||jj|S)z Return a _MemoryBIO namedtuple of (BIO, char*). The char* is the storage for the BIO and it must stay alive until the BIO is finished with. ) rqr rsBIO_new_mem_bufrrrrWr.BIO_free)rrSdata_ptrrXs ra _bytes_to_biozBackend._bytes_to_biooss99((.ii''#d)< C499>>12$)),,sDII,>,>?JJr`cp|jj}|j||jjk7|jj |}|j||jjk7|jj ||jj}|S)z. Creates an empty memory BIO. )rs BIO_s_memrrqrBIO_newr.rV)r bio_methodrXs ra_create_mem_bio_gczBackend._create_mem_bio_gc|sYY((*  J$))..89ii + C499>>12iill3 2 23 r`c6|jjd}|jj||}|j |dkD|j |d|jj k7|jj |d|dd}|S)zE Reads a memory BIO. This only works on memory BIOs. zchar **rN)rqrrsBIO_get_mem_datarrr )rrXrbuf_lenbio_datas ra _read_mem_biozBackend._read_mem_biosiimmI&)),,S#6 GaK( CFdiinn4599##CFG4Q7r`c|jj|}||jjk(r|jj|}|j ||j j k7|j j||jj}t||||S||jjk(r|jjs|jjs|jjs|jj|}|j ||j j k7|j j||jj}|j}|jj||}|j |dk(|j!|j#|d|S||jj$k(r|jj'|}|j ||j j k7|j j||jj(}t+|||S||jj,k(r|jj/|}|j ||j j k7|j j||jj0}t3|||S||j4vr|jj7|} |j | |j j k7|j j| |jj8} t;|| |S|t=|jddk(r t?||S|t=|jddk(r tA||S||jjBk(r tE||S|t=|jddk(r tG||StId) zd Return the appropriate type of PrivateKey given an evp_pkey cdata pointer. r*rlN)passwordr+EVP_PKEY_ED25519 EVP_PKEY_X448EVP_PKEY_ED448Unsupported key type.)%rs EVP_PKEY_id EVP_PKEY_RSAEVP_PKEY_get1_RSArrqrr.r/r EVP_PKEY_RSA_PSSCRYPTOGRAPHY_IS_LIBRESSLCRYPTOGRAPHY_IS_BORINGSSL#CRYPTOGRAPHY_OPENSSL_LESS_THAN_111Er]i2d_RSAPrivateKey_bioload_der_private_keyrb EVP_PKEY_DSAEVP_PKEY_get1_DSADSA_freer EVP_PKEY_ECEVP_PKEY_get1_EC_KEY EC_KEY_freerr~EVP_PKEY_get1_DHDH_freergetattrrr"EVP_PKEY_X25519r$rr) rr4r+key_typer3rXr dsa_cdataec_cdatadh_cdatas ra_evp_pkey_to_private_keyz Backend._evp_pkey_to_private_keysU99((2 tyy-- - 33H=I    TYY^^ ; < Y 0B0BCI!/M    22 2II66II77IIAA  33H=I    TYY^^ ; < Y 0B0BCI))+C))11#yAC   q ),,""3'/M-  // / 33H=I    TYY^^ ; < Y 0B0BCI!$ 8< < .. .yy55h?H   DIINN : ;yy||Hdii.C.CDH+D(HE E  'yy11(;H   DIINN : ;yy||Hdii.?.?@H x: : ,>E E%dH5 5 OTB B"42 2 22 2$T84 4 ,? ?r`c|jj|}||jjk(r|jj|}|j ||j j k7|j j||jj}t|||S||jjk(r|jjs|jjs|jjs|jj|}|j ||j j k7|j j||jj}|j}|jj||}|j |dk(|j!|j#|S||jj$k(r|jj'|}|j ||j j k7|j j||jj(}t+|||S||jj,k(r|jj/|}||j j k(r|j1}t3d||j j||jj4}t7|||S||j8vr|jj;|} |j | |j j k7|j j| |jj<} t?|| |S|tA|jddk(r tC||S|tA|jddk(r tE||S||jjFk(r tI||S|tA|jddk(r tK||StMd)zc Return the appropriate type of PublicKey given an evp_pkey cdata pointer. rlzUnable to load EC keyreNrfrgrh)'rsrirjrkrrqrr.r/r!rlrmrnror]i2d_RSAPublicKey_bioload_der_public_keyrbrrrsrtrrurvrrrwrr~rxryrrzrr#r{r%rr) rr4r|r3rXrr}r~rrs ra_evp_pkey_to_public_keyzBackend._evp_pkey_to_public_keysF 99((2 tyy-- - 33H=I    TYY^^ ; < Y 0B0BCI y(; ;  22 2II66II77IIAA 33H=I    TYY^^ ; < Y 0B0BCI))+C))00i@C   q )++D,>,>s,CD D // / 33H=I    TYY^^ ; < Y 0B0BCI y(; ; .. .yy55h?H499>>)779 !8&AAyy||Hdii.C.CDH*48D D  'yy11(;H   DIINN : ;yy||Hdii.?.?@Hh9 9 ,>E E$T84 4 OTB B!$1 1 22 2#D(3 3 ,? ?r`ct|tjtjtjtj tj fSr)rr'rSHA224SHA256SHA384SHA512rs ra_oaep_hash_supportedzBackend._oaep_hash_supporteds:         r`paddingct|tryt|trzt|jtr`|j r/t|jj tjry|j|jj St|tr\t|jtrB|j|jj xr|j|j Sy)NTF) rr5r4_mgfr2ru _algorithmr'rrr3r)rrs rarsa_padding_supportedzBackend.rsa_padding_supporteds gx (  %*W\\4*H!!j '''**7<<+B+BCC  &:gllD+I,, ''@++G,>,>? @r`c &|dvr td|jj}|j||jj k7|jj ||jj}|jj|||jj d|jj |jj |jj }|j|dk(t||S)N)irki iz0Key size must be 1024, 2048, 3072, or 4096 bits.rrl) rrsDSA_newrrqrr.rtDSA_generate_parameters_exr)rr(ctxrs ragenerate_dsa_parameterszBackend.generate_dsa_parameters0s 3 3B ii! C499>>12iill3 2 23ii22   IINN IINN IINN IINN  C1H%dC((r` parameterscn|jj|j}|j||jj k7|jj ||jj}|jj||j|}t|||Sr) rs DSAparams_dup _dsa_cdatarrqrr.rtDSA_generate_key_dsa_cdata_to_evp_pkeyr)rrrr4s ragenerate_dsa_private_keyz Backend.generate_dsa_private_keyHsii%%  ! !  C499>>12iill3 2 23 ""3'..s3dC22r`cF|j|}|j|Sr)rr)rr(rs ra'generate_dsa_private_key_and_parametersz/Backend.generate_dsa_private_key_and_parametersUs%11(; ,,Z88r`c|jj||||}|j|dk(|jj|||}|j|dk(yr)rs DSA_set0_pqgr DSA_set0_key)rr}r<r=gpub_keypriv_keyrs ra_dsa_cdata_set_valueszBackend._dsa_cdata_set_values[sXii$$Y1a8 C1H%ii$$YB C1H%r`ctj||jj}|jj }|j ||jjk7|jj||jj}|j|j}|j|j}|j|j}|j|jj}|j|j }|j#|||||||j%|} t'||| Sr)r+_check_dsa_private_numbersrBparameter_numbersrsrrrqrr.rtr&r<r=ryxrrr) rr9rr}r<r=rrrr4s raload_dsa_private_numbersz Backend.load_dsa_private_numbersas &&w/#22DDII%%'  I78IILLDII,>,>? OO-// 0 OO-// 0 OO-// 0//'"8"8":":;??799- ""9aAwI..y9dIx88r`ctj|j|jj }|j ||j jk7|j j||jj}|j|jj}|j|jj}|j|jj}|j|j}|j j}|j|||||||j!|}t#|||Sr)r+_check_dsa_parametersrrsrrrqrr.rtr&r<r=rrrrr) rr9r}r<r=rrrr4s raload_dsa_public_numberszBackend.load_dsa_public_numbersvs !!'";";<II%%'  I78IILLDII,>,>? OOG5577 8 OOG5577 8 OOG5577 8//')),99>> ""9aAwI..y9T9h77r`c.tj||jj}|j ||j j k7|j j||jj}|j|j}|j|j}|j|j}|jj||||}|j |dk(t||Sr)r+rrsrrrqrr.rtr&r<r=rrr)rr9r}r<r=rrs raload_dsa_parameter_numbersz"Backend.load_dsa_parameter_numberss !!'*II%%'  I78IILLDII,>,>? OOGII & OOGII & OOGII &ii$$Y1a8 C1H%dI..r`c|j}|jj||}|j|dk(|Sr)rOrsEVP_PKEY_set1_DSAr)rr}r4rs rarzBackend._dsa_cdata_to_evp_pkeyrRr`c|j Sr)rurs ra dsa_supportedzBackend.dsa_supporteds%%%%r`cF|jsy|j|Sr)rrrs radsa_hash_supportedzBackend.dsa_hash_supporteds"!!#,,Y77r`cR|j|td|jzS)N)rrG block_sizers racmac_algorithm_supportedz Backend.cmac_algorithm_supporteds*$$ s7Y%9%99:  r`ct||Srr rs racreate_cmac_ctxzBackend.create_cmac_ctxsD),,r`rdcR|j|jj|||Sr) _load_keyrsPEM_read_bio_PrivateKey)rrSrdr+s raload_pem_private_keyzBackend.load_pem_private_keys+ ~~ II - -   *   r`c8|j|}|jjd}|jj |j |jj |jj|jjd|}||jj k7rA|jj||jj}|j|S|j|jj|j }|j|dk(|jj|j |jj |jj|jjd|}||jj k7rN|jj||jj }|j#|}t%|||S|j'y)NCRYPTOGRAPHY_PASSWORD_DATA *Cryptography_pem_password_cbrl)rXrqrrsPEM_read_bio_PUBKEYrXr addressof _original_libr.rMrr BIO_resetrPEM_read_bio_RSAPublicKeyr/r2r!_handle_key_loading_error)rrSmem_biouserdatar4rr3s raload_pem_public_keyzBackend.load_pem_public_keys$$T*99==!?@9900 KK IINN II   '')G     tyy~~ %yy||Hdii.E.EFH//9 9  "))%%gkk2C   q ) ;;   ##II++-K IDIINN* IILLDII4F4FG 66yA$T9h??..0r`c|j|}|jj|j|jj |jj |jj }||jj k7r<|jj ||jj}t||S|jyr) rXrsPEM_read_bio_DHparamsrXrqrr.ryr r)rrSrrs raload_pem_parameterszBackend.load_pem_parameterss$$T*9922 KK  tyy~~ %yy||Hdii.?.?@H x0 0  * * ,r`c|j|}|j||}|r|j||S|j|jj |||Sr)rX"_evp_pkey_from_der_traditional_keyrrrsd2i_PKCS8PrivateKey_bio)rrSrdr+rars rarqzBackend.load_der_private_keysk%%d+55hI 003  >> 11.  r`cH|jj|j|jj}||jjk7r?|jj ||jj }| td|S|jy)N4Password was given but private key is not encrypted.) rsd2i_PrivateKey_biorXrqrr.rM TypeErrorr)rrardrs rarz*Backend._evp_pkey_from_der_traditional_key s~ii**8<<H $)).. )),,sDII$;$;>J tyy~~ %yy||Hdii.?.?@H x0 0 YY 4 4  "))%%gkk2C   q )yy227;; OH499>>)99<<$))2C2CD$T844 &&(r`certc|jtjj}|j |}|j j |j|jj}|j||jjk7|jj||j j}|Sr) public_bytesr(EncodingDERrXrs d2i_X509_biorXrqrrr. X509_free)rrrSrrs ra _cert2osslzBackend._cert2osslCs  !7!7!;!;<$$T*yy%%gkk499>>B DDIINN23yy||D$))"5"56 r`rc|j}|jj||}|j|dk(t j |j |Sr)r]rs i2d_X509_bior rust_x509load_der_x509_certificaterb)rrrXrs ra _ossl2certzBackend._ossl2certKsT%%'ii$$S$/ C1H%2243E3Ec3JKKr`csrc|jtjj}|j |}|j j |j|jj}|j||jjk7|jj||j j}|Sr) rr(rrrXrsd2i_X509_REQ_biorXrqrrr. X509_REQ_free)rrrSrx509_reqs ra _csr2osslzBackend._csr2osslQ 6 6 : :;$$T*99--gkk499>>J H 6799<<$))*A*ABr`crlc|jtjj}|j |}|j j |j|jj}|j||jjk7|jj||j j}|Sr) rr(rrrXrsd2i_X509_CRL_biorXrqrrr. X509_CRL_free)rrrSrx509_crls ra _crl2osslzBackend._crl2osslYrr` public_keyct|tttfs t d|j |}|j j||j}|dk7r|jyy)NzGExpecting one of DSAPublicKey, RSAPublicKey, or EllipticCurvePublicKey.rlFT) rrr!rrrrsX509_CRL_verify _evp_pkeyr)rrrrrs ra_crl_is_signature_validzBackend._crl_is_signature_validasv  '  . >>#&ii''*2F2FG !8  "r`cp|j|}|jj|}|j||jj k7|jj ||jj}|jj||}|dk7r|jyy)NrlFT) rrsX509_REQ_get_pubkeyrrqrr.rMX509_REQ_verifyr)rrrpkeyrs ra_csr_is_signature_validzBackend._csr_is_signature_valid{s>>#&yy,,X6 DDIINN23yy||D$))"9"9:ii''$7 !8  "r`c|jj|j|jdk7r tdy)NrlzKeys do not correspond)rs EVP_PKEY_cmprr)rkey1key2s ra_check_keys_correspondzBackend._check_keys_corresponds5 99 ! !$..$.. AQ F56 6 Gr`c|j|}|jjd}|Htjd||jj |}||_t||_||j|jj|jj|jjd|}||jjk(r|jdk7rb|j|jdk(r t!d|jdk(sJt#dj%|j&d z |j)|jj+||jj,}||j.dk(r t!d ||j.d k(s|J|j1||S) Nrrdrrz3Password was not given but private key is encryptedzAPasswords longer than {} bytes are not supported by this backend.rlr)rXrqrr_check_bytesliker rdrrrXrrrsrerrorrrrrmaxsizerr.rMcalledr) ropenssl_read_funcrSrdr+rr password_ptrr4s rarzBackend._load_keys$$T*99==!?@    " ":x 89900:L ,H !(mHO$ KK IINN II   '')G     tyy~~ %~~"$$&>>R'#M$>>R///$++16(2B2BQ2F+G ..099<<$))*A*AB  HOOq$8F   X__%9   ,, 4  r`cnj}|s td|djjjjj s|djjj jjsSjjrH|djjjjjr tdtfd|Dr tdtj|}td|)Nz|Could not deserialize key data. The data may be in an incorrect format or it may be encrypted with an unsupported algorithm.rz Bad decrypt. Incorrect password?c3K|]>}|jjjjj@ywr)_lib_reason_matchrs ERR_LIB_EVP'EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM).0r rs ra z4Backend._handle_key_loading_error..sB    # # %% AA  sAAz!Unsupported public key algorithm.zCould not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm, or it may be an unsupported key type (e.g. EC curves with explicit parameters).)rrrrsrEVP_R_BAD_DECRYPTERR_LIB_PKCS12!PKCS12_R_PKCS12_CIPHERFINAL_ERRORCryptography_HAS_PROVIDERS ERR_LIB_PROVPROV_R_BAD_DECRYPTanyr&_errors_with_text)rrerrors_with_texts` rarz!Backend._handle_key_loading_errors%%'  1I ' ' %%tyy'B'B ay** (( ;;  441I//II**II00 ?@ @     @A A '88@ 4!  r`curvec |j|}|jj |}||j j k(r|jy|j||jjk7|jj|y#t$r|jj}YwxYw)NFT) _elliptic_curve_to_nidrrs NID_undefEC_GROUP_new_by_curve_namerqrrr EC_GROUP_free)rr curve_nidgroups raelliptic_curve_supportedz Backend.elliptic_curve_supporteds ,33E:I 44Y? DIINN "  "    TYY-@-@ @ A II # #E *$ , ++I ,sBB>=B>signature_algorithmcZt|tjsy|j|Sr)rr,ECDSAr')rr(rs ra,elliptic_curve_signature_algorithm_supportedz4Backend.elliptic_curve_signature_algorithm_supporteds' -rxx8,,U33r`cF|j|r^|j|}|jj|}|j |dk(|j |}t |||Stdj|jtj)z@ Generate a new private key on the named curve. rlz#Backend object does not support {}.) r'_ec_key_new_by_curversEC_KEY_generate_keyr_ec_cdata_to_evp_pkeyrrrrrUNSUPPORTED_ELLIPTIC_CURVE)rrr~rr4s ra#generate_elliptic_curve_private_keyz+Backend.generate_elliptic_curve_private_key s  ( ( /007H))//9C   q )11(;H+D(HE E&5< C1H%--h7&tXx@@ s A E88Fr4c |j|}|j|\}}|jj|}|j ||j j k7|j j||jj}|j|}|j j||jj}|j5}|jj||||j j |j j |} |j | dk(|jj|} |jj|} |||| | |} | dk7r|jtd ddd|jj!||} |j | dk(|j|} |j j| |jj} |jj#|| } |j | dk(|j%|} t'||| S#1swYxYw)Nrlz'Unable to derive key from private_value)r- _ec_key_determine_group_get_funcrsr?rrqrr.r@r&r5rA EC_POINT_mul BN_CTX_getrrrCr6r/r)rr4rr~get_funcr&rDvaluerErbn_xbn_yprivater4s ra!derive_elliptic_curve_private_keyz)Backend.derive_elliptic_curve_private_keyZs,,U3??I% &&u- ETYY^^34 UDII$;$;< . UDII$;$;<    6))((ueTYY^^TYY^^VC   q )99''/D99''/D5%tV C1H%//-0)),,w (?(?@ii..xA C1H%--h7'hAA/ s *B?I11I:cF|j|}|j|Sr)r!_ec_key_new_by_curve_nid)rrr%s rar-zBackend._ec_key_new_by_curves#//6 ,,Y77r`r%c|jj|}|j||jjk7|jj ||jj Sr)rsEC_KEY_new_by_curve_namerrqrr.rw)rr%r~s rarRz Backend._ec_key_new_by_curve_nidsP9955i@ H 67yy||Hdii&;&;< II(():):)<=  ++ +&6==ejjI33 r`c#K|jj}|j||jjk7|jj ||jj }|jj| ||jj|y#|jj|wxYwwr) rs BN_CTX_newrrqrr. BN_CTX_free BN_CTX_start BN_CTX_end)rrEs rarAzBackend._tmp_bn_ctxs%%' Fdiinn45fdii&;&;< v& )L II  (DII  (sBCB1C1CCc |j||jjk7|jj d}|j||jj k7|jj |}|j||jjk7|jj|}|j||jjk7|jj|}|j||jj k7||k(r-|jjr|jj}n|jj}|sJ||fS)zu Given an EC_KEY determine the group and what function is required to get point coordinates. scharacteristic-two-field) rrqrrsrar"r>EC_GROUP_method_ofEC_METHOD_get_field_typeCryptography_HAS_EC2M$EC_POINT_get_affine_coordinates_GF2m#EC_POINT_get_affine_coordinates_GFp)rr nid_two_fieldr&methodnidrKs rarHz(Backend._ec_key_determine_group_get_funcs# C499>>12 ,,-HI  MTYY-@-@@A ++C0 ETYY^^34--e4 Fdiinn45ii008 C499#6#667 - DII$C$CyyEEHyyDDHxr`rrc|dks|dkr td|jj|j||jj }|jj|j||jj }|jj |||}|dk7r|jtdy)zg Sets the public key point in the EC_KEY context to the affine x and y values. rz2Invalid EC key. Both x and y must be non-negative.rlr3N)rrqr.r&rsr0(EC_KEY_set_public_key_affine_coordinatesr)rrrrrs rar7z1Backend._ec_key_set_public_key_affine_coordinatess q5AED  IILL+TYY->-> ? IILL+TYY->-> ?ii@@aK !8  "./ / r`encodingrencryption_algorithmct|tjs tdt|tjs tdt|tj s tdt|tj rd}nt|tjr%|j}t|dkDrutdt|tjrE|j|cxurtjjurn td|j}n td|tjjur|tjjur|j j"}n>|tjj$ur|j j&}n td|j)|||S|tjj*ur|j,r%t|tj s td |j j/|} |tjjur| |j j0k(r|j j2}nk| |j j4k(r|j j6}n;| |j j8k(r|j j:}n td |j)|||S|tjj$ur|r td | |j j0k(r|j j<}nk| |j j8k(r|j j>}n;| |j j4k(r|j j@}n td |jC||Std |tjjur>|tjjurtEjF|||Std td)N/encoding must be an item from the Encoding enumz2format must be an item from the PrivateFormat enumzBEncryption algorithm must be a KeySerializationEncryption instancer`izBPasswords longer than 1023 bytes are not supported by this backendzUnsupported encryption typezUnsupported encoding for PKCS8zCEncrypted traditional OpenSSL format is not supported in FIPS mode.z+Unsupported key type for TraditionalOpenSSLzDEncryption is not supported for DER encoded traditional OpenSSL keysz+Unsupported encoding for TraditionalOpenSSLz=OpenSSH private key format can only be used with PEM encodingformat is invalid with this key)$rr(rr PrivateFormatKeySerializationEncryption NoEncryptionBestAvailableEncryptionrdrr_KeySerializationEncryption_formatOpenSSHPKCS8PEMrsPEM_write_bio_PKCS8PrivateKeyri2d_PKCS8PrivateKey_bio_private_key_bytes_via_bioTraditionalOpenSSLrurirjPEM_write_bio_RSAPrivateKeyrrPEM_write_bio_DSAPrivateKeyruPEM_write_bio_ECPrivateKeyrpi2d_ECPrivateKey_bioi2d_DSAPrivateKey_bio_bio_func_outputrQ_serialize_ssh_private_key) rrtrrurr4cdatard write_bior|s ra_private_key_byteszBackend._private_key_bytess(M$:$:;MN N&-"="=>D  -"J"J   *M,F,F GH  -"G"G ,44H8}t# # $m&O&O %,,3**223 :; ;,44H:; ; ]0066 6=11555 IICC ]33777 II==  !ABB228X  ]00CC C!!*$m&@&@+!.yy,,X6H=11555tyy555 $ E EI!7!77 $ E EI!6!66 $ D DI$E66uh=11555$3tyy555 $ ? ?I!6!66 $ > >I!7!77 $ ? ?I$E,,Y>>JK K ]0088 8=1155555#7% :;;r`c |s|jj}n|jjd}|j ||||t ||jj|jjS)Ns aes-256-cbc)rqrrsEVP_get_cipherbynamerr)rrr4rdrs rarz"Backend._private_key_bytes_via_bio`sdJ77GJ$$     M IINN IINN  r`c~|j}||g|}|j|dk(|j|Sr)r]rrb)rrargsrXrs rarzBackend._bio_func_outputqsB%%'#d# C1H%!!#&&r`cVt|tjs tdt|tjs td|tjj ur|tjj ur|jj}n>|tjjur|jj}n td|j||S|tjjur|jj|}||jjk7r td|tjj ur|jj }n>|tjjur|jj"}n td|j||S|tjj$ur<|tjj$urt'j(|Stdtd)Nrwz1format must be an item from the PublicFormat enumz8SubjectPublicKeyInfo works only with PEM or DER encodingz+PKCS1 format is supported only for RSA keysz)PKCS1 works only with PEM or DER encodingz1OpenSSH format must be used with OpenSSH encodingrx)rr(rr PublicFormatSubjectPublicKeyInforrsPEM_write_bio_PUBKEYri2d_PUBKEY_biorrPKCS1rirjPEM_write_bio_RSAPublicKeyrrrQserialize_ssh_public_key)rrtrrr4rrr|s ra_public_key_byteszBackend._public_key_bytesws(M$:$:;MN N&-"<"<=C  ]//DD D=11555 II:: ]33777 II44  N((H= = ]//55 5yy,,X6H499111 !NOO=11555 II@@ ]33777 II::  !LMM((E: : ]//77 7=1199933C88C  :;;r`c0|jj Srrsrnrs ra dh_supportedzBackend.dh_supported996666r` generatorc8|tjkr(tdjtj|dvr td|jj }|j ||jjk7|jj||jj}|jj||||jj}|dk7r|j}td|t||S)Nz$DH key_size must be at least {} bits)zDH generator must be 2 or 5rlz Unable to generate DH parameters)r*_MIN_MODULUS_SIZErrrsDH_newrrqrr.ryDH_generate_parameters_exrr )rrr(dh_param_cdatarrs ragenerate_dh_parameterszBackend.generate_dh_parameterss b** *6==((  F ":; ;))+ Ndiinn<=ndii6G6GHii11 Hi  !8335F?H HT>22r`c|j}|jj||}|j|dk(|Sr)rOrsEVP_PKEY_set1_DHr)rrr4rs ra_dh_cdata_to_evp_pkeyzBackend._dh_cdata_to_evp_pkeys=++-ii((8< C1H%r`ct|j|}|jj|}|j |dk(|j |}t |||Sr)r _dh_cdatarsDH_generate_keyrrr)rr dh_key_cdatarr4s ragenerate_dh_private_keyzBackend.generate_dh_private_keys`&  $ ii'' 5 C1H%--l;T<::r`cD|j|j||Sr)rr)rrr(s ra&generate_dh_private_key_and_parametersz.Backend.generate_dh_private_key_and_parameterss'++  ' ' 8 <  r`c|jj}|jj}|j ||j j k7|j j||jj}|j|j}|j|j}|j|j|j}n|j j }|j|jj}|j|j}|jj||||} |j | dk(|jj!|||} |j | dk(|j j#dd} |jj%|| } |j | dk(| ddk7r9|jdk(r| d|jj&z dk(s t)d|j+|} t-||| S)Nrlint[]rrz.DH private numbers did not pass safety checks.)rBrrsrrrqrr.ryr&r<rr=rr DH_set0_pqg DH_set0_keyrDH_checkDH_NOT_SUITABLE_GENERATORrrr) rr9rrr<rr=rrrcodesr4s raload_dh_private_numberszBackend.load_dh_private_numberss$22DD99##% H 6799<<$))*;*;< OO-// 0 OO-// 0    * 1 3 34A A//'"8"8":":;??799-ii##HaA6 C1H%ii##Hgx@ C1H% gq)ii  51 C1H% 8q=   1 $a499>>>!CMN N--h7T8X66r`cF|jj}|j||jjk7|jj ||jj }|j}|j|j}|j|j}|j|j|j}n|jj}|j|j}|jj||||}|j|dk(|jj|||jj}|j|dk(|j|} t!||| Sr)rsrrrqrr.ryrr&r<rr=rrrrr) rr9rrr<rr=rrr4s raload_dh_public_numberszBackend.load_dh_public_numberssB99##% H 6799<<$))*;*;<#55 OO-// 0 OO-// 0    * 1 3 34A A//')),ii##HaA6 C1H%ii##Hgtyy~~F C1H%--h7D(H55r`cJ|jj}|j||jjk7|jj ||jj }|j|j}|j|j}|j|j|j}n|jj}|jj||||}|j|dk(t||Sr) rsrrrqrr.ryr&r<rr=rr )rr9rr<rr=rs raload_dh_parameter_numbersz!Backend.load_dh_parameter_numbers3s99##% H 6799<<$))*;*;< OOGII & OOGII & 99  *A Aii##HaA6 C1H%T8,,r`r<rr=c|jj}|j||jjk7|jj ||jj }|j|}|j|}||j|}n|jj}|jj||||}|j|dk(|jjdd}|jj||}|j|dk(|ddk(S)Nrlrr) rsrrrqrr.ryr&rrr)rr<rr=rrrs radh_parameters_supportedzBackend.dh_parameters_supportedGs99##% H 6799<<$))*;*;< OOA  OOA  ="A Aii##HaA6 C1H% gq)ii  51 C1H%Qx1}r`c4|jjdk(Sr)rsrrs radh_x942_serialization_supportedz'Backend.dh_x942_serialization_supported_syy66!;;r`cht|dk7r td|j}|jj ||jj }|j |dk(|jj||t|}|j |dk(t||S)N z%An X25519 public key is 32 bytes longrl) rrrOrsEVP_PKEY_set_type NID_X25519rEVP_PKEY_set1_tls_encodedpointr%)rrSr4rs rax25519_load_public_bytesz Backend.x25519_load_public_bytesbs t9?DE E++-ii))(DII4H4HI C1H%ii66 dCI  C1H%h//r`cxt|dk7r tdd}|jd5}||dd||dd|j|}|jj |j |jj}ddd|j|jjk7|jj||jj}|j|jj||jjk(t||S#1swYxYw)Nrz&An X25519 private key is 32 bytes longs0.0+en" 0r)rr_zeroed_bytearrayrXrsrrXrqrrr.rMrir{r$)rrS pkcs8_prefixbarXr4s rax25519_load_private_bytesz!Backend.x25519_load_private_bytesqs& t9?EF FB  # #B '2#BqHBrsG$$R(Cyy33CGGTYY^^LH ( H 6799<<$))*A*AB  II ! !( +tyy/H/H H !x00( 's AD00D9c|jj||jj}|j ||jjk7|jj ||jj }|jj|}|j |dk(|jjd}|jj||}|j |dk(|j |d|jjk7|jj |d|jj}|S)Nrl EVP_PKEY **r) rsEVP_PKEY_CTX_new_idrqrrr.EVP_PKEY_CTX_freeEVP_PKEY_keygen_initrEVP_PKEY_keygenrM)rrq evp_pkey_ctxr evp_ppkeyr4s ra_evp_pkey_keygen_gczBackend._evp_pkey_keygen_gcsyy44S$))..I  LDIINN:;yy||L$))2M2MN ii,,\: C1H%IIMM-0 ii'' i@ C1H% IaLDIINN:;99<< ! dii.E.EFr`cd|j|jj}t||Sr)rrsrr$rNs rax25519_generate_keyzBackend.x25519_generate_keys)++DII,@,@A x00r`cJ|jry|jj Sr)rursrmrs rax25519_supportedzBackend.x25519_supporteds!   995555r`ct|dk7r td|jj|jj|j j |t|}|j||j j k7|j j||jj}t||S)N8z#An X448 public key is 56 bytes long) rrrsEVP_PKEY_new_raw_public_keyNID_X448rqrrr.rMr#rrSr4s rax448_load_public_byteszBackend.x448_load_public_bytess t9?BC C9988 II   c$i  H 6799<<$))*A*ABdH--r`ct|dk7r td|jj|}|jj |jj |jj|t|}|j||jjk7|jj||jj}t||S)Nrz$An X448 private key is 56 bytes long) rrrqr rsEVP_PKEY_new_raw_private_keyrrrr.rMr"rrSrWr4s rax448_load_private_byteszBackend.x448_load_private_bytess t9?CD D99((.9999 II   #d)  H 6799<<$))*A*ABtX..r`cd|j|jj}t||Sr)rrsrr"rNs rax448_generate_keyzBackend.x448_generate_keys)++DII,>,>?tX..r`c||jry|jj xr|jj Sr)rursrmrnrs rax448_supportedzBackend.x448_supporteds8    22 2 8II777 r`cH|jry|jjSr)rurs CRYPTOGRAPHY_HAS_WORKING_ED25519rs raed25519_supportedzBackend.ed25519_supporteds   yy999r`ctjd|t|tjk7r t d|j j|j j|jj|t|}|j||jjk7|jj||j j}t||S)NrSz&An Ed25519 public key is 32 bytes long)r _check_bytesrr._ED25519_KEY_SIZErrsr NID_ED25519rqrrr.rMrrs raed25519_load_public_bytesz!Backend.ed25519_load_public_bytess 64( t911 1EF F9988 II ! !499>>4T  H 6799<<$))*A*AB x00r`ct|tjk7r tdt j d||j j|}|jj|jj|j j|t|}|j||j jk7|j j||jj}t||S)Nz'An Ed25519 private key is 32 bytes longrS)rr.rrrr rqr rsrrrrr.rMrrs raed25519_load_private_bytesz"Backend.ed25519_load_private_bytess t911 1FG G vt,99((.9999 II ! !499>>8SY  H 6799<<$))*A*AB!$11r`cd|j|jj}t||Sr)rrsrrrNs raed25519_generate_keyzBackend.ed25519_generate_keys)++DII,A,AB!$11r`c||jry|jj xr|jj Sr)rurs#CRYPTOGRAPHY_OPENSSL_LESS_THAN_111Brnrs raed448_supportedzBackend.ed448_supporteds8    == = 8II777 r`ctjd|t|tk7r t d|j j |j j|jj|t|}|j||jjk7|jj||j j}t||S)NrSz$An Ed448 public key is 57 bytes long)rrrrrrsr NID_ED448rqrrr.rMrrs raed448_load_public_byteszBackend.ed448_load_public_bytess 64( t9 'CD D9988 II  s4y  H 6799<<$))*A*ABtX..r`ctjd|t|tk7r t d|j j |}|jj|jj|j j|t|}|j||j jk7|j j||jj}t||S)NrSz%An Ed448 private key is 57 bytes long)rr rrrrqr rsrrrrr.rMrrs raed448_load_private_bytesz Backend.ed448_load_private_bytes s vt, t9 'DE E99((.9999 II  3t9  H 6799<<$))*A*ABh//r`cd|j|jj}t||Sr)rrsrrrNs raed448_generate_keyzBackend.ed448_generate_keys)++DII,?,?@h//r`rCrc |jjd|}|jj|}|jj |t ||t ||||t j|| } | dk7r6|j} d|z|zdz} tdj| | |jj|ddS)NrrlizJNot enough memory to derive key. These parameters require {} MB of memory.) rqrr rsEVP_PBE_scryptrrP _MEM_LIMITr MemoryErrorrr ) rrrrrCrr<rr rr min_memorys ra derive_scryptzBackend.derive_scryptsiimm-v69900>ii&&     I        !8335Fq11J$$*F:$6  yy$Q''r`ctj|}|jr||jvry|j dr|j j dk(S|j j||jjk7S)NFs-sivrl) r_aead_cipher_nameru _fips_aeadendswithrsrrrqr)rr cipher_names raaead_cipher_supportedzBackend.aead_cipher_supportedAst,,V4   +T__"D    (99@@AE E ..{;tyy~~M r`c#~Kt|} ||j||y#|j||wxYww)z This method creates a bytearray, which we copy data into (hopefully also from a mutable buffer that can be dynamically erased!), and then zero when we're done. N) bytearray _zero_data)rrrs rarzBackend._zeroed_bytearrayOs8v  (H OOB 'DOOB 's =&=:=c.t|D]}d||< yr)range)rrSris rarzBackend._zero_data\svADGr`c#K||jjyt|}|jjd|dz}|jj ||| ||j |jj d||y#|j |jj d||wxYww)a This method takes bytes, which can be a bytestring or a mutable buffer like a bytearray, and yields a null-terminated version of that data. This is required because PKCS12_parse doesn't take a length with its password char * and ffi.from_buffer doesn't provide null termination. So, to support zeroing the data via bytearray we need to build this ridiculous construct that copies the memory, but zeroes it after use. Nrrlz uint8_t *)rqrrrmemmovercast)rrSdata_lenrs ra_zeroed_null_terminated_bufz#Backend._zeroed_null_terminated_bufcs <)).. 4yH))--(Q,7C II  c4 2 L  {C @(K {C @(KsA#C&B*-C.CCc|j||}|j|jr|jjnd|jDcgc]}|jc}fScc}wr) load_pkcs12rr certificateadditional_certs)rrSrdpkcs12rs ra%load_key_and_certificates_from_pkcs12z-Backend.load_key_and_certificates_from_pkcs12zsb!!$1 JJ'-{{FKK # #*0*A*A B*A$T  *A B   CsA&c |tjd||j|}|jj |j |j j}||j jk(r|jtd|j j||jj}|j jd}|j jd}|j jd}|j|5}|jj|||||} ddd dk(r|jtdd} d} g} |d|j jk7rF|j j|d|jj} |j!| d } |d|j jk7r|j j|d|jj"}|j%|}d}|jj'||j j}||j jk7r|j j)|}t+||} |d|j jk7r|j j|d|jj,}|jj/|d}|jj0s|jj2r t5|}nt7t5|}|D] }|jj9||}|j;||j jk7|j j||jj"}|j%|}d}|jj'||j j}||j jk7r|j j)|}| j=t+|| t?| | | S#1swY:xYw) Nrdz!Could not deserialize PKCS12 datarzX509 **zCryptography_STACK_OF_X509 **rzInvalid password or PKCS12 dataFr*) rr rXrsd2i_PKCS12_biorXrqrrrr. PKCS12_freerr PKCS12_parserMrrrX509_alias_get0rrU sk_X509_free sk_X509_numrrnrreversed sk_X509_valuerrrV)rrSrdrXp12 evp_pkey_ptrx509_ptr sk_x509_ptr password_bufrrradditional_certificatesr4rcert_objr maybe_namesk_x509rindicesr addl_cert addl_names rarzBackend.load_pkcs12s|    " ":x 8  &ii&&sww ? $))..  "@A Aiill3 5 56yy}}]3 99==+iimm$CD  - -h 7<))((\<;C8 !8  ">? ?"$ ?diinn ,yy||LOTYY5L5LMH//0C A;$)).. (99<< TYY-@-@ADt,HD224HJTYY^^+yy'' 3$Xt4D q>TYY^^ +iill;q>4993I3IJG))'' A7C  ==9966*"5:.yy..w:##DDIINN$:;yy||D$))*=*=> OOD1  !YY66tTYY^^L / $ 0 0 } g}|D]}t|t@rs|jB}|jE|jF}|jI|5}|jjK||d}|j3|dk(dddn|jE|}|jM||jjO| |}tPj3|dk\|jI|5}|jI|5}|r|jE|n|j j }| |jR}n|j j }|jjU||||| ||| | d }ddd|jj.rN| |j j k7r5|jjW|d|j j d| | ddd|j3|j j k7|j j=||jjX}|j[}|jj]||}|j3|dkD|j_|S#1swYxYw#1swY,xYw#1swYxYw) Nrrri Nrlz2PBESv2 is not supported by this version of OpenSSLzBSetting MAC algorithm is not supported by this version of OpenSSL.zUnsupported key encryption type)0rrrr(r{rqrr|rsrNID_aes_256_cbc&NID_pbe_WithSHA1And3_Key_TripleDES_CBCrdr}r~ryPKCS12_key_cert_algorithmrTPBESv1SHA1And3KeyTripleDESCBCPBESv2SHA256AndAES256CBCr _hmac_hashCryptography_HAS_PKCS12_SET_MACrr _kdf_roundsrrsk_X509_new_nullr.r&rU friendly_namerrrX509_alias_set1r sk_X509_pushbackendr PKCS12_createPKCS12_set_macr#r]i2d_PKCS12_biorb)rrrrr6rurdnid_certnid_key pkcs12_itermac_itermac_alg keycertalgr2ossl_cascaca_aliasossl_ca ca_name_bufrr.name_buf ossl_certr4r*rXs ra(serialize_key_and_certificates_to_pkcs12z0Backend.serialize_key_and_certificates_to_pkcs12s     vt , *M,F,F GHGKHiinnG  -"G"G yy<<9944))3399KK))JJKHiinnG+44H $m&O&O %,,**112 HGKH+44H-AAJT???99KK))JJt<<<yyDD.L 9944))33!)))$..:yy@@..>>(33##Gtyy~~$=>))..#//;2>> >? ? ;#c(a-iinnGii002Giill7DII,B,BCGHb"34!//H"oobnn=G99 $"ii77#["++C1H5 #oob1G(ii,,Wg>&&sax0" - -h 7<11$7859DOOD1tyy~~ ?"}}H#yy~~Hii--  8* 99tyy~~- (( IINN38F C499>>12iill3 5 56%%'ii&&sC0 C!G$!!#&&m878 7s272V=W-A3W  A,W=W W WW cN|jry|jjdk(Sr)rursCryptography_HAS_POLY1305rs rapoly1305_supportedzBackend.poly1305_supportedp s#   yy22a77r`ctjd|t|tk7r t dt ||S)NrzA poly1305 key is 32 bytes long)rr rrrr)rrs racreate_poly1305_ctxzBackend.create_poly1305_ctxu s8 uc* s8) )>? ?c**r`c0|jj Srrrs rapkcs7_supportedzBackend.pkcs7_supported| rr`ctjd||j|}|jj |j |j j|j j|j j}||j jk(r|jtd|j j||jj}|j|SNrSzUnable to parse PKCS7 data) rrrXrsPEM_read_bio_PKCS7rXrqrrrr. PKCS7_free_load_pkcs7_certificatesrrSrXp7s raload_pem_pkcs7_certificatesz#Backend.load_pem_pkcs7_certificates s 64(  & YY ) ) GGTYY^^TYY^^TYY^^     "9: : YY\\"dii22 3,,R00r`ctjd||j|}|jj |j |j j}||j jk(r|jtd|j j||jj}|j|Sr_) rrrXrs d2i_PKCS7_biorXrqrrrr.rarbrcs raload_der_pkcs7_certificatesz#Backend.load_der_pkcs7_certificates s 64(  & YY $ $SWWdiinn =    "9: : YY\\"dii22 3,,R00r`cH|jj|j}|j||jjk7||jj k7r)t dj|tj|jjj}|jj|}g}t|D]}|jj||}|j||j j"k7|jj%|}|j|dk(|j j'||jj(}|j+|} |j-| |S)NzNOnly basic signed structures are currently supported. NID for this data was {}rl)rs OBJ_obj2nidrrr"NID_pkcs7_signedrrrUNSUPPORTED_SERIALIZATIONr>signrr'rr)rqr X509_up_refr.rrr) rrdrqr2rcertsrrrrs rarbz Backend._load_pkcs7_certificates s=ii##BGG, C499#6#667 $)),, ,&((.s 22  $$))..ii##G,sA99**7A6D     6 7))''-C   q )99<<dii&9&9:D??4(D LL  r`r)rN)r\r]r^__doc__rr r;rr'rrrr SHA512_224 SHA512_256SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256rr, SECP224R1 SECP256R1 SECP384R1 SECP521R1rV_fips_rsa_min_key_size_fips_rsa_min_public_exponent_fips_dsa_min_modulus_fips_dh_min_key_size_fips_dh_min_modulusrstrrrtypingOptionalListr& _OpenSSLErrorrrtrr contextlibrrr|rrrrbytes HashAlgorithmrrrrrrrr HashContextrr:rOrrrwr rrrr r_OpenSSLErrorWithTextrrr&r/ RSAPrivateKeyr5r8RSAPrivateNumbersrGRSAPublicNumbers RSAPublicKeyrJrOr2rXr]rbr7rr8rrr)rr+ DSAParametersr DSAPrivateKeyrrrDSAPrivateNumbersrDSAPublicNumbers DSAPublicKeyrDSAParameterNumbersrrrrrr9r rrrr* DHParametersrrqrrrr CertificateAnyrrCertificateSigningRequestrCertificateRevocationListrr6rrrrNoReturnr EllipticCurver'EllipticCurveSignatureAlgorithmr+EllipticCurvePrivateKeyr1EllipticCurvePrivateNumbersr9EllipticCurvePublicNumbersEllipticCurvePublicKeyr;rFrPr-rRrWrXr/r!rArHr7r(rryrzrrrrrrrr DHPrivateKeyrrDHPrivateNumbersrDHPublicNumbers DHPublicKeyrDHParameterNumbersrrrr1X25519PublicKeyrX25519PrivateKeyrrrrr0 X448PublicKeyrX448PrivateKeyrrrrr.Ed25519PublicKeyrEd25519PrivateKeyrrrr-Ed448PublicKeyrEd448PrivateKeyrrr rIteratorrrrrTupler rVrrRrSrVrYrr[r]rerhrbr_r`rarcrcs  D JFM      L     "$)!I  55:& # GKE E G,A,A BCE  E $ 5 .**& *55 c //22%+%9%92 2 0D0D 9M9M ((<(<((.--. .:$: .(<(<..----   - , ,d ,t ,>BHK%K-1K K K%K-1K K .v/C/C..(''(( (  (  ( (02W-B-B!C2< W22 3<  c" " .1   . " .1  ' &&' )-'    ' R 8++ 8   8  K% K  E D@8<D@ D@L7@3C7@r  f.B.B  t  ->4&))8I8I)0 3++ 3   399  9 & 9,,9  9*8++8  8&/../  /  &t&8F,@,@8T8  T -)=-,-    //%(  )-    (1(12B(1T - -"// -//%()-   4 112B1.))"//)$t//FJJLvzzLd.>.>L T;; T;;   + +8  4 11   72 h-6??-^b.>.>4 4?? 4 4  4%% # #,B55B # #B. A44 A " " AA%%A49A " "A,%B %B)+)9)9%B # #%BN8"*:*:8=#=    )+)9)9     B,<,<"))8000$x<((x<++x<,FF x< xr?r@rArBrCrDrErF,cryptography.hazmat.primitives.ciphers.modesrGrHrIrJrKrLrMrNrO"cryptography.hazmat.primitives.kdfrP,cryptography.hazmat.primitives.serializationrQ3cryptography.hazmat.primitives.serialization.pkcs12rRrSrTrUrV namedtuplerWr[rcrrrEr_r`rars5  %$B5GB   EBA8@H            6<$[ # #L5*2E F   m$m$`I2JWJcJ )r`