📄 clcryptapi.pas
字号:
PCRYPTOAPI_BLOB = ^CRYPTOAPI_BLOB;
CRYPTOAPI_BLOB = record
cbData :DWORD;
pbData :PBYTE;
end;
type
CRYPT_INTEGER_BLOB = CRYPTOAPI_BLOB;
PCRYPT_INTEGER_BLOB = ^CRYPT_INTEGER_BLOB;
CRYPT_UINT_BLOB = CRYPTOAPI_BLOB;
PCRYPT_UINT_BLOB = ^CRYPT_UINT_BLOB;
CRYPT_OBJID_BLOB = CRYPTOAPI_BLOB;
PCRYPT_OBJID_BLOB = ^CRYPT_OBJID_BLOB;
CERT_NAME_BLOB = CRYPTOAPI_BLOB;
PCERT_NAME_BLOB = ^CERT_NAME_BLOB;
CERT_RDN_VALUE_BLOB = CRYPTOAPI_BLOB;
PCERT_RDN_VALUE_BLOB = ^CERT_RDN_VALUE_BLOB;
CERT_BLOB = CRYPTOAPI_BLOB;
PCERT_BLOB = ^CERT_BLOB;
CRL_BLOB = CRYPTOAPI_BLOB;
PCRL_BLOB = ^CRL_BLOB;
DATA_BLOB = CRYPTOAPI_BLOB;
PDATA_BLOB = ^DATA_BLOB; // JEFFJEFF temporary (too generic)
CRYPT_DATA_BLOB = CRYPTOAPI_BLOB;
PCRYPT_DATA_BLOB = ^CRYPT_DATA_BLOB;
CRYPT_HASH_BLOB = CRYPTOAPI_BLOB;
PCRYPT_HASH_BLOB = ^CRYPT_HASH_BLOB;
CRYPT_DIGEST_BLOB = CRYPTOAPI_BLOB;
PCRYPT_DIGEST_BLOB = ^CRYPT_DIGEST_BLOB;
CRYPT_DER_BLOB = CRYPTOAPI_BLOB;
PCRYPT_DER_BLOB = ^CRYPT_DER_BLOB;
CRYPT_ATTR_BLOB = CRYPTOAPI_BLOB;
PCRYPT_ATTR_BLOB = ^CRYPT_ATTR_BLOB;
//+-------------------------------------------------------------------------
// In a CRYPT_BIT_BLOB the last byte may contain 0-7 unused bits. Therefore, the
// overall bit length is cbData * 8 - cUnusedBits.
//--------------------------------------------------------------------------
type
PCRYPT_BIT_BLOB = ^CRYPT_BIT_BLOB;
CRYPT_BIT_BLOB = record
cbData :DWORD;
pbData :PBYTE;
cUnusedBits :DWORD;
end;
//+-------------------------------------------------------------------------
// Type used for any algorithm
//
// Where the Parameters CRYPT_OBJID_BLOB is in its encoded representation. For most
// algorithm types, the Parameters CRYPT_OBJID_BLOB is NULL (Parameters.cbData = 0).
//--------------------------------------------------------------------------
type
PCRYPT_ALGORITHM_IDENTIFIER = ^CRYPT_ALGORITHM_IDENTIFIER;
CRYPT_ALGORITHM_IDENTIFIER = record
pszObjId :LPSTR;
Parameters :CRYPT_OBJID_BLOB;
end;
// Following are the definitions of various algorithm object identifiers
// RSA
const
szOID_RSA = '1.2.840.113549';
szOID_PKCS = '1.2.840.113549.1';
szOID_RSA_HASH = '1.2.840.113549.2';
szOID_RSA_ENCRYPT = '1.2.840.113549.3';
szOID_PKCS_1 = '1.2.840.113549.1.1';
szOID_PKCS_2 = '1.2.840.113549.1.2';
szOID_PKCS_3 = '1.2.840.113549.1.3';
szOID_PKCS_4 = '1.2.840.113549.1.4';
szOID_PKCS_5 = '1.2.840.113549.1.5';
szOID_PKCS_6 = '1.2.840.113549.1.6';
szOID_PKCS_7 = '1.2.840.113549.1.7';
szOID_PKCS_8 = '1.2.840.113549.1.8';
szOID_PKCS_9 = '1.2.840.113549.1.9';
szOID_PKCS_10 = '1.2.840.113549.1.10';
szOID_RSA_RSA = '1.2.840.113549.1.1.1';
szOID_RSA_MD2RSA = '1.2.840.113549.1.1.2';
szOID_RSA_MD4RSA = '1.2.840.113549.1.1.3';
szOID_RSA_MD5RSA = '1.2.840.113549.1.1.4';
szOID_RSA_SHA1RSA = '1.2.840.113549.1.1.5';
szOID_RSA_SETOAEP_RSA = '1.2.840.113549.1.1.6';
szOID_RSA_data = '1.2.840.113549.1.7.1';
szOID_RSA_signedData = '1.2.840.113549.1.7.2';
szOID_RSA_envelopedData = '1.2.840.113549.1.7.3';
szOID_RSA_signEnvData = '1.2.840.113549.1.7.4';
szOID_RSA_digestedData = '1.2.840.113549.1.7.5';
szOID_RSA_hashedData = '1.2.840.113549.1.7.5';
szOID_RSA_encryptedData = '1.2.840.113549.1.7.6';
szOID_RSA_emailAddr = '1.2.840.113549.1.9.1';
szOID_RSA_unstructName = '1.2.840.113549.1.9.2';
szOID_RSA_contentType = '1.2.840.113549.1.9.3';
szOID_RSA_messageDigest = '1.2.840.113549.1.9.4';
szOID_RSA_signingTime = '1.2.840.113549.1.9.5';
szOID_RSA_counterSign = '1.2.840.113549.1.9.6';
szOID_RSA_challengePwd = '1.2.840.113549.1.9.7';
szOID_RSA_unstructAddr = '1.2.840.113549.1.9.8';
szOID_RSA_extCertAttrs = '1.2.840.113549.1.9.9';
szOID_RSA_SMIMECapabilities = '1.2.840.113549.1.9.15';
szOID_RSA_preferSignedData = '1.2.840.113549.1.9.15.1';
szOID_RSA_MD2 = '1.2.840.113549.2.2';
szOID_RSA_MD4 = '1.2.840.113549.2.4';
szOID_RSA_MD5 = '1.2.840.113549.2.5';
szOID_RSA_RC2CBC = '1.2.840.113549.3.2';
szOID_RSA_RC4 = '1.2.840.113549.3.4';
szOID_RSA_DES_EDE3_CBC = '1.2.840.113549.3.7';
szOID_RSA_RC5_CBCPad = '1.2.840.113549.3.9';
// ITU-T UsefulDefinitions
szOID_DS = '2.5';
szOID_DSALG = '2.5.8';
szOID_DSALG_CRPT = '2.5.8.1';
szOID_DSALG_HASH = '2.5.8.2';
szOID_DSALG_SIGN = '2.5.8.3';
szOID_DSALG_RSA = '2.5.8.1.1';
// NIST OSE Implementors' Workshop (OIW)
// http://nemo.ncsl.nist.gov/oiw/agreements/stable/OSI/12s_9506.w51
// http://nemo.ncsl.nist.gov/oiw/agreements/working/OSI/12w_9503.w51
szOID_OIW = '1.3.14';
// NIST OSE Implementors' Workshop (OIW) Security SIG algorithm identifiers
szOID_OIWSEC = '1.3.14.3.2';
szOID_OIWSEC_md4RSA = '1.3.14.3.2.2';
szOID_OIWSEC_md5RSA = '1.3.14.3.2.3';
szOID_OIWSEC_md4RSA2 = '1.3.14.3.2.4';
szOID_OIWSEC_desECB = '1.3.14.3.2.6';
szOID_OIWSEC_desCBC = '1.3.14.3.2.7';
szOID_OIWSEC_desOFB = '1.3.14.3.2.8';
szOID_OIWSEC_desCFB = '1.3.14.3.2.9';
szOID_OIWSEC_desMAC = '1.3.14.3.2.10';
szOID_OIWSEC_rsaSign = '1.3.14.3.2.11';
szOID_OIWSEC_dsa = '1.3.14.3.2.12';
szOID_OIWSEC_shaDSA = '1.3.14.3.2.13';
szOID_OIWSEC_mdc2RSA = '1.3.14.3.2.14';
szOID_OIWSEC_shaRSA = '1.3.14.3.2.15';
szOID_OIWSEC_dhCommMod = '1.3.14.3.2.16';
szOID_OIWSEC_desEDE = '1.3.14.3.2.17';
szOID_OIWSEC_sha = '1.3.14.3.2.18';
szOID_OIWSEC_mdc2 = '1.3.14.3.2.19';
szOID_OIWSEC_dsaComm = '1.3.14.3.2.20';
szOID_OIWSEC_dsaCommSHA = '1.3.14.3.2.21';
szOID_OIWSEC_rsaXchg = '1.3.14.3.2.22';
szOID_OIWSEC_keyHashSeal = '1.3.14.3.2.23';
szOID_OIWSEC_md2RSASign = '1.3.14.3.2.24';
szOID_OIWSEC_md5RSASign = '1.3.14.3.2.25';
szOID_OIWSEC_sha1 = '1.3.14.3.2.26';
szOID_OIWSEC_dsaSHA1 = '1.3.14.3.2.27';
szOID_OIWSEC_dsaCommSHA1 = '1.3.14.3.2.28';
szOID_OIWSEC_sha1RSASign = '1.3.14.3.2.29';
// NIST OSE Implementors' Workshop (OIW) Directory SIG algorithm identifiers
szOID_OIWDIR = '1.3.14.7.2';
szOID_OIWDIR_CRPT = '1.3.14.7.2.1';
szOID_OIWDIR_HASH = '1.3.14.7.2.2';
szOID_OIWDIR_SIGN = '1.3.14.7.2.3';
szOID_OIWDIR_md2 = '1.3.14.7.2.2.1';
szOID_OIWDIR_md2RSA = '1.3.14.7.2.3.1';
// INFOSEC Algorithms
// joint-iso-ccitt(2) country(16) us(840) organization(1) us-government(101) dod(2) id-infosec(1)
szOID_INFOSEC = '2.16.840.1.101.2.1';
szOID_INFOSEC_sdnsSignature = '2.16.840.1.101.2.1.1.1';
szOID_INFOSEC_mosaicSignature = '2.16.840.1.101.2.1.1.2';
szOID_INFOSEC_sdnsConfidentiality = '2.16.840.1.101.2.1.1.3';
szOID_INFOSEC_mosaicConfidentiality = '2.16.840.1.101.2.1.1.4';
szOID_INFOSEC_sdnsIntegrity = '2.16.840.1.101.2.1.1.5';
szOID_INFOSEC_mosaicIntegrity = '2.16.840.1.101.2.1.1.6';
szOID_INFOSEC_sdnsTokenProtection = '2.16.840.1.101.2.1.1.7';
szOID_INFOSEC_mosaicTokenProtection = '2.16.840.1.101.2.1.1.8';
szOID_INFOSEC_sdnsKeyManagement = '2.16.840.1.101.2.1.1.9';
szOID_INFOSEC_mosaicKeyManagement = '2.16.840.1.101.2.1.1.10';
szOID_INFOSEC_sdnsKMandSig = '2.16.840.1.101.2.1.1.11';
szOID_INFOSEC_mosaicKMandSig = '2.16.840.1.101.2.1.1.12';
szOID_INFOSEC_SuiteASignature = '2.16.840.1.101.2.1.1.13';
szOID_INFOSEC_SuiteAConfidentiality = '2.16.840.1.101.2.1.1.14';
szOID_INFOSEC_SuiteAIntegrity = '2.16.840.1.101.2.1.1.15';
szOID_INFOSEC_SuiteATokenProtection = '2.16.840.1.101.2.1.1.16';
szOID_INFOSEC_SuiteAKeyManagement = '2.16.840.1.101.2.1.1.17';
szOID_INFOSEC_SuiteAKMandSig = '2.16.840.1.101.2.1.1.18';
szOID_INFOSEC_mosaicUpdatedSig = '2.16.840.1.101.2.1.1.19';
szOID_INFOSEC_mosaicKMandUpdSig = '2.16.840.1.101.2.1.1.20';
szOID_INFOSEC_mosaicUpdatedInteg = '2.16.840.1.101.2.1.1.21';
type
PCRYPT_OBJID_TABLE = ^CRYPT_OBJID_TABLE;
CRYPT_OBJID_TABLE = record
dwAlgId :DWORD;
pszObjId :LPCSTR;
end;
//+-------------------------------------------------------------------------
// PKCS #1 HashInfo (DigestInfo)
//--------------------------------------------------------------------------
type
PCRYPT_HASH_INFO = ^CRYPT_HASH_INFO;
CRYPT_HASH_INFO = record
HashAlgorithm :CRYPT_ALGORITHM_IDENTIFIER;
Hash :CRYPT_HASH_BLOB;
end;
//+-------------------------------------------------------------------------
// Type used for an extension to an encoded content
//
// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation.
//--------------------------------------------------------------------------
type
PCERT_EXTENSION = ^CERT_EXTENSION;
CERT_EXTENSION = record
pszObjId :LPSTR;
fCritical :BOOL;
Value :CRYPT_OBJID_BLOB;
end;
//+-------------------------------------------------------------------------
// AttributeTypeValue
//
// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation.
//--------------------------------------------------------------------------
type
PCRYPT_ATTRIBUTE_TYPE_VALUE =^CRYPT_ATTRIBUTE_TYPE_VALUE;
CRYPT_ATTRIBUTE_TYPE_VALUE = record
pszObjId :LPSTR;
Value :CRYPT_OBJID_BLOB;
end;
//+-------------------------------------------------------------------------
// Attributes
//
// Where the Value's PATTR_BLOBs are in their encoded representation.
//--------------------------------------------------------------------------
type
PCRYPT_ATTRIBUTE = ^CRYPT_ATTRIBUTE;
CRYPT_ATTRIBUTE = record
pszObjId :LPSTR;
cValue :DWORD;
rgValue :PCRYPT_ATTR_BLOB;
end;
type
PCRYPT_ATTRIBUTES =^CRYPT_ATTRIBUTES;
CRYPT_ATTRIBUTES = record
cAttr :DWORD; {IN}
rgAttr :PCRYPT_ATTRIBUTE; {IN}
end;
//+-------------------------------------------------------------------------
// Attributes making up a Relative Distinguished Name (CERT_RDN)
//
// The interpretation of the Value depends on the dwValueType.
// See below for a list of the types.
//--------------------------------------------------------------------------
type
PCERT_RDN_ATTR = ^CERT_RDN_ATTR;
CERT_RDN_ATTR = record
pszObjId :LPSTR;
dwValueType :DWORD;
Value :CERT_RDN_VALUE_BLOB;
end;
//+-------------------------------------------------------------------------
// CERT_RDN attribute Object Identifiers
//--------------------------------------------------------------------------
// Labeling attribute types:
const
szOID_COMMON_NAME = '2.5.4.3'; // case-ignore string
szOID_SUR_NAME = '2.5.4.4'; // case-ignore string
szOID_DEVICE_SERIAL_NUMBER = '2.5.4.5'; // printable string
// Geographic attribute types:
szOID_COUNTRY_NAME = '2.5.4.6'; // printable 2char string
szOID_LOCALITY_NAME = '2.5.4.7'; // case-ignore string
szOID_STATE_OR_PROVINCE_NAME = '2.5.4.8'; // case-ignore string
szOID_STREET_ADDRESS = '2.5.4.9'; // case-ignore string
// Organizational attribute types:
szOID_ORGANIZATION_NAME = '2.5.4.10';// case-ignore string
szOID_ORGANIZATIONAL_UNIT_NAME = '2.5.4.11'; // case-ignore string
szOID_TITLE = '2.5.4.12'; // case-ignore string
// Explanatory attribute types:
szOID_DESCRIPTION = '2.5.4.13'; // case-ignore string
szOID_SEARCH_GUIDE = '2.5.4.14';
szOID_BUSINESS_CATEGORY = '2.5.4.15'; // case-ignore string
// Postal addressing attribute types:
szOID_POSTAL_ADDRESS = '2.5.4.16';
szOID_POSTAL_CODE = '2.5.4.17'; // case-ignore string
szOID_POST_OFFICE_BOX = '2.5.4.18'; // case-ignore string
szOID_PHYSICAL_DELIVERY_OFFICE_NAME = '2.5.4.19'; // case-ignore string
// Telecommunications addressing attribute types:
szOID_TELEPHONE_NUMBER = '2.5.4.20'; // telephone number
szOID_TELEX_NUMBER = '2.5.4.21';
szOID_TELETEXT_TERMINAL_IDENTIFIER = '2.5.4.22';
szOID_FACSIMILE_TELEPHONE_NUMBER = '2.5.4.23';
szOID_X21_ADDRESS = '2.5.4.24'; // numeric string
szOID_INTERNATIONAL_ISDN_NUMBER = '2.5.4.25'; // numeric string
szOID_REGISTERED_ADDRESS = '2.5.4.26';
szOID_DESTINATION_INDICATOR = '2.5.4.27'; // printable string
// Preference attribute types:
szOID_PREFERRED_DELIVERY_METHOD = '2.5.4.28';
// OSI application attribute types:
szOID_PRESENTATION_ADDRESS = '2.5.4.29';
szOID_SUPPORTED_APPLICATION_CONTEXT = '2.5.4.30';
// Relational application attribute types:
szOID_MEMBER = '2.5.4.31';
szOID_OWNER = '2.5.4.32';
szOID_ROLE_OCCUPANT = '2.5.4.33';
szOID_SEE_ALSO = '2.5.4.34';
// Security attribute types:
szOID_USER_PASSWORD = '2.5.4.35';
szOID_USER_CERTIFICATE = '2.5.4.36';
szOID_CA_CERTIFICATE = '2.5.4.37';
szOID_AUTHORITY_REVOCATION_LIST = '2.5.4.38';
szOID_CERTIFICATE_REVOCATION_LIST = '2.5.4.39';
szOID_CROSS_CERTIFICATE_PAIR = '2.5.4.40';
// Undocumented attribute types???
//#define szOID_??? '2.5.4.41'
szOID_GIVEN_NAME = '2.5.4.42'; // case-ignore string
szOID_INITIALS = '2.5.4.43'; // case-ignore string
// Pilot user attribute types:
szOID_DOMAIN_COMPONENT = '0.9.2342.19200300.100.1.25'; // IA5 string
//+-------------------------------------------------------------------------
// CERT_RDN Attribute Value Types
//
// For RDN_ENCODED_BLOB, the Value's CERT_RDN_VALUE_BLOB is in its encoded
// representation. Otherwise, its an array of bytes.
//
// For all CERT_RDN types, Value.cbData is always the number of bytes, not
// necessarily the number of elements in the string. For instance,
// RDN_UNIVERSAL_STRING is an array of ints (cbData == intCnt * 4) and
// RDN_BMP_STRING is an array of unsigned shorts (cbData == ushortCnt * 2).
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -