获取密钥容器.
所有参数可选,CSP类型使用 PROV前缀常量指定
如果不指定 CSP类型 则使用默认值 _PROV_RSA_FULL
如果不使用 CSP名称,则获取该类型默认提供程序名称
参考: https://docs.microsoft.com/en-us/windows/win32/seccertenroll/cryptoapi-cryptographic-service-providers
Base64 或 Hex 解码。
可选参数 @3 使用 CRYPT_STRING 前缀常量指定选项
参数@3默认为_CRYPT_STRING_ANY
相关库与函数: string.base32, crypt.bin
将字符串转换为 Base64 或 Hex 编码。
可选参数 @3 使用 CRYPT_STRING 前缀常量指定选项
参数 @3 默认为 _CRYPT_STRING_BASE64 。
相关库与函数: string.base32, crypt.bin
计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符
计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符
计算哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
默认返回32个字符
PEM编码字符串,
如果参数@1是空值时不操作直接返回null
计算sha1哈希值,
参数2可选,默认大写
计算sha256哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符
计算sha384哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符
计算sha512哈希值,
参数2可选,默认大写。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符
分配加解密需要用到的 buffer。
分配加解密需要用到的 buffer。
如果不手动分配,程序将会自动按需分配 buffer。
参数 @2 可选,可用对象的blockSize属性指定默认块大小。
加密填充的块大小,默认为 8
加解密时暂存输入输出数据的缓冲区。
只能通过调用 allocBuffer 函数分配此缓冲区。
或者由加解密函数自动分配此缓冲区。
如果未分配缓冲区,或缓冲区大小不够。
加解密时会重新调用 allocBuffer 函数分配到合适大小。
一般不应直接访问此属性。
所有参数可选,
哈希算法默认为_CALG_SHA1
使用当前密钥创建哈希
创建 MD2 算法哈希对象
可选使用一个字符串参数指定哈希数据
创建 MD4 算法哈希对象
可选使用一个字符串参数指定哈希数据
创建 MD5 算法哈希对象
可选使用一个字符串参数指定哈希数据
创建 Sha1 算法哈希对象
可选使用一个字符串参数指定哈希数据
创建 Sha256 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES
创建 Sha384 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES
创建 Sha512 算法哈希对象,
可选使用一个字符串参数指定哈希数据,
创建 crypt 对象时参数@2 请指定 CSP 类型为_PROV_RSA_AES
解码对象,
参数@1为buffer或字符串,返回值为buffer类型,
用法参考 crypt.rsa中相关函数
解密数据
参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块解密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回解密文本,失败返回空,
可使用..lasterr()函数获取错误信息
参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,解密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。
成功返回存放解密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。
用法可参考 decryptFile 函数源码。
解密文件
参数 @1 指定要解密的文件。参数 @2 指定要保存解密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。
函数执行成功返回 true,失败返回 null,错误信息。
获取并复制当前使用的密钥,
该密钥必须调用 destroy 成员函数手动销毁
编码对象,
参数@1为buffer或字符串,返回值为buffer类型,
用法参考 crypt.rsa中相关函数
加密数据
参数 @1 指定字符串或 buffer。
除第一个参数以外,其他参数都是可选参数。
分块加密时,参数 @2 必须为 flase 且参数 @1 的长度必须是块大小的倍数。
成功返回加密文本,失败返回空,
可使用..lasterr()函数获取错误信息
参数 @1 指定 buffer 或字符串。
如果参数 @2 指定的数值小于缓冲区据总长度,加密结束。
可使用 -1 表示解密结束,且输入数据大小等于缓冲区大小。
其他参数可忽略不用管。
成功返回存放加密结果的缓冲区,返回值 2 为解密长度。
需要分块解密的算法,例如 RSA 算法返回的解密结果为字符串。
失败返回 null, 错误信息,错误代码。
用法可参考 encryptFile 函数源码。
加密文件
参数 @1 指定要加密的文件。参数 @2 指定要保存加密结果的文件。
文件参数都可以指定文件路径、文件对象(兼容 io.file,fsys.file,fsys.stream)。
可选用参数 @3 指定分块加密的字节长度,默认为 1MB。
指定字节长度时会自动调整到对齐块大小,参数不需要考虑对齐。
可选指定进度回调函数,回调参数 @1,@2 分别为输入文件总长度、已读取长度。
其他调用参数(哈希对象,选项)一般不必指定。
函数执行成功返回 true,失败返回 null,错误信息。
导出密钥,除参数一以外其他参数可选
参数1为密钥类型,参数三为导出密钥可为空
导出PKCS#8格式私钥,返回值为buffer类型,
用法参考 crypt.rsa中相关函数
导出文本密钥,参数可选
导出密钥为PLAINTEXTKEYBLOB结构体,所有参数可选,
注意创建或导入密钥时指定了 _CRYPT_EXPORTABLE 才能导出密钥
导出私钥,参数可选
导出公钥,参数可选
导出公钥信息(CERT_PUBLIC_KEY_INFO),返回值为buffer类型,
用法参考 crypt.rsa中相关函数
产生一个随机的会话密钥或者公/私钥对,
所有参数可选,algid指定算法,flags指定选项,size指定密钥长度
创建用于签名算法的公/私钥对,
@size 指定密钥长度,以二进制位为单位,省略此参数则默认为 2048,
@flags 指定选项,一般不必指定
返回当前密钥算法 ID
获取密钥块长度
获取密钥参数
数据值应当指定一个结构体
不指定数据值则自动分配buffer对象存储返回值
失败返回null
获取数值类型密钥参数
获取密钥,并设置为默认密钥
参数指定密钥类型,例如 _AT_SIGNATURE
成功返回true
检测是否已设置密钥
计算哈希值,
除参数 @1 以外,其他参数可选。
可选用参数 @3 指定返回字符个数。
正值自左侧截取,负值自右侧截取,设为 true 自中间截取16个字符。
参数 @4 为可选参数,默认使用MD5算法
计算哈希值,
除参数 @1 以外,其他参数可选。
参数 @3 省略时默认使用MD5算法。
此函数执行失败会返回2个值,分别为:null,错误信息,
创建 crypt 对象时参数@2 请指定为 _PROV_RSA_AES 才能支持 SHA-256(SHA-2)算法,
也可以改用 crypt.aes 或 crypt.rsa 创建 crypt 对象
导入密钥,
密钥可以是结构体或字符串格式,
参数2可选,参数3可选
成功返回true,失败返回null,错误信息
导入私钥信息(CRYPT_PRIVATE_KEY_INFO),参数@1为buffer或字符串,
用法参考 crypt.rsa中相关函数,
成功返回true
导入公钥信息(CERT_PUBLIC_KEY_INFO),参数@1为buffer或字符串,
用法参考 crypt.rsa中相关函数,
成功返回true
最后一次调用createHashXXX() 系列函数创建的哈希对象
释放密码服务对象(CSP)
此函数可在对象析构时自动调用
设置会话密钥
成功返回密码容器对象,失败返回null,
默认哈希算法为_CALG_MD5,加密算法为 _CALG_RC4
设置初始化向量,成功返回true,
参数2可选
设置新的默认密钥句柄,
该密钥将由密钥容器管理,不需要释放该密钥
参数为null则删除密钥
设置加密参数
数据值可以是结构体,字符串,或 buffer 对象,
如果数据值一个数值参数,则转换为表示32位整型数值地址的结构体指针
成功返回true,失败请使用 ..lasterr()获取错误信息
设置加密模式
成功返回true,失败请使用 ..lasterr()获取错误信息
设置加密填充方式
成功返回true,失败请使用 ..lasterr()获取错误信息
参数@1使用字符串或buffer指定密码,
其他参数可选,算法ID默认为_CALG_RC4
成功返回密码容器对象,失败返回null,错误信息
返回签名
可选用 @keySpec 参数中指定密钥类型,
@flags 不必指定
签名并反转字节序,进行 Base64 编码后返回,
可选用 @keySpec 参数中指定密钥类型,
@flags 参数不必指定
验证签名,
参数@signBase64 为 Base64编码并反转字节序的签名,
@flags 参数不必指定,
验证签名以前必须首先导入公钥,并创建哈希对象
验证签名,
参数@1为签名字符串,其他参数可选
验证签名以前必须首先导入公钥,并创建哈希对象
"OffloadModExpo"
"ExpoOffload"
"Microsoft DH SChannel Cryptographic Provider"
"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
"Microsoft Base DSS Cryptographic Provider"
"Microsoft Base Cryptographic Provider v1.0"
"Microsoft RSA SChannel Cryptographic Provider"
"Microsoft RSA Signature Cryptographic Provider"
"Microsoft Enhanced Cryptographic Provider v1.0"
"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
"Microsoft Enhanced RSA and AES Cryptographic Provider"
"Microsoft Base Smart Card Crypto Provider"
"Microsoft Strong Cryptographic Provider"
"ForceKeyProtection"
"CachePrivateKeys"
"PrivateKeyLifetimeSeconds"
"Software\\Policies\\Microsoft\\Cryptography"
"PrivKeyCacheMaxItems"
"PrivKeyCachePurgeIntervalSeconds"
删除密钥
复制密钥
密钥使用的算法ID
密钥,buffer类型数据
"OffloadModExpo"
"ExpoOffload"
"Microsoft DH SChannel Cryptographic Provider"
"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
"Microsoft Base DSS Cryptographic Provider"
"Microsoft Base Cryptographic Provider v1.0"
"Microsoft RSA SChannel Cryptographic Provider"
"Microsoft RSA Signature Cryptographic Provider"
"Microsoft Enhanced Cryptographic Provider v1.0"
"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
"Microsoft Enhanced RSA and AES Cryptographic Provider"
"Microsoft Base Smart Card Crypto Provider"
"Microsoft Strong Cryptographic Provider"
_ALG_CLASS_ALL=0xE000
_ALG_CLASS_ANY=0
_ALG_CLASS_DATA_ENCRYPT=0x6000
_ALG_CLASS_HASH=0x8000
_ALG_CLASS_KEY_EXCHANGE=0xA000
_ALG_CLASS_MSG_ENCRYPT=0x4000
_ALG_CLASS_SIGNATURE=0x2000
_ALG_SID_3DES=3
_ALG_SID_3DES_112=9
_ALG_SID_AES=0x11
_ALG_SID_AES_128=0xE
_ALG_SID_AES_192=0xF
_ALG_SID_AES_256=0x10
_ALG_SID_AGREED_KEY_ANY=3
_ALG_SID_ANY=0
_ALG_SID_CAST=6
_ALG_SID_CYLINK_MEK=0xC
_ALG_SID_DES=1
_ALG_SID_DESX=4
_ALG_SID_DH_EPHEM=2
_ALG_SID_DH_SANDF=1
_ALG_SID_DSS_ANY=0
_ALG_SID_DSS_DMS=2
_ALG_SID_DSS_PKCS=1
_ALG_SID_ECDH=5
_ALG_SID_ECDSA=3
_ALG_SID_ECMQV=1
_ALG_SID_EXAMPLE=0x50
_ALG_SID_HASH_REPLACE_OWF=0xB
_ALG_SID_HMAC=9
_ALG_SID_IDEA=5
_ALG_SID_KEA=4
_ALG_SID_MAC=5
_ALG_SID_MD2=1
_ALG_SID_MD4=2
_ALG_SID_MD5=3
_ALG_SID_PCT1_MASTER=4
_ALG_SID_RC2=2
_ALG_SID_RC4=1
_ALG_SID_RC5=0xD
_ALG_SID_RIPEMD=6
_ALG_SID_RIPEMD160=7
_ALG_SID_RSA_ANY=0
_ALG_SID_RSA_ENTRUST=3
_ALG_SID_RSA_MSATWORK=2
_ALG_SID_RSA_PGP=4
_ALG_SID_RSA_PKCS=1
_ALG_SID_SAFERSK128=8
_ALG_SID_SAFERSK64=7
_ALG_SID_SCHANNEL_ENC_KEY=7
_ALG_SID_SCHANNEL_MAC_KEY=3
_ALG_SID_SCHANNEL_MASTER_HASH=2
_ALG_SID_SEAL=2
_ALG_SID_SHA=4
_ALG_SID_SHA1=4
_ALG_SID_SHA_256=0xC
_ALG_SID_SHA_384=0xD
_ALG_SID_SHA_512=0xE
_ALG_SID_SKIPJACK=0xA
_ALG_SID_SSL2_MASTER=5
_ALG_SID_SSL3SHAMD5=8
_ALG_SID_SSL3_MASTER=1
_ALG_SID_TEK=0xB
_ALG_SID_TLS1PRF=0xA
_ALG_SID_TLS1_MASTER=6
_ALG_TYPE_ANY=0
_ALG_TYPE_BLOCK=0x600
_ALG_TYPE_DH=0xA00
_ALG_TYPE_DSS=0x200
_ALG_TYPE_RSA=0x400
_ALG_TYPE_SECURECHANNEL=0xC00
_ALG_TYPE_STREAM=0x800
_AT_KEYEXCHANGE=1
_AT_SIGNATURE=2
_CALG_3DES=0x6603
_CALG_3DES_112=0x6609
_CALG_AES=0x6611
_CALG_AES_128=0x660E
_CALG_AES_192=0x660F
_CALG_AES_256=0x6610
_CALG_AGREEDKEY_ANY=0xAA03
_CALG_CYLINK_MEK=0x660C
_CALG_DES=0x6601
_CALG_DESX=0x6604
_CALG_DH_EPHEM=0xAA02
_CALG_DH_SF=0xAA01
_CALG_DSS_SIGN=0x2200
_CALG_ECDH=0xAA05
_CALG_ECDSA=0x2203
_CALG_ECMQV=0xA001
_CALG_HASH_REPLACE_OWF=0x800B
_CALG_HMAC=0x8009
_CALG_HUGHES_MD5=0xA003
_CALG_KEA_KEYX=0xAA04
_CALG_MAC=0x8005
_CALG_MD2=0x8001
_CALG_MD4=0x8002
_CALG_MD5=0x8003
_CALG_NO_SIGN=0x2000
_CALG_PCT1_MASTER=0x4C04
_CALG_RC2=0x6602
_CALG_RC4=0x6801
_CALG_RC5=0x660D
_CALG_RSA_KEYX=0xA400
_CALG_RSA_SIGN=0x2400
_CALG_SCHANNEL_ENC_KEY=0x4C07
_CALG_SCHANNEL_MAC_KEY=0x4C03
_CALG_SCHANNEL_MASTER_HASH=0x4C02
_CALG_SEAL=0x6802
_CALG_SHA=0x8004
_CALG_SHA1=0x8004
_CALG_SHA_256=0x800C
_CALG_SHA_384=0x800D
_CALG_SHA_512=0x800E
_CALG_SKIPJACK=0x660A
_CALG_SSL2_MASTER=0x4C05
_CALG_SSL3_MASTER=0x4C01
_CALG_SSL3_SHAMD5=0x8008
_CALG_TEK=0x660B
_CALG_TLS1PRF=0x800A
_CALG_TLS1_MASTER=0x4C06
_CRYPT_ARCHIVABLE=0x4000
_CRYPT_ARCHIVE=0x100
_CRYPT_BLOB_VER3=0x80
_CRYPT_CREATE_IV=0x200
_CRYPT_CREATE_SALT=4
_CRYPT_DATA_KEY=0x800
_CRYPT_DECRYPT=2
_CRYPT_DECRYPT_RSA_NO_PADDING_CHECK=0x20
_CRYPT_DEFAULT_CONTAINER_OPTIONAL=0x80
_CRYPT_DELETEKEYSET=0x10
_CRYPT_DELETE_DEFAULT=4
_CRYPT_DESTROYKEY=4
_CRYPT_ENCRYPT=1
_CRYPT_EXPORT=4
_CRYPT_EXPORTABLE=1
_CRYPT_EXPORT_KEY=0x40
_CRYPT_FAILED=0
_CRYPT_FASTSGC=2
_CRYPT_FIRST=1
_CRYPT_FLAG_IPSEC=0x10
_CRYPT_FLAG_PCT1=1
_CRYPT_FLAG_SIGNING=0x20
_CRYPT_FLAG_SSL2=2
_CRYPT_FLAG_SSL3=4
_CRYPT_FLAG_TLS1=8
_CRYPT_FORCE_KEY_PROTECTION_HIGH=0x8000
_CRYPT_IMPL_HARDWARE=1
_CRYPT_IMPL_MIXED=3
_CRYPT_IMPL_REMOVABLE=8
_CRYPT_IMPL_SOFTWARE=2
_CRYPT_IMPL_UNKNOWN=4
_CRYPT_IMPORT_KEY=0x80
_CRYPT_INITIATOR=0x40
_CRYPT_IPSEC_HMAC_KEY=0x100
_CRYPT_KEK=0x400
_CRYPT_LITTLE_ENDIAN=1
_CRYPT_MAC=0x20
_CRYPT_MACHINE_DEFAULT=1
_CRYPT_MACHINE_KEYSET=0x20
_CRYPT_MODE_CBC=1
_CRYPT_MODE_CFB=4
_CRYPT_MODE_CTS=5
_CRYPT_MODE_ECB=2
_CRYPT_MODE_OFB=3
_CRYPT_NEWKEYSET=8
_CRYPT_NEXT=2
_CRYPT_NOHASHOID=1
_CRYPT_NO_SALT=0x10
_CRYPT_ONLINE=0x80
_CRYPT_OWF_REPL_LM_HASH=1
_CRYPT_PREGEN=0x40
_CRYPT_PSTORE=2
_CRYPT_READ=8
_CRYPT_RECIPIENT=0x10
_CRYPT_SECRETDIGEST=1
_CRYPT_SEC_DESCR=1
_CRYPT_SERVER=0x400
_CRYPT_SF=0x100
_CRYPT_SGC=1
_CRYPT_SGCKEY=0x2000
_CRYPT_SGC_ENUM=4
_CRYPT_SILENT=0x40
_CRYPT_SSL2_FALLBACK=2
_CRYPT_SUCCEED=1
_CRYPT_TYPE2_FORMAT=2
_CRYPT_UI_PROMPT=4
_CRYPT_UPDATE_KEY=8
_CRYPT_USERDATA=1
_CRYPT_USER_DEFAULT=2
_CRYPT_USER_PROTECTED=2
_CRYPT_VERIFYCONTEXT=0xF0000000
_CRYPT_VOLATILE=0x1000
_CRYPT_WRITE=0x10
_CRYPT_X931_FORMAT=4
_CRYPT_Y_ONLY=1
_HP_ALGID=1
_HP_HASHSIZE=4
_HP_HASHVAL=2
_HP_HMAC_INFO=5
_HP_TLS1PRF_LABEL=6
_HP_TLS1PRF_SEED=7
_KEYSTATEBLOB=0xC
_KEY_LENGTH_MASK=0xFFFF0000
_KP_ADMIN_PIN=0x1F
_KP_CMS_DH_KEY_INFO=0x26
_KP_CMS_KEY_INFO=0x25
_KP_KEYEXCHANGE_PIN=0x20
_KP_KEYLEN=9
_KP_KEYVAL=0x1E
_KP_PIN_ID=0x2B
_KP_PIN_INFO=0x2C
_KP_PRECOMP_MD5=0x18
_KP_PRECOMP_SHA=0x19
_KP_PREHASH=0x22
_KP_PUB_EX_LEN=0x1C
_KP_PUB_EX_VAL=0x1D
_KP_ROUNDS=0x23
_KP_RP=0x17
_KP_SIGNATURE_PIN=0x21
_MAXUIDLEN=0x40
_OPAQUEKEYBLOB=9
_PKCS5_PADDING=1
_PLAINTEXTKEYBLOB=8
_PP_ADMIN_PIN=0x1F
_PP_APPLI_CERT=0x12
_PP_CHANGE_PASSWORD=7
_PP_CLIENT_HWND=1
_PP_CONTAINER=6
_PP_CONTEXT_INFO=0xB
_PP_CRYPT_COUNT_KEY_USE=0x29
_PP_DELETEKEY=0x18
_PP_ENUMALGS=1
_PP_ENUMALGS_EX=0x16
_PP_ENUMCONTAINERS=2
_PP_ENUMELECTROOTS=0x1A
_PP_ENUMEX_SIGNING_PROT=0x28
_PP_ENUMMANDROOTS=0x19
_PP_IMPTYPE=3
_PP_KEYEXCHANGE_ALG=0xE
_PP_KEYEXCHANGE_KEYSIZE=0xC
_PP_KEYEXCHANGE_PIN=0x20
_PP_KEYSET_TYPE=0x1B
_PP_KEYSPEC=0x27
_PP_KEYSTORAGE=0x11
_PP_KEYX_KEYSIZE_INC=0x23
_PP_KEY_TYPE_SUBTYPE=0xA
_PP_NAME=4
_PP_PIN_PROMPT_STRING=0x2C
_PP_PROVTYPE=0x10
_PP_ROOT_CERTSTORE=0x2E
_PP_SECURE_KEYEXCHANGE_PIN=0x2F
_PP_SECURE_SIGNATURE_PIN=0x30
_PP_SESSION_KEYSIZE=0x14
_PP_SGC_INFO=0x25
_PP_SIGNATURE_ALG=0xF
_PP_SIGNATURE_KEYSIZE=0xD
_PP_SIGNATURE_PIN=0x21
_PP_SIG_KEYSIZE_INC=0x22
_PP_SMARTCARD_GUID=0x2D
_PP_SMARTCARD_READER=0x2B
_PP_SYM_KEYSIZE=0x13
_PP_UI_PROMPT=0x15
_PP_UNIQUE_CONTAINER=0x24
_PP_USER_CERTSTORE=0x2A
_PP_USE_HARDWARE_RNG=0x26
_PP_VERSION=5
_PRIVATEKEYBLOB=7
_PROV_DH_SCHANNEL=0x12
_PROV_DSS=3
_PROV_DSS_DH=0xD
_PROV_EC_ECDSA_FULL=0x10
_PROV_EC_ECDSA_SIG=0xE
_PROV_EC_ECNRA_FULL=0x11
_PROV_EC_ECNRA_SIG=0xF
_PROV_FORTEZZA=4
_PROV_INTEL_SEC=0x16
_PROV_MS_EXCHANGE=5
_PROV_REPLACE_OWF=0x17
_PROV_RNG=0x15
_PROV_RSA_AES=0x18
_PROV_RSA_FULL=1
_PROV_RSA_SCHANNEL=0xC
_PROV_RSA_SIG=2
_PROV_SPYRUS_LYNKS=0x14
_PROV_SSL=6
_PROV_STT_ACQ=8
_PROV_STT_BRND=9
_PROV_STT_ISS=0xB
_PROV_STT_MER=7
_PROV_STT_ROOT=0xA
_PUBLICKEYBLOB=6
_PUBLICKEYBLOBEX=0xA
_RANDOM_PADDING=2
_RSA1024BIT_KEY=0x4000000
_SIGNATURE_RESOURCE_NUMBER=0x29A
_SIMPLEBLOB=1
_SYMMETRICWRAPKEYBLOB=0xB
_X509_PKCS_7_ASN_ENCODING=0x10001
_ZERO_PADDING=3