mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Working on CryptoAPI
This commit is contained in:
committed by
Clement Rouault
parent
15e40da1ca
commit
5478bda8bc
@@ -9,7 +9,7 @@ class WinDef(object):
|
||||
self.code = code
|
||||
|
||||
def generate_ctypes(self):
|
||||
return """{0} = Flag("{0}", {1})""".format(self.name, self.code)
|
||||
return """{0} = make_flag("{0}", {1})""".format(self.name, self.code)
|
||||
|
||||
class WinDefParser(Parser):
|
||||
|
||||
|
||||
@@ -2759,4 +2759,30 @@ typedef struct _CRYPT_KEY_PROV_INFO {
|
||||
DWORD cProvParam;
|
||||
PCRYPT_KEY_PROV_PARAM rgProvParam;
|
||||
DWORD dwKeySpec;
|
||||
} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;
|
||||
} CRYPT_KEY_PROV_INFO, *PCRYPT_KEY_PROV_INFO;
|
||||
|
||||
typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
|
||||
DWORD cbSize;
|
||||
DWORD dwMsgEncodingType;
|
||||
HCRYPTPROV_LEGACY hCryptProv;
|
||||
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
|
||||
VOID *pvEncryptionAuxInfo;
|
||||
DWORD dwFlags;
|
||||
DWORD dwInnerContentType;
|
||||
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;
|
||||
|
||||
|
||||
typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {
|
||||
DWORD cbSize;
|
||||
DWORD dwMsgAndCertEncodingType;
|
||||
DWORD cCertStore;
|
||||
HCERTSTORE *rghCertStore;
|
||||
DWORD dwFlags;
|
||||
} CRYPT_DECRYPT_MESSAGE_PARA, *PCRYPT_DECRYPT_MESSAGE_PARA;
|
||||
|
||||
|
||||
typedef struct _CERT_KEY_CONTEXT {
|
||||
DWORD cbSize;
|
||||
HCRYPTPROV hCryptProv;
|
||||
DWORD dwKeySpec;
|
||||
} CERT_KEY_CONTEXT, *PCERT_KEY_CONTEXT;
|
||||
@@ -247,4 +247,217 @@
|
||||
#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5
|
||||
#define CERT_NAME_DNS_TYPE 6
|
||||
#define CERT_NAME_URL_TYPE 7
|
||||
#define CERT_NAME_UPN_TYPE 8
|
||||
#define CERT_NAME_UPN_TYPE 8
|
||||
|
||||
|
||||
|
||||
#define CERT_KEY_PROV_HANDLE_PROP_ID 1
|
||||
#define CERT_KEY_PROV_INFO_PROP_ID 2
|
||||
#define CERT_SHA1_HASH_PROP_ID 3
|
||||
#define CERT_MD5_HASH_PROP_ID 4
|
||||
#define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID
|
||||
#define CERT_KEY_CONTEXT_PROP_ID 5
|
||||
#define CERT_KEY_SPEC_PROP_ID 6
|
||||
#define CERT_IE30_RESERVED_PROP_ID 7
|
||||
#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8
|
||||
#define CERT_ENHKEY_USAGE_PROP_ID 9
|
||||
#define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID
|
||||
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10
|
||||
#define CERT_FRIENDLY_NAME_PROP_ID 11
|
||||
#define CERT_PVK_FILE_PROP_ID 12
|
||||
#define CERT_DESCRIPTION_PROP_ID 13
|
||||
#define CERT_ACCESS_STATE_PROP_ID 14
|
||||
#define CERT_SIGNATURE_HASH_PROP_ID 15
|
||||
#define CERT_SMART_CARD_DATA_PROP_ID 16
|
||||
#define CERT_EFS_PROP_ID 17
|
||||
#define CERT_FORTEZZA_DATA_PROP_ID 18
|
||||
#define CERT_ARCHIVED_PROP_ID 19
|
||||
#define CERT_KEY_IDENTIFIER_PROP_ID 20
|
||||
#define CERT_AUTO_ENROLL_PROP_ID 21
|
||||
#define CERT_PUBKEY_ALG_PARA_PROP_ID 22
|
||||
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 23
|
||||
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 24
|
||||
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 25
|
||||
#define CERT_ENROLLMENT_PROP_ID 26
|
||||
#define CERT_DATE_STAMP_PROP_ID 27
|
||||
#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28
|
||||
#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 29
|
||||
#define CERT_EXTENDED_ERROR_INFO_PROP_ID 30
|
||||
#define CERT_RENEWAL_PROP_ID 64
|
||||
#define CERT_ARCHIVED_KEY_HASH_PROP_ID 65
|
||||
#define CERT_AUTO_ENROLL_RETRY_PROP_ID 66
|
||||
#define CERT_AIA_URL_RETRIEVED_PROP_ID 67
|
||||
#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID 68
|
||||
#define CERT_BACKED_UP_PROP_ID 69
|
||||
#define CERT_OCSP_RESPONSE_PROP_ID 70
|
||||
#define CERT_REQUEST_ORIGINATOR_PROP_ID 71
|
||||
#define CERT_SOURCE_LOCATION_PROP_ID 72
|
||||
|
||||
|
||||
|
||||
#define CRYPT_ACQUIRE_CACHE_FLAG 0x00000001
|
||||
#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x00000002
|
||||
#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x00000004
|
||||
#define CRYPT_ACQUIRE_NO_HEALING 0x00000008
|
||||
#define CRYPT_ACQUIRE_SILENT_FLAG 0x00000040
|
||||
#define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x00070000
|
||||
#define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x00010000
|
||||
#define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x00020000
|
||||
#define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x00040000
|
||||
|
||||
|
||||
|
||||
#define szOID_RSA "1.2.840.113549"
|
||||
#define szOID_PKCS "1.2.840.113549.1"
|
||||
#define szOID_RSA_HASH "1.2.840.113549.2"
|
||||
#define szOID_RSA_ENCRYPT "1.2.840.113549.3"
|
||||
#define szOID_PKCS_1 "1.2.840.113549.1.1"
|
||||
#define szOID_PKCS_2 "1.2.840.113549.1.2"
|
||||
#define szOID_PKCS_3 "1.2.840.113549.1.3"
|
||||
#define szOID_PKCS_4 "1.2.840.113549.1.4"
|
||||
#define szOID_PKCS_5 "1.2.840.113549.1.5"
|
||||
#define szOID_PKCS_6 "1.2.840.113549.1.6"
|
||||
#define szOID_PKCS_7 "1.2.840.113549.1.7"
|
||||
#define szOID_PKCS_8 "1.2.840.113549.1.8"
|
||||
#define szOID_PKCS_9 "1.2.840.113549.1.9"
|
||||
#define szOID_PKCS_10 "1.2.840.113549.1.10"
|
||||
#define szOID_PKCS_12 "1.2.840.113549.1.12"
|
||||
#define szOID_RSA_RSA "1.2.840.113549.1.1.1"
|
||||
#define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2"
|
||||
#define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3"
|
||||
#define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4"
|
||||
#define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5"
|
||||
#define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6"
|
||||
#define szOID_RSAES_OAEP "1.2.840.113549.1.1.7"
|
||||
#define szOID_RSA_MGF1 "1.2.840.113549.1.1.8"
|
||||
#define szOID_RSA_PSPECIFIED "1.2.840.113549.1.1.9"
|
||||
#define szOID_RSA_SSA_PSS "1.2.840.113549.1.1.10"
|
||||
#define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11"
|
||||
#define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12"
|
||||
#define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13"
|
||||
#define szOID_RSA_DH "1.2.840.113549.1.3.1"
|
||||
#define szOID_RSA_data "1.2.840.113549.1.7.1"
|
||||
#define szOID_RSA_signedData "1.2.840.113549.1.7.2"
|
||||
#define szOID_RSA_envelopedData "1.2.840.113549.1.7.3"
|
||||
#define szOID_RSA_signEnvData "1.2.840.113549.1.7.4"
|
||||
#define szOID_RSA_digestedData "1.2.840.113549.1.7.5"
|
||||
#define szOID_RSA_hashedData "1.2.840.113549.1.7.5"
|
||||
#define szOID_RSA_encryptedData "1.2.840.113549.1.7.6"
|
||||
#define szOID_RSA_emailAddr "1.2.840.113549.1.9.1"
|
||||
#define szOID_RSA_unstructName "1.2.840.113549.1.9.2"
|
||||
#define szOID_RSA_contentType "1.2.840.113549.1.9.3"
|
||||
#define szOID_RSA_messageDigest "1.2.840.113549.1.9.4"
|
||||
#define szOID_RSA_signingTime "1.2.840.113549.1.9.5"
|
||||
#define szOID_RSA_counterSign "1.2.840.113549.1.9.6"
|
||||
#define szOID_RSA_challengePwd "1.2.840.113549.1.9.7"
|
||||
#define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8"
|
||||
#define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9"
|
||||
#define szOID_RSA_certExtensions "1.2.840.113549.1.9.14"
|
||||
#define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15"
|
||||
#define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1"
|
||||
#define szOID_TIMESTAMP_TOKEN "1.2.840.113549.1.9.16.1.4"
|
||||
#define szOID_RFC3161_counterSign "1.3.6.1.4.1.311.3.3.1"
|
||||
#define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3"
|
||||
#define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5"
|
||||
#define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6"
|
||||
#define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7"
|
||||
|
||||
#define szOID_RSA_MD2 "1.2.840.113549.2.2"
|
||||
#define szOID_RSA_MD4 "1.2.840.113549.2.4"
|
||||
#define szOID_RSA_MD5 "1.2.840.113549.2.5"
|
||||
#define szOID_RSA_RC2CBC "1.2.840.113549.3.2"
|
||||
#define szOID_RSA_RC4 "1.2.840.113549.3.4"
|
||||
#define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7"
|
||||
#define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9"
|
||||
#define szOID_ANSI_X942 "1.2.840.10046"
|
||||
#define szOID_ANSI_X942_DH "1.2.840.10046.2.1"
|
||||
#define szOID_X957 "1.2.840.10040"
|
||||
#define szOID_X957_DSA "1.2.840.10040.4.1"
|
||||
#define szOID_X957_SHA1DSA "1.2.840.10040.4.3"
|
||||
#define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1"
|
||||
#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7"
|
||||
#define szOID_ECC_CURVE_P384 "1.3.132.0.34"
|
||||
#define szOID_ECC_CURVE_P521 "1.3.132.0.35"
|
||||
#define szOID_ECDSA_SHA1 "1.2.840.10045.4.1"
|
||||
#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3"
|
||||
#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2"
|
||||
#define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3"
|
||||
#define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4"
|
||||
#define szOID_NIST_AES128_CBC "2.16.840.1.101.3.4.1.2"
|
||||
#define szOID_NIST_AES192_CBC "2.16.840.1.101.3.4.1.22"
|
||||
#define szOID_NIST_AES256_CBC "2.16.840.1.101.3.4.1.42"
|
||||
#define szOID_NIST_AES128_WRAP "2.16.840.1.101.3.4.1.5"
|
||||
#define szOID_NIST_AES192_WRAP "2.16.840.1.101.3.4.1.25"
|
||||
#define szOID_NIST_AES256_WRAP "2.16.840.1.101.3.4.1.45"
|
||||
#define szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF "1.3.133.16.840.63.0.2"
|
||||
#define szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF "1.3.132.1.11.1"
|
||||
#define szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF "1.3.132.1.11.2"
|
||||
#define szOID_DS "2.5"
|
||||
#define szOID_DSALG "2.5.8"
|
||||
#define szOID_DSALG_CRPT "2.5.8.1"
|
||||
#define szOID_DSALG_HASH "2.5.8.2"
|
||||
#define szOID_DSALG_SIGN "2.5.8.3"
|
||||
#define szOID_DSALG_RSA "2.5.8.1.1"
|
||||
#define szOID_OIW "1.3.14"
|
||||
#define szOID_OIWSEC "1.3.14.3.2"
|
||||
#define szOID_OIWSEC_md4RSA "1.3.14.3.2.2"
|
||||
#define szOID_OIWSEC_md5RSA "1.3.14.3.2.3"
|
||||
#define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4"
|
||||
#define szOID_OIWSEC_desECB "1.3.14.3.2.6"
|
||||
#define szOID_OIWSEC_desCBC "1.3.14.3.2.7"
|
||||
#define szOID_OIWSEC_desOFB "1.3.14.3.2.8"
|
||||
#define szOID_OIWSEC_desCFB "1.3.14.3.2.9"
|
||||
#define szOID_OIWSEC_desMAC "1.3.14.3.2.10"
|
||||
#define szOID_OIWSEC_rsaSign "1.3.14.3.2.11"
|
||||
#define szOID_OIWSEC_dsa "1.3.14.3.2.12"
|
||||
#define szOID_OIWSEC_shaDSA "1.3.14.3.2.13"
|
||||
#define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14"
|
||||
#define szOID_OIWSEC_shaRSA "1.3.14.3.2.15"
|
||||
#define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16"
|
||||
#define szOID_OIWSEC_desEDE "1.3.14.3.2.17"
|
||||
#define szOID_OIWSEC_sha "1.3.14.3.2.18"
|
||||
#define szOID_OIWSEC_mdc2 "1.3.14.3.2.19"
|
||||
#define szOID_OIWSEC_dsaComm "1.3.14.3.2.20"
|
||||
#define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21"
|
||||
#define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22"
|
||||
#define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23"
|
||||
#define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24"
|
||||
#define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25"
|
||||
#define szOID_OIWSEC_sha1 "1.3.14.3.2.26"
|
||||
#define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27"
|
||||
#define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28"
|
||||
#define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29"
|
||||
#define szOID_OIWDIR "1.3.14.7.2"
|
||||
#define szOID_OIWDIR_CRPT "1.3.14.7.2.1"
|
||||
#define szOID_OIWDIR_HASH "1.3.14.7.2.2"
|
||||
#define szOID_OIWDIR_SIGN "1.3.14.7.2.3"
|
||||
#define szOID_OIWDIR_md2 "1.3.14.7.2.2.1"
|
||||
#define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1"
|
||||
#define szOID_INFOSEC "2.16.840.1.101.2.1"
|
||||
#define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1"
|
||||
#define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2"
|
||||
#define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3"
|
||||
#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
|
||||
#define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5"
|
||||
#define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6"
|
||||
#define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7"
|
||||
#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
|
||||
#define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9"
|
||||
#define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10"
|
||||
#define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11"
|
||||
#define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12"
|
||||
#define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13"
|
||||
#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
|
||||
#define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15"
|
||||
#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
|
||||
#define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17"
|
||||
#define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18"
|
||||
#define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19"
|
||||
#define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20"
|
||||
#define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21"
|
||||
#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1"
|
||||
#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2"
|
||||
#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3"
|
||||
|
||||
|
||||
#define CRYPT_E_NOT_FOUND (0x80092004L)
|
||||
|
||||
@@ -178,4 +178,43 @@ BOOL WINAPI CertGetCertificateContextProperty(
|
||||
DWORD WINAPI CertEnumCertificateContextProperties(
|
||||
_In_ PCCERT_CONTEXT pCertContext,
|
||||
_In_ DWORD dwPropId
|
||||
);
|
||||
|
||||
BOOL WINAPI CryptEncryptMessage(
|
||||
_In_ PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
|
||||
_In_ DWORD cRecipientCert,
|
||||
_In_ PCCERT_CONTEXT *rgpRecipientCert,
|
||||
_In_ BYTE *pbToBeEncrypted,
|
||||
_In_ DWORD cbToBeEncrypted,
|
||||
_Out_ BYTE *pbEncryptedBlob,
|
||||
_Inout_ DWORD *pcbEncryptedBlob
|
||||
);
|
||||
|
||||
BOOL WINAPI CryptDecryptMessage(
|
||||
_In_ PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
|
||||
_In_ BYTE *pbEncryptedBlob,
|
||||
_In_ DWORD cbEncryptedBlob,
|
||||
_Out_opt_ BYTE *pbDecrypted,
|
||||
_Inout_opt_ DWORD *pcbDecrypted,
|
||||
_Out_opt_ PCCERT_CONTEXT *ppXchgCert
|
||||
);
|
||||
|
||||
BOOL WINAPI CryptAcquireCertificatePrivateKey(
|
||||
_In_ PCCERT_CONTEXT pCert,
|
||||
_In_ DWORD dwFlags,
|
||||
_In_opt_ VOID *pvParameters,
|
||||
_Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey,
|
||||
_Out_ DWORD *pdwKeySpec,
|
||||
_Out_ BOOL *pfCallerFreeProvOrNCryptKey
|
||||
);
|
||||
|
||||
|
||||
PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(
|
||||
_In_ PCCERT_CONTEXT pCertContext
|
||||
);
|
||||
|
||||
|
||||
PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(
|
||||
_In_ HCERTSTORE hCertStore,
|
||||
_In_ PCCERT_CONTEXT pPrevCertContext
|
||||
);
|
||||
@@ -193,6 +193,24 @@ class InitialDefGenerator(CtypesGenerator):
|
||||
return "{0}({1})".format(self.name, hex(self))
|
||||
|
||||
__str__ = __repr__
|
||||
|
||||
class StrFlags(str):
|
||||
def __new__(cls, name, value):
|
||||
return super(StrFlags, cls).__new__(cls, value)
|
||||
|
||||
def __init__(self, name, value):
|
||||
self.name = name
|
||||
|
||||
def __repr__(self):
|
||||
return "{0}({1})".format(self.name, str.__repr__(self))
|
||||
|
||||
__str__ = __repr__
|
||||
|
||||
def make_flag(name, value):
|
||||
if isinstance(value, (int, long)):
|
||||
return Flag(name, value)
|
||||
return StrFlags(name, value)
|
||||
|
||||
|
||||
""")
|
||||
|
||||
|
||||
+1294
-1075
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -3426,6 +3426,39 @@ class _CRYPT_KEY_PROV_INFO(Structure):
|
||||
CRYPT_KEY_PROV_INFO = _CRYPT_KEY_PROV_INFO
|
||||
PCRYPT_KEY_PROV_INFO = POINTER(_CRYPT_KEY_PROV_INFO)
|
||||
|
||||
class _CRYPT_ENCRYPT_MESSAGE_PARA(Structure):
|
||||
_fields_ = [
|
||||
("cbSize", DWORD),
|
||||
("dwMsgEncodingType", DWORD),
|
||||
("hCryptProv", HCRYPTPROV_LEGACY),
|
||||
("ContentEncryptionAlgorithm", CRYPT_ALGORITHM_IDENTIFIER),
|
||||
("pvEncryptionAuxInfo", POINTER(VOID)),
|
||||
("dwFlags", DWORD),
|
||||
("dwInnerContentType", DWORD),
|
||||
]
|
||||
PCRYPT_ENCRYPT_MESSAGE_PARA = POINTER(_CRYPT_ENCRYPT_MESSAGE_PARA)
|
||||
CRYPT_ENCRYPT_MESSAGE_PARA = _CRYPT_ENCRYPT_MESSAGE_PARA
|
||||
|
||||
class _CRYPT_DECRYPT_MESSAGE_PARA(Structure):
|
||||
_fields_ = [
|
||||
("cbSize", DWORD),
|
||||
("dwMsgAndCertEncodingType", DWORD),
|
||||
("cCertStore", DWORD),
|
||||
("rghCertStore", POINTER(HCERTSTORE)),
|
||||
("dwFlags", DWORD),
|
||||
]
|
||||
PCRYPT_DECRYPT_MESSAGE_PARA = POINTER(_CRYPT_DECRYPT_MESSAGE_PARA)
|
||||
CRYPT_DECRYPT_MESSAGE_PARA = _CRYPT_DECRYPT_MESSAGE_PARA
|
||||
|
||||
class _CERT_KEY_CONTEXT(Structure):
|
||||
_fields_ = [
|
||||
("cbSize", DWORD),
|
||||
("hCryptProv", HCRYPTPROV),
|
||||
("dwKeySpec", DWORD),
|
||||
]
|
||||
CERT_KEY_CONTEXT = _CERT_KEY_CONTEXT
|
||||
PCERT_KEY_CONTEXT = POINTER(_CERT_KEY_CONTEXT)
|
||||
|
||||
class tagRECT(Structure):
|
||||
_fields_ = [
|
||||
("left", LONG),
|
||||
|
||||
@@ -105,7 +105,7 @@ def enumerate_services():
|
||||
|
||||
while True:
|
||||
size = size_needed.value
|
||||
buffer = (ctypes.c_byte * size)()
|
||||
buffer = (BYTE * size)()
|
||||
|
||||
try:
|
||||
windows.winproxy.EnumServicesStatusExA(scmanager, SC_ENUM_PROCESS_INFO, SERVICE_TYPE_ALL, SERVICE_ACTIVE, buffer, size, ctypes.byref(size_needed), ctypes.byref(nb_services), byref(counter), None)
|
||||
|
||||
@@ -1012,7 +1012,104 @@ def CertStrToNameW(dwCertEncodingType, pszX500, dwStrType, pvReserved, pbEncoded
|
||||
def CertCreateSelfSignCertificate(hCryptProvOrNCryptKey, pSubjectIssuerBlob, dwFlags, pKeyProvInfo, pSignatureAlgorithm, pStartTime, pEndTime, pExtensions):
|
||||
return CertCreateSelfSignCertificate.ctypes_function(hCryptProvOrNCryptKey, pSubjectIssuerBlob, dwFlags, pKeyProvInfo, pSignatureAlgorithm, pStartTime, pEndTime, pExtensions)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertOpenStore')
|
||||
def CertOpenStore(lpszStoreProvider, dwMsgAndCertEncodingType, hCryptProv, dwFlags, pvPara):
|
||||
return CertOpenStore.ctypes_function(lpszStoreProvider, dwMsgAndCertEncodingType, hCryptProv, dwFlags, pvPara)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertAddCertificateContextToStore')
|
||||
def CertAddCertificateContextToStore(hCertStore, pCertContext, dwAddDisposition, ppStoreContext):
|
||||
return CertAddCertificateContextToStore.ctypes_function(hCertStore, pCertContext, dwAddDisposition, ppStoreContext)
|
||||
|
||||
|
||||
@Crypt32Proxy('PFXExportCertStoreEx')
|
||||
def PFXExportCertStoreEx(hStore, pPFX, szPassword, pvPara, dwFlags):
|
||||
return PFXExportCertStoreEx.ctypes_function(hStore, pPFX, szPassword, pvPara, dwFlags)
|
||||
|
||||
|
||||
@Advapi32Proxy('CryptGenKey')
|
||||
def CryptGenKey(hProv, Algid, dwFlags, phKey):
|
||||
return CryptGenKey.ctypes_function(hProv, Algid, dwFlags, phKey)
|
||||
|
||||
|
||||
@Advapi32Proxy('CryptAcquireContextA')
|
||||
def CryptAcquireContextA(phProv, pszContainer, pszProvider, dwProvType, dwFlags):
|
||||
return CryptAcquireContextA.ctypes_function(phProv, pszContainer, pszProvider, dwProvType, dwFlags)
|
||||
|
||||
|
||||
@Advapi32Proxy('CryptAcquireContextW')
|
||||
def CryptAcquireContextW(phProv, pszContainer, pszProvider, dwProvType, dwFlags):
|
||||
return CryptAcquireContextW.ctypes_function(phProv, pszContainer, pszProvider, dwProvType, dwFlags)
|
||||
|
||||
|
||||
@Advapi32Proxy('CryptExportKey')
|
||||
def CryptExportKey(hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen):
|
||||
return CryptExportKey.ctypes_function(hKey, hExpKey, dwBlobType, dwFlags, pbData, pdwDataLen)
|
||||
|
||||
|
||||
@Crypt32Proxy('PFXImportCertStore')
|
||||
def PFXImportCertStore(pPFX, szPassword, dwFlags):
|
||||
return PFXImportCertStore.ctypes_function(pPFX, szPassword, dwFlags)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertFindCertificateInStore')
|
||||
def CertFindCertificateInStore(hCertStore, dwCertEncodingType, dwFindFlags, dwFindType, pvFindPara, pPrevCertContext):
|
||||
return CertFindCertificateInStore.ctypes_function(hCertStore, dwCertEncodingType, dwFindFlags, dwFindType, pvFindPara, pPrevCertContext)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertGetCertificateContextProperty')
|
||||
def CertGetCertificateContextProperty(pCertContext, dwPropId, pvData, pcbData):
|
||||
return CertGetCertificateContextProperty.ctypes_function(pCertContext, dwPropId, pvData, pcbData)
|
||||
|
||||
@Crypt32Proxy('CertEnumCertificateContextProperties', no_error_check)
|
||||
def CertEnumCertificateContextProperties(pCertContext, dwPropId):
|
||||
return CertEnumCertificateContextProperties.ctypes_function(pCertContext, dwPropId)
|
||||
|
||||
|
||||
@Crypt32Proxy('CryptEncryptMessage')
|
||||
def CryptEncryptMessage(pEncryptPara, cRecipientCert, rgpRecipientCert, pbToBeEncrypted, cbToBeEncrypted, pbEncryptedBlob, pcbEncryptedBlob):
|
||||
if isinstance(pbToBeEncrypted, basestring):
|
||||
# Transform string to array of byte
|
||||
pbToBeEncrypted = (BYTE * len(pbToBeEncrypted))(*bytearray(pbToBeEncrypted))
|
||||
if cbToBeEncrypted is None and pbToBeEncrypted is not None:
|
||||
cbToBeEncrypted = len(pbToBeEncrypted)
|
||||
return CryptEncryptMessage.ctypes_function(pEncryptPara, cRecipientCert, rgpRecipientCert, pbToBeEncrypted, cbToBeEncrypted, pbEncryptedBlob, pcbEncryptedBlob)
|
||||
|
||||
|
||||
@Crypt32Proxy('CryptDecryptMessage')
|
||||
def CryptDecryptMessage(pDecryptPara, pbEncryptedBlob, cbEncryptedBlob, pbDecrypted, pcbDecrypted, ppXchgCert):
|
||||
return CryptDecryptMessage.ctypes_function(pDecryptPara, pbEncryptedBlob, cbEncryptedBlob, pbDecrypted, pcbDecrypted, ppXchgCert)
|
||||
|
||||
|
||||
@Crypt32Proxy('CryptAcquireCertificatePrivateKey')
|
||||
def CryptAcquireCertificatePrivateKey(pCert, dwFlags, pvParameters, phCryptProvOrNCryptKey, pdwKeySpec, pfCallerFreeProvOrNCryptKey):
|
||||
return CryptAcquireCertificatePrivateKey.ctypes_function(pCert, dwFlags, pvParameters, phCryptProvOrNCryptKey, pdwKeySpec, pfCallerFreeProvOrNCryptKey)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertGetNameStringA')
|
||||
def CertGetNameStringA(pCertContext, dwType, dwFlags, pvTypePara, pszNameString, cchNameString):
|
||||
return CertGetNameStringA.ctypes_function(pCertContext, dwType, dwFlags, pvTypePara, pszNameString, cchNameString)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertGetNameStringW')
|
||||
def CertGetNameStringW(pCertContext, dwType, dwFlags, pvTypePara, pszNameString, cchNameString):
|
||||
return CertGetNameStringW.ctypes_function(pCertContext, dwType, dwFlags, pvTypePara, pszNameString, cchNameString)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertGetCertificateChain')
|
||||
def CertGetCertificateChain(hChainEngine, pCertContext, pTime, hAdditionalStore, pChainPara, dwFlags, pvReserved, ppChainContext):
|
||||
return CertGetCertificateChain.ctypes_function(hChainEngine, pCertContext, pTime, hAdditionalStore, pChainPara, dwFlags, pvReserved, ppChainContext)
|
||||
|
||||
@Crypt32Proxy('CertDuplicateCertificateContext')
|
||||
def CertDuplicateCertificateContext(pCertContext):
|
||||
return CertDuplicateCertificateContext.ctypes_function(pCertContext)
|
||||
|
||||
|
||||
@Crypt32Proxy('CertEnumCertificatesInStore')
|
||||
def CertEnumCertificatesInStore(hCertStore, pPrevCertContext):
|
||||
return CertEnumCertificatesInStore.ctypes_function(hCertStore, pPrevCertContext)
|
||||
|
||||
# ## User32 stuff ## #
|
||||
|
||||
EnumWindows = TransparentUser32Proxy('EnumWindows')
|
||||
|
||||
Reference in New Issue
Block a user