Add wmi.gen_select for class select returning a generator + fom E_CRYPT define + CryptObj.nb_signer return 0 if CRYPT_E_INVALID_MSG_TYPE

This commit is contained in:
hakril
2017-12-08 16:54:49 +01:00
parent 4a75453a8b
commit f882bd1e35
6 changed files with 48 additions and 6 deletions
+11
View File
@@ -815,6 +815,17 @@
#define CERT_E_INVALID_NAME (0x800B0114L)
#define CRYPT_E_FILE_ERROR (0x80092003L)
#define CRYPT_E_MSG_ERROR (0x80091001L)
#define CRYPT_E_UNKNOWN_ALGO (0x80091002L)
#define CRYPT_E_OID_FORMAT (0x80091003L)
#define CRYPT_E_INVALID_MSG_TYPE (0x80091004L)
#define CRYPT_E_UNEXPECTED_ENCODING (0x80091005L)
#define CRYPT_E_AUTH_ATTR_MISSING (0x80091006L)
#define CRYPT_E_HASH_VALUE (0x80091007L)
#define E_INVALIDARG (0x80070057L)
#define CRYPT_E_NOT_DECRYPTED (0x8009100AL)
#define CRYPT_E_INVALID_INDEX (0x80091008L)
#define CRYPT_E_ATTRIBUTES_MISSING (0x8009100FL)
#define IMAGE_SCN_TYPE_REG 0x00000000
+11
View File
@@ -703,6 +703,17 @@ Windef
.. autodata:: CERT_E_INVALID_POLICY
.. autodata:: CERT_E_INVALID_NAME
.. autodata:: CRYPT_E_FILE_ERROR
.. autodata:: CRYPT_E_MSG_ERROR
.. autodata:: CRYPT_E_UNKNOWN_ALGO
.. autodata:: CRYPT_E_OID_FORMAT
.. autodata:: CRYPT_E_INVALID_MSG_TYPE
.. autodata:: CRYPT_E_UNEXPECTED_ENCODING
.. autodata:: CRYPT_E_AUTH_ATTR_MISSING
.. autodata:: CRYPT_E_HASH_VALUE
.. autodata:: E_INVALIDARG
.. autodata:: CRYPT_E_NOT_DECRYPTED
.. autodata:: CRYPT_E_INVALID_INDEX
.. autodata:: CRYPT_E_ATTRIBUTES_MISSING
.. autodata:: IMAGE_SCN_TYPE_REG
.. autodata:: IMAGE_SCN_TYPE_DSECT
.. autodata:: IMAGE_SCN_TYPE_NOLOAD
+6 -1
View File
@@ -59,7 +59,12 @@ class CryptMessage(gdef.HCRYPTMSG):
:type: :class:`int`
"""
return self.get_param(gdef.CMSG_SIGNER_COUNT_PARAM)
try:
return self.get_param(gdef.CMSG_SIGNER_COUNT_PARAM)
except WindowsError as e:
if (e.winerror & 0xffffffff) == gdef.CRYPT_E_INVALID_MSG_TYPE:
return 0
raise
def get_signer_data(self, index=0):
File diff suppressed because one or more lines are too long
+11
View File
@@ -759,6 +759,17 @@ CERT_E_UNTRUSTEDCA = make_flag("CERT_E_UNTRUSTEDCA", ( 0x800B0112 ))
CERT_E_INVALID_POLICY = make_flag("CERT_E_INVALID_POLICY", ( 0x800B0113 ))
CERT_E_INVALID_NAME = make_flag("CERT_E_INVALID_NAME", ( 0x800B0114 ))
CRYPT_E_FILE_ERROR = make_flag("CRYPT_E_FILE_ERROR", ( 0x80092003 ))
CRYPT_E_MSG_ERROR = make_flag("CRYPT_E_MSG_ERROR", ( 0x80091001 ))
CRYPT_E_UNKNOWN_ALGO = make_flag("CRYPT_E_UNKNOWN_ALGO", ( 0x80091002 ))
CRYPT_E_OID_FORMAT = make_flag("CRYPT_E_OID_FORMAT", ( 0x80091003 ))
CRYPT_E_INVALID_MSG_TYPE = make_flag("CRYPT_E_INVALID_MSG_TYPE", ( 0x80091004 ))
CRYPT_E_UNEXPECTED_ENCODING = make_flag("CRYPT_E_UNEXPECTED_ENCODING", ( 0x80091005 ))
CRYPT_E_AUTH_ATTR_MISSING = make_flag("CRYPT_E_AUTH_ATTR_MISSING", ( 0x80091006 ))
CRYPT_E_HASH_VALUE = make_flag("CRYPT_E_HASH_VALUE", ( 0x80091007 ))
E_INVALIDARG = make_flag("E_INVALIDARG", ( 0x80070057 ))
CRYPT_E_NOT_DECRYPTED = make_flag("CRYPT_E_NOT_DECRYPTED", ( 0x8009100A ))
CRYPT_E_INVALID_INDEX = make_flag("CRYPT_E_INVALID_INDEX", ( 0x80091008 ))
CRYPT_E_ATTRIBUTES_MISSING = make_flag("CRYPT_E_ATTRIBUTES_MISSING", ( 0x8009100F ))
IMAGE_SCN_TYPE_REG = make_flag("IMAGE_SCN_TYPE_REG", 0x00000000)
IMAGE_SCN_TYPE_DSECT = make_flag("IMAGE_SCN_TYPE_DSECT", 0x00000001)
IMAGE_SCN_TYPE_NOLOAD = make_flag("IMAGE_SCN_TYPE_NOLOAD", 0x00000002)
+8 -4
View File
@@ -32,7 +32,14 @@ class WmiRequester(object):
:rtype: list of dict
"""
return self.query("select * from {0}".format(frm), attrs, **kwargs)
return list(self.gen_select(frm, attrs, **kwargs))
def gen_select(self, frm, attrs="*", **kwargs):
"""Select ``attrs`` from ``frm`` in a generator (like :func:`gen_query`)
:rtype: generator
"""
return self.gen_query("select * from {0}".format(frm), attrs, **kwargs)
@property
def classes(self):
@@ -94,7 +101,6 @@ class WmiRequester(object):
if result != WBEM_S_FALSE:
yield procres, result
def _iwbemclassobject_to_dict(self, wbemclassobj, attrs):
if attrs == "*":
attrs = [x for x in self.get_names(wbemclassobj) if not x.startswith("__")]
@@ -115,7 +121,6 @@ class WmiRequester(object):
print("[WMI-ERROR] Field <{0}> ignored: {1}".format(name, e))
return obj_as_dict
def get_names(self, processor):
res = POINTER(SAFEARRAY)()
processor.GetNames(None, 0, None, byref(res))
@@ -123,7 +128,6 @@ class WmiRequester(object):
safe_array.elt_type = BSTR
return safe_array.to_list()
def __repr__(self):
return """<{0} namespace="{1}">""".format(type(self).__name__, self.namespace)