[pywin32-checkins] /hgroot/pywin32/pywin32: Add certificate functions to win32crypt...
OLD project page for the Python extensions for Windows
Brought to you by:
mhammond
From: <pyw...@li...> - 2013-12-07 23:09:38
|
changeset 902851ec4db0 in /hgroot/pywin32/pywin32 details: http://pywin32.hg.sourceforge.net/hgweb/pywin32/pywin32/hgroot/pywin32/pywin32?cmd=changeset;node=902851ec4db0 summary: Add certificate functions to win32crypt, unswig existing functions diffstat: AutoDuck/pywin32.mak | 3 +- setup.py | 16 +- win32/Lib/win32cryptcon.py | 207 ++- win32/src/win32crypt.i | 177 -- win32/src/win32crypt/PyCERTSTORE.cpp | 590 +++++++ win32/src/win32crypt/PyCERT_CONTEXT.cpp | 602 +++++++ win32/src/win32crypt/PyCRYPTHASH.cpp | 281 +++ win32/src/win32crypt/PyCRYPTKEY.cpp | 314 +++ win32/src/win32crypt/PyCRYPTMSG.cpp | 125 + win32/src/win32crypt/PyCRYPTPROV.cpp | 459 +++++ win32/src/win32crypt/PyCTL_CONTEXT.cpp | 210 ++ win32/src/win32crypt/win32crypt.h | 354 ++++ win32/src/win32crypt/win32crypt_structs.cpp | 1036 ++++++++++++ win32/src/win32crypt/win32cryptmodule.cpp | 2218 +++++++++++++++++++++++++++ 14 files changed, 6409 insertions(+), 183 deletions(-) diffs (truncated from 6804 to 300 lines): diff -r 337015e6d473 -r 902851ec4db0 AutoDuck/pywin32.mak --- a/AutoDuck/pywin32.mak Mon Dec 02 09:09:14 2013 +1100 +++ b/AutoDuck/pywin32.mak Sat Dec 07 18:08:31 2013 -0500 @@ -40,10 +40,11 @@ $(WIN32_SOURCE_DIR)/win32net/*.cpp \ $(WIN32_SOURCE_DIR)/win32wnet/*.cpp \ $(WIN32_SOURCE_DIR)/win32print/*.cpp \ + $(WIN32_SOURCE_DIR)/win32crypt/*.cpp \ $(GENDIR)/win32evtlog.d $(GENDIR)/win32event.d $(GENDIR)/win32file.d \ $(GENDIR)/win32service.d $(GENDIR)/win32pipe.d $(GENDIR)/win32security.d \ $(GENDIR)/win32process.d $(GENDIR)/wincerapi.d $(GENDIR)/win32gui.d \ - $(GENDIR)/win32inet.d $(GENDIR)/_winxptheme.d $(GENDIR)/win32crypt.d \ + $(GENDIR)/win32inet.d $(GENDIR)/_winxptheme.d \ $(GENDIR)/win32job.d \ winxpgui.d diff -r 337015e6d473 -r 902851ec4db0 setup.py --- a/setup.py Mon Dec 02 09:09:14 2013 +1100 +++ b/setup.py Sat Dec 07 18:08:31 2013 -0500 @@ -1,4 +1,4 @@ -build_id="218.4" # may optionally include a ".{patchno}" suffix. +build_id="218.5" # may optionally include a ".{patchno}" suffix. # Putting buildno at the top prevents automatic __doc__ assignment, and # I *want* the build number at the top :) __doc__="""This is a distutils setup-script for the pywin32 extensions @@ -1575,7 +1575,17 @@ ("timer", "user32", None, None, "win32/src/timermodule.cpp"), ("win2kras", "rasapi32", None, 0x0500, "win32/src/win2krasmodule.cpp"), ("win32cred", "AdvAPI32 credui", True, 0x0501, 'win32/src/win32credmodule.cpp'), - ("win32crypt", "Crypt32", None, 0x0500, 'win32/src/win32crypt.i'), + ("win32crypt", "Crypt32 Advapi32", True, 0x0500, """ + win32/src/win32crypt/win32cryptmodule.cpp + win32/src/win32crypt/win32crypt_structs.cpp + win32/src/win32crypt/PyCERTSTORE.cpp + win32/src/win32crypt/PyCERT_CONTEXT.cpp + win32/src/win32crypt/PyCRYPTHASH.cpp + win32/src/win32crypt/PyCRYPTKEY.cpp + win32/src/win32crypt/PyCRYPTMSG.cpp + win32/src/win32crypt/PyCRYPTPROV.cpp + win32/src/win32crypt/PyCTL_CONTEXT.cpp + """), ("win32file", "", None, 0x0500, """ win32/src/win32file.i win32/src/win32file_comm.cpp @@ -1937,7 +1947,7 @@ %(mapi)s/PyIMsgStore.i %(mapi)s/PyIMsgStore.cpp %(mapi)s/PyIProfAdmin.i %(mapi)s/PyIProfAdmin.cpp %(mapi)s/PyIProfSect.i %(mapi)s/PyIProfSect.cpp - %(mapi)s/PyIConverterSession.i %(mapi)s/PyIConverterSession.cpp + %(mapi)s/PyIConverterSession.i %(mapi)s/PyIConverterSession.cpp %(mapi)s/PyIMAPIAdviseSink.cpp %(mapi)s/mapiutil.cpp %(mapi)s/mapiguids.cpp diff -r 337015e6d473 -r 902851ec4db0 win32/Lib/win32cryptcon.py --- a/win32/Lib/win32cryptcon.py Mon Dec 02 09:09:14 2013 +1100 +++ b/win32/Lib/win32cryptcon.py Sat Dec 07 18:08:31 2013 -0500 @@ -238,8 +238,10 @@ HP_HMAC_INFO = 0x0005 HP_TLS1PRF_LABEL = 0x0006 HP_TLS1PRF_SEED = 0x0007 + +CRYPT_FAILED = 0 +CRYPT_SUCCEED = 1 def RCRYPT_SUCCEEDED(rt): return ((rt) == CRYPT_SUCCEED) - def RCRYPT_FAILED(rt): return ((rt) == CRYPT_FAILED) PP_ENUMALGS = 1 @@ -607,7 +609,100 @@ CRYPT_DECODE_ALLOC_FLAG = 0x8000 CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG = \ CERT_RDN_DISABLE_IE4_UTF8_FLAG + CRYPT_ENCODE_DECODE_NONE = 0 +X509_CERT = 1 +X509_CERT_TO_BE_SIGNED = 2 +X509_CERT_CRL_TO_BE_SIGNED = 3 +X509_CERT_REQUEST_TO_BE_SIGNED = 4 +X509_EXTENSIONS = 5 +X509_NAME_VALUE = 6 +X509_NAME = 7 +X509_PUBLIC_KEY_INFO = 8 +X509_AUTHORITY_KEY_ID = 9 +X509_KEY_ATTRIBUTES = 10 +X509_KEY_USAGE_RESTRICTION = 11 +X509_ALTERNATE_NAME = 12 +X509_BASIC_CONSTRAINTS = 13 +X509_KEY_USAGE = 14 +X509_BASIC_CONSTRAINTS2 = 15 +X509_CERT_POLICIES = 16 +PKCS_UTC_TIME = 17 +PKCS_TIME_REQUEST = 18 +RSA_CSP_PUBLICKEYBLOB = 19 +X509_UNICODE_NAME = 20 +X509_KEYGEN_REQUEST_TO_BE_SIGNED = 21 +PKCS_ATTRIBUTE = 22 +PKCS_CONTENT_INFO_SEQUENCE_OF_ANY = 23 +X509_UNICODE_NAME_VALUE = 24 +X509_ANY_STRING = X509_NAME_VALUE +X509_UNICODE_ANY_STRING = X509_UNICODE_NAME_VALUE +X509_OCTET_STRING = 25 +X509_BITS = 26 +X509_INTEGER = 27 +X509_MULTI_BYTE_INTEGER = 28 +X509_ENUMERATED = 29 +X509_CHOICE_OF_TIME = 30 +X509_AUTHORITY_KEY_ID2 = 31 +X509_AUTHORITY_INFO_ACCESS = 32 +X509_SUBJECT_INFO_ACCESS = X509_AUTHORITY_INFO_ACCESS +X509_CRL_REASON_CODE = X509_ENUMERATED +PKCS_CONTENT_INFO = 33 +X509_SEQUENCE_OF_ANY = 34 +X509_CRL_DIST_POINTS = 35 +X509_ENHANCED_KEY_USAGE = 36 +PKCS_CTL = 37 +X509_MULTI_BYTE_UINT = 38 +X509_DSS_PUBLICKEY = X509_MULTI_BYTE_UINT +X509_DSS_PARAMETERS = 39 +X509_DSS_SIGNATURE = 40 +PKCS_RC2_CBC_PARAMETERS = 41 +PKCS_SMIME_CAPABILITIES = 42 +X509_QC_STATEMENTS_EXT = 42 +PKCS_RSA_PRIVATE_KEY = 43 +PKCS_PRIVATE_KEY_INFO = 44 +PKCS_ENCRYPTED_PRIVATE_KEY_INFO = 45 +X509_PKIX_POLICY_QUALIFIER_USERNOTICE = 46 +X509_DH_PUBLICKEY = X509_MULTI_BYTE_UINT +X509_DH_PARAMETERS = 47 +PKCS_ATTRIBUTES = 48 +PKCS_SORTED_CTL = 49 +X509_ECC_SIGNATURE = 47 +X942_DH_PARAMETERS = 50 +X509_BITS_WITHOUT_TRAILING_ZEROES = 51 +X942_OTHER_INFO = 52 +X509_CERT_PAIR = 53 +X509_ISSUING_DIST_POINT = 54 +X509_NAME_CONSTRAINTS = 55 +X509_POLICY_MAPPINGS = 56 +X509_POLICY_CONSTRAINTS = 57 +X509_CROSS_CERT_DIST_POINTS = 58 +CMC_DATA = 59 +CMC_RESPONSE = 60 +CMC_STATUS = 61 +CMC_ADD_EXTENSIONS = 62 +CMC_ADD_ATTRIBUTES = 63 +X509_CERTIFICATE_TEMPLATE = 64 +OCSP_SIGNED_REQUEST = 65 +OCSP_REQUEST = 66 +OCSP_RESPONSE = 67 +OCSP_BASIC_SIGNED_RESPONSE = 68 +OCSP_BASIC_RESPONSE = 69 +X509_LOGOTYPE_EXT = 70 +X509_BIOMETRIC_EXT = 71 +CNG_RSA_PUBLIC_KEY_BLOB = 72 +X509_OBJECT_IDENTIFIER = 73 +X509_ALGORITHM_IDENTIFIER = 74 +PKCS_RSA_SSA_PSS_PARAMETERS = 75 +PKCS_RSAES_OAEP_PARAMETERS = 76 +ECC_CMS_SHARED_INFO = 77 +TIMESTAMP_REQUEST = 78 +TIMESTAMP_RESPONSE = 79 +TIMESTAMP_INFO = 80 +X509_CERT_BUNDLE = 81 +PKCS7_SIGNER_INFO = 500 +CMS_SIGNER_INFO = 501 + szOID_AUTHORITY_KEY_IDENTIFIER = "2.5.29.1" szOID_KEY_ATTRIBUTES = "2.5.29.2" szOID_CERT_POLICIES_95 = "2.5.29.3" @@ -873,9 +968,13 @@ CRYPT_OID_FORMAT_OBJECT_FUNC = "CryptDllFormatObject" CRYPT_OID_FIND_OID_INFO_FUNC = "CryptDllFindOIDInfo" CRYPT_OID_FIND_LOCALIZED_NAME_FUNC = "CryptDllFindLocalizedName" + CRYPT_OID_REGPATH = "Software\\Microsoft\\Cryptography\\OID" CRYPT_OID_REG_ENCODING_TYPE_PREFIX = "EncodingType " +CRYPT_OID_REG_DLL_VALUE_NAME = u"Dll" +CRYPT_OID_REG_FUNC_NAME_VALUE_NAME = u"FuncName" CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A = "FuncName" +CRYPT_OID_REG_FLAGS_VALUE_NAME = u"CryptFlags" CRYPT_DEFAULT_OID = "DEFAULT" CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG = 1 CRYPT_GET_INSTALLED_OID_FUNC_FLAG = 0x1 @@ -918,6 +1017,8 @@ CMSG_SIGNED_AND_ENVELOPED = 4 CMSG_HASHED = 5 CMSG_ENCRYPTED = 6 + +CMSG_ALL_FLAGS = -1 CMSG_DATA_FLAG = (1 << CMSG_DATA) CMSG_SIGNED_FLAG = (1 << CMSG_SIGNED) CMSG_ENVELOPED_FLAG = (1 << CMSG_ENVELOPED) @@ -1031,6 +1132,7 @@ CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC = "CryptMsgDllExportEncryptKey" CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC = "CryptMsgDllImportEncryptKey" CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG = 0x00000001 +CMSG_DEFAULT_INSTALLABLE_FUNC_OID = 1 CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG = 0x00000001 CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG = 0x00008000 CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC = "CryptMsgDllGenContentEncryptKey" @@ -1181,21 +1283,49 @@ CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST = 0x00000002 CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG = 0x00000100 CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG = 0x00000200 + +CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH = ur"Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate" CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG = 0x1 CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG = 0x2 +CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME = u"RootDirUrl" +CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME = u"SyncDeltaTime" +CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME = u"Flags" +CERT_AUTH_ROOT_CTL_FILENAME = u"authroot.stl" CERT_AUTH_ROOT_CTL_FILENAME_A = "authroot.stl" +CERT_AUTH_ROOT_CAB_FILENAME = u"authrootstl.cab" +CERT_AUTH_ROOT_SEQ_FILENAME = "authrootseq.txt" +CERT_AUTH_ROOT_CERT_EXT = ".crt" + +CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH = ur"Software\Policies\Microsoft\SystemCertificates" +CERT_EFSBLOB_REGPATH = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH + ur"\EFS" +CERT_EFSBLOB_VALUE_NAME = u"EFSBlob" +CERT_PROT_ROOT_FLAGS_REGPATH = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH +ur"\Root\ProtectedRoots" +CERT_PROT_ROOT_FLAGS_VALUE_NAME = u"Flags" +CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH + ur"\TrustedPublisher\Safer" +CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH = ur"Software\Microsoft\SystemCertificates" +CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH = CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH + ur"\TrustedPublisher\Safer" +CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME = u"AuthenticodeFlags" +CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH = ur"SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\OC Manager\Subcomponents" +CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME = ur"RootAutoUpdate" +CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH = CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH + ur"\AuthRoot" +CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME = u"DisableRootAutoUpdate" +CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH = CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH + ur"\AuthRoot\AutoUpdate" + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x10000 CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x20000 CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = (-2147483648) CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 CERT_REGISTRY_STORE_ROAMING_FLAG = 0x40000 CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x80000 +CERT_IE_DIRTY_FLAGS_REGPATH = ur"Software\Microsoft\Cryptography\IEDirtyFlags" + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x10000 CERT_LDAP_STORE_SIGN_FLAG = 0x10000 CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x20000 CERT_LDAP_STORE_OPENED_FLAG = 0x40000 CERT_LDAP_STORE_UNBIND_FLAG = 0x80000 CRYPT_OID_OPEN_STORE_PROV_FUNC = "CertDllOpenStoreProv" + CERT_STORE_PROV_EXTERNAL_FLAG = 0x1 CERT_STORE_PROV_DELETED_FLAG = 0x2 CERT_STORE_PROV_NO_PERSIST_FLAG = 0x4 @@ -1329,6 +1459,8 @@ CERT_STORE_CERTIFICATE_CONTEXT = 1 CERT_STORE_CRL_CONTEXT = 2 CERT_STORE_CTL_CONTEXT = 3 + +CERT_STORE_ALL_CONTEXT_FLAG = -1 CERT_STORE_CERTIFICATE_CONTEXT_FLAG = \ (1 << CERT_STORE_CERTIFICATE_CONTEXT) CERT_STORE_CRL_CONTEXT_FLAG = \ @@ -1358,11 +1490,23 @@ CERT_CREATE_CONTEXT_SORTED_FLAG = 0x2 CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG = 0x4 CERT_CREATE_CONTEXT_NO_ENTRY_FLAG = 0x8 + CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG = 0x1 CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG = 0x2 CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG = 0x4 CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG = 0x8 CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG = 0x1 + +# Names of physical cert stores +CERT_PHYSICAL_STORE_DEFAULT_NAME = u".Default" +CERT_PHYSICAL_STORE_GROUP_POLICY_NAME = u".GroupPolicy" +CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME = u".LocalMachine" +CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME = u".UserCertificate" +CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME = u".LocalMachineGroupPolicy" +CERT_PHYSICAL_STORE_ENTERPRISE_NAME = u".Enterprise" +CERT_PHYSICAL_STORE_AUTH_ROOT_NAME = u".AuthRoot" +CERT_PHYSICAL_STORE_SMART_CARD_NAME = u".SmartCard" + CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC = "CertDllOpenSystemStoreProv" CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC = "CertDllRegisterSystemStore" CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC = "CertDllUnregisterSystemStore" @@ -1370,6 +1514,8 @@ CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC = "CertDllRegisterPhysicalStore" CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC = "CertDllUnregisterPhysicalStore" CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC = "CertDllEnumPhysicalStore" +CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME = u"SystemStoreLocation" + CMSG_TRUSTED_SIGNER_FLAG = 0x1 CMSG_SIGNER_ONLY_FLAG = 0x2 CMSG_USE_SIGNER_INDEX_FLAG = 0x4 @@ -1409,7 +1555,7 @@ CRYPT_FIND_SILENT_KEYSET_FLAG = 0x00000040 CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC = "CryptDllImportPrivateKeyInfoEx" CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC = "CryptDllExportPrivateKeyInfoEx" -CRYPT_DELETE_KEYSET = 0x0001 +CRYPT_DELETE_KEYSET = CRYPT_DELETEKEYSET CERT_SIMPLE_NAME_STR = 1 CERT_OID_NAME_STR = 2 |