
    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 d dlZddgZ ej                         Zej                   d	k\  rej#                  d
       ej$                  dkD  rej'                  d       nej'                  d       ej'                  d       	 ej)                  d      Z eee       d Zy# e$ r(Z e	e      j1                  d      dk7  r ed       dZ[ww xY w)    )unicode_literalsdivisionabsolute_importprint_functionN   )register_ffi)str_cls)LibraryNotFoundErrorcrypt32	get_error)r   	   Tl        ztypedef uint64_t ULONG_PTR;z typedef unsigned long ULONG_PTR;a  
    typedef HANDLE HCERTSTORE;
    typedef unsigned char *PBYTE;


    typedef struct _CRYPTOAPI_BLOB {
        DWORD cbData;
        PBYTE pbData;
    } CRYPTOAPI_BLOB;
    typedef CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB;
    typedef CRYPTOAPI_BLOB CERT_NAME_BLOB;
    typedef CRYPTOAPI_BLOB CRYPT_BIT_BLOB;
    typedef CRYPTOAPI_BLOB CRYPT_OBJID_BLOB;

    typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
        LPSTR pszObjId;
        CRYPT_OBJID_BLOB Parameters;
    } CRYPT_ALGORITHM_IDENTIFIER;

    typedef struct _FILETIME {
        DWORD dwLowDateTime;
        DWORD dwHighDateTime;
    } FILETIME;

    typedef struct _CERT_PUBLIC_KEY_INFO {
        CRYPT_ALGORITHM_IDENTIFIER Algorithm;
        CRYPT_BIT_BLOB PublicKey;
    } CERT_PUBLIC_KEY_INFO;

    typedef struct _CERT_EXTENSION {
        LPSTR pszObjId;
        BOOL fCritical;
        CRYPT_OBJID_BLOB Value;
    } CERT_EXTENSION, *PCERT_EXTENSION;

    typedef struct _CERT_INFO {
        DWORD dwVersion;
        CRYPT_INTEGER_BLOB SerialNumber;
        CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
        CERT_NAME_BLOB Issuer;
        FILETIME NotBefore;
        FILETIME NotAfter;
        CERT_NAME_BLOB Subject;
        CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
        CRYPT_BIT_BLOB IssuerUniqueId;
        CRYPT_BIT_BLOB SubjectUniqueId;
        DWORD cExtension;
        PCERT_EXTENSION *rgExtension;
    } CERT_INFO, *PCERT_INFO;

    typedef struct _CERT_CONTEXT {
        DWORD dwCertEncodingType;
        PBYTE pbCertEncoded;
        DWORD cbCertEncoded;
        PCERT_INFO pCertInfo;
        HCERTSTORE hCertStore;
    } CERT_CONTEXT, *PCERT_CONTEXT;

    typedef struct _CERT_TRUST_STATUS {
        DWORD dwErrorStatus;
        DWORD dwInfoStatus;
    } CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;

    typedef struct _CERT_ENHKEY_USAGE {
        DWORD cUsageIdentifier;
        LPSTR *rgpszUsageIdentifier;
    } CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;

    typedef struct _CERT_CHAIN_ELEMENT {
        DWORD cbSize;
        PCERT_CONTEXT pCertContext;
        CERT_TRUST_STATUS TrustStatus;
        void *pRevocationInfo;
        PCERT_ENHKEY_USAGE pIssuanceUsage;
        PCERT_ENHKEY_USAGE pApplicationUsage;
        LPCWSTR pwszExtendedErrorInfo;
    } CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;

    typedef struct _CERT_SIMPLE_CHAIN {
        DWORD cbSize;
        CERT_TRUST_STATUS TrustStatus;
        DWORD cElement;
        PCERT_CHAIN_ELEMENT *rgpElement;
        void *pTrustListInfo;
        BOOL fHasRevocationFreshnessTime;
        DWORD dwRevocationFreshnessTime;
    } CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;

    typedef struct _CERT_CHAIN_CONTEXT {
        DWORD cbSize;
        CERT_TRUST_STATUS TrustStatus;
        DWORD cChain;
        PCERT_SIMPLE_CHAIN *rgpChain;
        DWORD cLowerQualityChainContext;
        void *rgpLowerQualityChainContext;
        BOOL fHasRevocationFreshnessTime;
        DWORD dwRevocationFreshnessTime;
    } CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;

    typedef struct _CERT_USAGE_MATCH {
        DWORD dwType;
        CERT_ENHKEY_USAGE Usage;
    } CERT_USAGE_MATCH;

    typedef struct _CERT_CHAIN_PARA {
        DWORD cbSize;
        CERT_USAGE_MATCH RequestedUsage;
    } CERT_CHAIN_PARA;

    typedef struct _CERT_CHAIN_POLICY_PARA {
        DWORD cbSize;
        DWORD dwFlags;
        void  *pvExtraPolicyPara;
    } CERT_CHAIN_POLICY_PARA;

    typedef struct _HTTPSPolicyCallbackData {
        DWORD cbSize;
        DWORD dwAuthType;
        DWORD fdwChecks;
        WCHAR *pwszServerName;
    } SSL_EXTRA_CERT_CHAIN_POLICY_PARA;

    typedef struct _CERT_CHAIN_POLICY_STATUS {
        DWORD cbSize;
        DWORD dwError;
        LONG lChainIndex;
        LONG lElementIndex;
        void *pvExtraPolicyStatus;
    } CERT_CHAIN_POLICY_STATUS;

    typedef HANDLE HCERTCHAINENGINE;
    typedef HANDLE HCRYPTPROV;

    HCERTSTORE CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV hCryptProv,
                    DWORD dwFlags, void *pvPara);
    BOOL CertAddEncodedCertificateToStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, BYTE *pbCertEncoded,
                    DWORD cbCertEncoded, DWORD dwAddDisposition, PCERT_CONTEXT *ppCertContext);
    BOOL CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, CERT_CONTEXT *pCertContext, FILETIME *pTime,
                    HCERTSTORE hAdditionalStore, CERT_CHAIN_PARA *pChainPara, DWORD dwFlags, void *pvReserved,
                    PCERT_CHAIN_CONTEXT *ppChainContext);
    BOOL CertVerifyCertificateChainPolicy(ULONG_PTR pszPolicyOID, PCERT_CHAIN_CONTEXT pChainContext,
                    CERT_CHAIN_POLICY_PARA *pPolicyPara, CERT_CHAIN_POLICY_STATUS *pPolicyStatus);
    void CertFreeCertificateChain(PCERT_CHAIN_CONTEXT pChainContext);

    HCERTSTORE CertOpenSystemStoreW(HANDLE hprov, LPCWSTR szSubsystemProtocol);
    PCERT_CONTEXT CertEnumCertificatesInStore(HCERTSTORE hCertStore, CERT_CONTEXT *pPrevCertContext);
    BOOL CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags);
    BOOL CertGetEnhancedKeyUsage(CERT_CONTEXT *pCertContext, DWORD dwFlags, CERT_ENHKEY_USAGE *pUsage, DWORD *pcbUsage);
zcrypt32.dllzcannot load libraryzcrypt32.dll could not be foundc                  *    t         j                         S )N)ffigetwinerror     R/var/www/horilla/myenv/lib/python3.12/site-packages/oscrypto/_win/_crypt32_cffi.pyr   r      s    ??r   )
__future__r   r   r   r   sys_ffir   _typesr	   errorsr
   cffi__all__FFIr   __version_info__set_unicodemaxsizecdefdlopenr   OSErrorefindr   r   r   r   <module>r%      s    R R 
   )   dhhjF"OOD;;HH*+HH/0  T
 Tn
jj'G# 	 
qz,-3"#CDD	
s    B> >C+#C&&C+