⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxsecurity.pas

📁 Well known and usefull component for delphi 7
💻 PAS
字号:
unit DXSecurity;

///////////////////////////////////////////////////////////////////////////////
//         Unit: DXSecurity
//       Author: G.E. Ozz Nixon Jr. (onixon@dxsock.com)
// ========================================================================
// Source Owner: DX, Inc. 1995-2002
//    Copyright: All code is the property of DX, Inc. Licensed for
//               resell by Brain Patchwork DX (tm) and part of the
//               DX (r) product lines, which are (c) 1999-2002
//               DX, Inc. Source may not be distributed without
//               written permission from both Brain Patchwork DX,
//               and DX, Inc.
//      License: (Reminder), None of this code can be added to other
//               developer products without permission. This includes
//               but not limited to DCU's, DCP's, DLL's, OCX's, or
//               any other form of merging our technologies. All of
//               your products released to a public consumer be it
//               shareware, freeware, commercial, etc. must contain a
//               license notification somewhere visible in the
//               application.
//               Example is Internet Explorer - Help->About screen
//               shows the licensed code contained in the application.
// Code Version: (3rd Generation Code)
// ========================================================================
//  Description:
// ========================================================================
// Content all certificates and security structures and types.
///////////////////////////////////////////////////////////////////////////////

interface

{$IFDEF VER100}
Uses
   Windows;
   
Type
   LongWord=DWord;
{$ENDIF}

Const
   //Encoding/decoding algoritms
   X509_ASN_ENCODING = 1;
   PKCS_7_ASN_ENCODING = 2;

   //certificat vervion
   CERT_V1=1;
   CERT_V2=2;
   CERT_V3=3;

   //OID of algorithm
   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_PKCS_12='1.2.840.113549.1.12';
   szOID_RSA_MD2='1.2.840.113549.1.1.2';
   szOID_RSA_MD4='1.2.840.113549.1.1.3';
   szOID_RSA_MD5='1.2.840.113549.1.1.4';
   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.5';
   szOID_RSA_DH='1.2.840.113549.1.3.1';
   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_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';
   szOID_ANSI_x942='1.2.840.10046';
   szOID_ANSI_x942_DH='1.2.840.10046.2.1';
   szOID_X957='1.2.840.10040';
   szOID_X957_DSA='1.2.840.10040.4.1';
   szOID_DATA_STRUCTURE='1.2.840.10040.4.3';
   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';
   szOID_OIW='1.3.14';
   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';
   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';
   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';

   //predefine algorithm types
   X509_DSS_PARAMETERS = szOID_OIWSEC_dsa;
   PKCS_RC2_CBC_PARAMETERS = szOID_RSA_RC2CBC;
   X509_OCTET_STRING = szOID_OIWSEC_desCBC;
{   X509_OCTET_STRING = szOID_RSA_DES_EDE3_CBC;
   X509_OCTET_STRING = szOID_RSA_RC4;}

Type
   HCERTSTORE = Cardinal;

///////////////////////////////////////////////////////////////////////////////
// MSDN:
// The CryptoAPI BLOB structure is used for an arbitrary array of bytes.
// It is declared in Wincrypt.h and provides
// flexibility for objects that can contain various data types.
///////////////////////////////////////////////////////////////////////////////
   TBLOB = record
      cbData:LONGWORD;
      pbData:^BYTE;
   End;

   TCRYPT_INTEGER_BLOB=TBLOB;
   PCRYPT_INTEGER_BLOB=^TBLOB;
   TCRYPT_UINT_BLOB=TBLOB;
   PCRYPT_UINT_BLOB=^TBLOB;
   TCRYPT_OBJID_BLOB=TBLOB;
   PCRYPT_OBJID_BLOB=^TBLOB;
   TCERT_NAME_BLOB=TBLOB;
   PCERT_NAME_BLOB=^TBLOB;
   TCERT_RDN_VALUE_BLOB=TBLOB;
   PCERT_RDN_VALUE_BLOB=^TBLOB;
   TCERT_BLOB=TBLOB;
   PCERT_BLOB=^TBLOB;
   TCRL_BLOB=TBLOB;
   PCRL_BLOB=^TBLOB;
   TDATA_BLOB=TBLOB;
   PDATA_BLOB=^TBLOB;
   TCRYPT_DATA_BLOB=TBLOB;
   PCRYPT_DATA_BLOB=^TBLOB;
   TCRYPT_HASH_BLOB=TBLOB;
   PCRYPT_HASH_BLOB=^TBLOB;
   TCRYPT_DIGEST_BLOB=TBLOB;
   PCRYPT_DIGEST_BLOB=^TBLOB;
   TCRYPT_DER_BLOB=TBLOB;
   PCRYPT_DER_BLOB=^TBLOB;
   TCRYPT_ATTR_BLOB=TBLOB;
   PCRYPT_ATTR_BLOB=^TBLOB;

///////////////////////////////////////////////////////////////////////////////
// MSDN:
// The CRYPT_BIT_BLOB structure contains an array of bytes. In a
// CRYPT_BIT_BLOB the last byte in the array can contain zero to seven
// unused bits. Therefore, the number of meaningful bits in the pbData
// member is cbData * 8 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -