
    Bwg&                     "   d dl mZmZmZmZ d dlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZ d dlmZ g d	Z e       j%                  d
      Ze
 eddd      Zes ed      	  e       Zej+                  d       ej-                  ej/                  e      j1                  d             j3                  d      Zdev Z ej<                  de      Zes ej<                  de      Zes ed      ejA                  d      Z! ejD                  dde!      jG                  d      Z$ e%d e$D              Z&dZ' e%       Z(ere!Z'e&Z(dZ!dZ& e       Z)e)j/                  e      Z* ee*e)       e&dk  r e e	de!            e&d k  re)j+                  d!       e&d"k\  re)j+                  d#       e)j+                  d$       e&d"k  re)j+                  d%       ne)j+                  d&       e&d k  re)j+                  d'       ne)j+                  d(       e&d)k  re)j+                  d*       ye)j+                  d+       y# e$ rZ  e       Zej+                  d       ej-                  ej/                  e      j9                  d             j3                  d      ZY w xY w),    )unicode_literalsdivisionabsolute_importprint_functionN   )_backend_config)pretty_message)get_libraryregister_ffi)LibraryNotFoundError)FFI)is_libressl	libcryptolibressl_versionlibressl_version_infoversionversion_infolibcrypto_pathcryptozlibcrypto.dylib42z(The library libcrypto could not be foundz%const char *SSLeay_version(int type);zutf-8z&const char *OpenSSL_version(int type);LibreSSLz\b(\d\.\d\.\d[a-z]*)\bz(?<=LibreSSL )(\d\.\d(\.\d)?)\bz(Error detecting the version of libcrypto   z(\d)([a-z]+)z\1.\2.c              #   V   K   | ]!  }|j                         rt        |      n| # y w)N)isdigitint).0parts     X/var/www/horilla/myenv/lib/python3.12/site-packages/oscrypto/_openssl/_libcrypto_cffi.py	<genexpr>r    /   s!     Ut$,,.SYd:Us   ') z1.0.1)r   r   r   )r   	      zX
        OpenSSL versions older than 0.9.8 are not supported - found version %s
        )r   r   zV
        void ERR_load_crypto_strings(void);
        void ERR_free_strings(void);
    )   z
        typedef ... OSSL_LIB_CTX;
        typedef ... OSSL_PROVIDER;

        int OSSL_PROVIDER_available(OSSL_LIB_CTX *libctx, const char *name);
        OSSL_PROVIDER *OSSL_PROVIDER_load(OSSL_LIB_CTX *libctx, const char *name);
    aP  
    typedef ... EVP_MD;
    typedef uintptr_t EVP_CIPHER_CTX;
    typedef ... EVP_CIPHER;
    typedef ... ENGINE;
    typedef uintptr_t EVP_PKEY;
    typedef uintptr_t X509;
    typedef uintptr_t DH;
    typedef uintptr_t RSA;
    typedef uintptr_t DSA;
    typedef uintptr_t EC_KEY;
    typedef ... EVP_MD_CTX;
    typedef ... EVP_PKEY_CTX;
    typedef ... BN_GENCB;
    typedef ... BIGNUM;

    unsigned long ERR_get_error(void);
    char *ERR_error_string(unsigned long e, char *buf);
    unsigned long ERR_peek_error(void);

    void OPENSSL_config(const char *config_name);

    EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
    void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx);

    int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen);
    int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *x, int padding);
    int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);

    const EVP_CIPHER *EVP_aes_128_cbc(void);
    const EVP_CIPHER *EVP_aes_192_cbc(void);
    const EVP_CIPHER *EVP_aes_256_cbc(void);
    const EVP_CIPHER *EVP_des_cbc(void);
    const EVP_CIPHER *EVP_des_ede_cbc(void);
    const EVP_CIPHER *EVP_des_ede3_cbc(void);
    const EVP_CIPHER *EVP_rc4(void);
    const EVP_CIPHER *EVP_rc2_cbc(void);

    int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
                    ENGINE *impl, const char *key,
                    const char *iv);
    int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, char *out, int *outl,
                    const char *in, int inl);
    int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, char *out, int *outl);

    int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
                    ENGINE *impl, const char *key,
                    const char *iv);
    int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, char *out, int *outl,
                    const char *in, int inl);
    int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, char *out, int *outl);

    EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const char **pp,
                    long length);
    EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const char **pp, long length);
    int i2d_PUBKEY(EVP_PKEY *a, char **pp);
    void EVP_PKEY_free(EVP_PKEY *key);

    X509 *d2i_X509(X509 **px, const char **in, int len);
    int i2d_X509(X509 *x, char **out);
    EVP_PKEY *X509_get_pubkey(X509 *x);
    void X509_free(X509 *a);

    RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey);
    void RSA_free(RSA *r);

    int RSA_public_encrypt(int flen, const char *from,
                    char *to, RSA *rsa, int padding);
    int RSA_private_encrypt(int flen, const char *from,
                    char *to, RSA *rsa, int padding);
    int RSA_public_decrypt(int flen, const char *from,
                    char *to, RSA *rsa, int padding);
    int RSA_private_decrypt(int flen, const char *from,
                    char *to, RSA *rsa, int padding);

    int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);

    const EVP_MD *EVP_md5(void);
    const EVP_MD *EVP_sha1(void);
    const EVP_MD *EVP_sha224(void);
    const EVP_MD *EVP_sha256(void);
    const EVP_MD *EVP_sha384(void);
    const EVP_MD *EVP_sha512(void);

    int PKCS12_key_gen_uni(char *pass, int passlen, char *salt,
                    int saltlen, int id, int iter, int n,
                    char *out, const EVP_MD *md_type);

    void BN_free(BIGNUM *a);
    int BN_dec2bn(BIGNUM **a, const char *str);

    DH *DH_new(void);
    int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, BN_GENCB *cb);
    int i2d_DHparams(const DH *a, char **pp);
    void DH_free(DH *dh);

    RSA *RSA_new(void);
    int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
    int i2d_RSAPublicKey(RSA *a, char **pp);
    int i2d_RSAPrivateKey(RSA *a, char **pp);

    DSA *DSA_new(void);
    int DSA_generate_parameters_ex(DSA *dsa, int bits,
                    const char *seed, int seed_len, int *counter_ret,
                    unsigned long *h_ret, BN_GENCB *cb);
    int DSA_generate_key(DSA *a);
    int i2d_DSA_PUBKEY(const DSA *a, char **pp);
    int i2d_DSAPrivateKey(const DSA *a, char **pp);
    void DSA_free(DSA *dsa);

    EC_KEY *EC_KEY_new_by_curve_name(int nid);
    int EC_KEY_generate_key(EC_KEY *key);
    void EC_KEY_set_asn1_flag(EC_KEY *, int);
    int i2d_ECPrivateKey(EC_KEY *key, char **out);
    int i2o_ECPublicKey(EC_KEY *key, char **out);
    void EC_KEY_free(EC_KEY *key);
z0
        int EVP_PKEY_size(EVP_PKEY *pkey);
    z4
        int EVP_PKEY_get_size(EVP_PKEY *pkey);
    zd
        EVP_MD_CTX *EVP_MD_CTX_create(void);
        void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
    z^
        EVP_MD_CTX *EVP_MD_CTX_new(void);
        void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
    )r   a  
        typedef ... *DSA_SIG;
        typedef ... *ECDSA_SIG;

        DSA_SIG *DSA_do_sign(const char *dgst, int dlen, DSA *dsa);
        ECDSA_SIG *ECDSA_do_sign(const char *dgst, int dgst_len, EC_KEY *eckey);

        DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const char **pp, long length);
        ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **v, const char **pp, long len);

        int i2d_DSA_SIG(const DSA_SIG *a, char **pp);
        int i2d_ECDSA_SIG(const ECDSA_SIG *a, char **pp);

        int DSA_do_verify(const char *dgst, int dgst_len, DSA_SIG *sig, DSA *dsa);
        int ECDSA_do_verify(const char *dgst, int dgst_len, const ECDSA_SIG *sig, EC_KEY *eckey);

        void DSA_SIG_free(DSA_SIG *a);
        void ECDSA_SIG_free(ECDSA_SIG *a);

        DSA *EVP_PKEY_get1_DSA(EVP_PKEY *pkey);
        EC_KEY *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey);

        int RSA_verify_PKCS1_PSS(RSA *rsa, const char *mHash,
                        const EVP_MD *Hash, const char *EM,
                        int sLen);
        int RSA_padding_add_PKCS1_PSS(RSA *rsa, char *EM,
                        const char *mHash, const EVP_MD *Hash,
                        int sLen);

        int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
        int EVP_SignFinal(EVP_MD_CTX *ctx, char *sig, unsigned int *s, EVP_PKEY *pkey);
        int EVP_VerifyFinal(EVP_MD_CTX *ctx, char *sigbuf, unsigned int siglen, EVP_PKEY *pkey);

        void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags);
    a  
        int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
                        const char *salt, int saltlen, int iter,
                        const EVP_MD *digest,
                        int keylen, char *out);

        int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
        int EVP_DigestSignFinal(EVP_MD_CTX *ctx, char *sig, size_t *siglen);

        int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
        int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const char *sig, size_t siglen);

        int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, int cmd, int p1, void *p2);
    )+
__future__r   r   r   r   rer!   r   _errorsr	   _ffir
   r   errorsr   cffir   __all__getr   vfficdefstringdlopenSSLeay_versiondecodeversion_stringAttributeErrorOpenSSL_versionr   searchversion_matchgroupr   subsplitversion_partstupler   r   r   ffir        r   <module>r@      s   R R 	  $ , )  !"&&'78 +<dCN
I
JJa5DII56[[^!<!K!KA!NOVVW^_N N*		9>JBIIE~VM
I
JJ


a
 	7;AA#FU}UU   (GL	eJJ~&	 Y )
~	 		    &HH  	 5HH  	  t
 tl %HH  	 HH  	 &HH  	
 HH  	
 $HH " "	H HH  	Q 	 a5DII67[[^!<!L!LQ!OPWWX_`Nas   "AH/ /AJJ