CapiCom 组件内部枚举类型 元素具体值

来源:互联网 发布:centos 装输入法 编辑:程序博客网 时间:2024/06/06 01:01

Enum CAPICOM_ERROR_CODE;
  CAPICOM_E_ENCODE_INVALID_TYPE = $80880100;
  CAPICOM_E_EKU_INVALID_OID = $80880200;
  CAPICOM_E_EKU_OID_NOT_INITIALIZED = $80880201;
  CAPICOM_E_CERTIFICATE_NOT_INITIALIZED = $80880210;
  CAPICOM_E_CERTIFICATE_NO_PRIVATE_KEY = $80880211;
  CAPICOM_E_CHAIN_NOT_BUILT = $80880220;
  CAPICOM_E_STORE_NOT_OPENED = $80880230;
  CAPICOM_E_STORE_EMPTY = $80880231;
  CAPICOM_E_STORE_INVALID_OPEN_MODE = $80880232;
  CAPICOM_E_STORE_INVALID_SAVE_AS_TYPE = $80880233;
  CAPICOM_E_ATTRIBUTE_NAME_NOT_INITIALIZED = $80880240;
  CAPICOM_E_ATTRIBUTE_VALUE_NOT_INITIALIZED = $80880241;
  CAPICOM_E_ATTRIBUTE_INVALID_NAME = $80880242;
  CAPICOM_E_ATTRIBUTE_INVALID_VALUE = $80880243;
  CAPICOM_E_SIGNER_NOT_INITIALIZED = $80880250;
  CAPICOM_E_SIGNER_NOT_FOUND = $80880251;
  CAPICOM_E_SIGNER_NO_CHAIN = $80880252;
  CAPICOM_E_SIGNER_INVALID_USAGE = $80880253;
  CAPICOM_E_SIGN_NOT_INITIALIZED = $80880260;
  CAPICOM_E_SIGN_INVALID_TYPE = $80880261;
  CAPICOM_E_SIGN_NOT_SIGNED = $80880262;
  CAPICOM_E_INVALID_ALGORITHM = $80880270;
  CAPICOM_E_INVALID_KEY_LENGTH = $80880271;
  CAPICOM_E_ENVELOP_NOT_INITIALIZED = $80880280;
  CAPICOM_E_ENVELOP_INVALID_TYPE = $80880281;
  CAPICOM_E_ENVELOP_NO_RECIPIENT = $80880282;
  CAPICOM_E_ENVELOP_RECIPIENT_NOT_FOUND = $80880283;
  CAPICOM_E_ENCRYPT_NOT_INITIALIZED = $80880290;
  CAPICOM_E_ENCRYPT_INVALID_TYPE = $80880291;
  CAPICOM_E_ENCRYPT_NO_SECRET = $80880292;
  CAPICOM_E_NOT_SUPPORTED = $80880900;
  CAPICOM_E_UI_DISABLED = $80880901;
  CAPICOM_E_CANCELLED = $80880902;
  CAPICOM_E_NOT_ALLOWED = $80880903;
  CAPICOM_E_OUT_OF_RESOURCE = $80880904;
  CAPICOM_E_INTERNAL = $80880911;
  CAPICOM_E_UNKNOWN = $80880999;
  CAPICOM_E_PRIVATE_KEY_NOT_INITIALIZED = $80880300;
  CAPICOM_E_PRIVATE_KEY_NOT_EXPORTABLE = $80880301;
  CAPICOM_E_ENCODE_NOT_INITIALIZED = $80880320;
  CAPICOM_E_EXTENSION_NOT_INITIALIZED = $80880330;
  CAPICOM_E_PROPERTY_NOT_INITIALIZED = $80880340;
  CAPICOM_E_FIND_INVALID_TYPE = $80880350;
  CAPICOM_E_FIND_INVALID_PREDEFINED_POLICY = $80880351;
  CAPICOM_E_CODE_NOT_INITIALIZED = $80880360;
  CAPICOM_E_CODE_NOT_SIGNED = $80880361;
  CAPICOM_E_CODE_DESCRIPTION_NOT_INITIALIZED = $80880362;
  CAPICOM_E_CODE_DESCRIPTION_URL_NOT_INITIALIZED = $80880363;
  CAPICOM_E_CODE_INVALID_TIMESTAMP_URL = $80880364;
  CAPICOM_E_HASH_NO_DATA = $80880370;
  CAPICOM_E_INVALID_CONVERT_TYPE = $80880380;

Enum CAPICOM_ENCODING_TYPE;
  CAPICOM_ENCODE_BASE64 = 0;
  CAPICOM_ENCODE_BINARY = 1;
  CAPICOM_ENCODE_ANY = -1;

Enum CAPICOM_EKU;
  CAPICOM_EKU_OTHER = 0;
  CAPICOM_EKU_SERVER_AUTH = 1;
  CAPICOM_EKU_CLIENT_AUTH = 2;
  CAPICOM_EKU_CODE_SIGNING = 3;
  CAPICOM_EKU_EMAIL_PROTECTION = 4;
  CAPICOM_EKU_SMARTCARD_LOGON = 5;
  CAPICOM_EKU_ENCRYPTING_FILE_SYSTEM = 6;

Enum CAPICOM_CHECK_FLAG;
  CAPICOM_CHECK_NONE = 0;
  CAPICOM_CHECK_TRUSTED_ROOT = 1;
  CAPICOM_CHECK_TIME_VALIDITY = 2;
  CAPICOM_CHECK_SIGNATURE_VALIDITY = 4;
  CAPICOM_CHECK_ONLINE_REVOCATION_STATUS = 8;
  CAPICOM_CHECK_OFFLINE_REVOCATION_STATUS = 16;
  CAPICOM_CHECK_COMPLETE_CHAIN = 32;
  CAPICOM_CHECK_NAME_CONSTRAINTS = 64;
  CAPICOM_CHECK_BASIC_CONSTRAINTS = 128;
  CAPICOM_CHECK_NESTED_VALIDITY_PERIOD = $100;
  CAPICOM_CHECK_ONLINE_ALL = $1EF;
  CAPICOM_CHECK_OFFLINE_ALL = $1F7;

Enum CAPICOM_CERT_INFO_TYPE;
  CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME = 0;
  CAPICOM_CERT_INFO_ISSUER_SIMPLE_NAME = 1;
  CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME = 2;
  CAPICOM_CERT_INFO_ISSUER_EMAIL_NAME = 3;
  CAPICOM_CERT_INFO_SUBJECT_UPN = 4;
  CAPICOM_CERT_INFO_ISSUER_UPN = 5;
  CAPICOM_CERT_INFO_SUBJECT_DNS_NAME = 6;
  CAPICOM_CERT_INFO_ISSUER_DNS_NAME = 7;

Enum CAPICOM_STORE_LOCATION;
  CAPICOM_MEMORY_STORE = 0;
  CAPICOM_LOCAL_MACHINE_STORE = 1;
  CAPICOM_CURRENT_USER_STORE = 2;
  CAPICOM_ACTIVE_DIRECTORY_USER_STORE = 3;
  CAPICOM_SMART_CARD_USER_STORE = 4;

Enum CAPICOM_STORE_OPEN_MODE;
  CAPICOM_STORE_OPEN_READ_ONLY = 0;
  CAPICOM_STORE_OPEN_READ_WRITE = 1;
  CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED = 2;
  CAPICOM_STORE_OPEN_EXISTING_ONLY = 128;
  CAPICOM_STORE_OPEN_INCLUDE_ARCHIVED = $100;

Enum CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION;
  CAPICOM_SEARCH_ANY = 0;
  CAPICOM_SEARCH_GLOBAL_CATALOG = 1;
  CAPICOM_SEARCH_DEFAULT_DOMAIN = 2;

Enum CAPICOM_STORE_SAVE_AS_TYPE;
  CAPICOM_STORE_SAVE_AS_SERIALIZED = 0;
  CAPICOM_STORE_SAVE_AS_PKCS7 = 1;

Enum CAPICOM_ATTRIBUTE;
  CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;
  CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME = 1;
  CAPICOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_DESCRIPTION = 2;

Enum CAPICOM_SIGNED_DATA_VERIFY_FLAG;
  CAPICOM_VERIFY_SIGNATURE_ONLY = 0;
  CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE = 1;

Enum CAPICOM_ENCRYPTION_ALGORITHM;
  CAPICOM_ENCRYPTION_ALGORITHM_RC2 = 0;
  CAPICOM_ENCRYPTION_ALGORITHM_RC4 = 1;
  CAPICOM_ENCRYPTION_ALGORITHM_DES = 2;
  CAPICOM_ENCRYPTION_ALGORITHM_3DES = 3;
  CAPICOM_ENCRYPTION_ALGORITHM_AES = 4;

Enum CAPICOM_ENCRYPTION_KEY_LENGTH;
  CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM = 0;
  CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS = 1;
  CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS = 2;
  CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS = 3;
  CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS = 4;
  CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS = 5;

Enum CAPICOM_SECRET_TYPE;
  CAPICOM_SECRET_PASSWORD = 0;

Enum CAPICOM_KEY_ALGORITHM;
  CAPICOM_KEY_ALGORITHM_OTHER = 0;
  CAPICOM_KEY_ALGORITHM_RSA = 1;
  CAPICOM_KEY_ALGORITHM_DSS = 2;

Enum CAPICOM_OID;
  CAPICOM_OID_OTHER = 0;
  CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER_EXTENSION = 1;
  CAPICOM_OID_KEY_ATTRIBUTES_EXTENSION = 2;
  CAPICOM_OID_CERT_POLICIES_95_EXTENSION = 3;
  CAPICOM_OID_KEY_USAGE_RESTRICTION_EXTENSION = 4;
  CAPICOM_OID_LEGACY_POLICY_MAPPINGS_EXTENSION = 5;
  CAPICOM_OID_SUBJECT_ALT_NAME_EXTENSION = 6;
  CAPICOM_OID_ISSUER_ALT_NAME_EXTENSION = 7;
  CAPICOM_OID_BASIC_CONSTRAINTS_EXTENSION = 8;
  CAPICOM_OID_SUBJECT_KEY_IDENTIFIER_EXTENSION = 9;
  CAPICOM_OID_KEY_USAGE_EXTENSION = 10;
  CAPICOM_OID_PRIVATEKEY_USAGE_PERIOD_EXTENSION = 11;
  CAPICOM_OID_SUBJECT_ALT_NAME2_EXTENSION = 12;
  CAPICOM_OID_ISSUER_ALT_NAME2_EXTENSION = 13;
  CAPICOM_OID_BASIC_CONSTRAINTS2_EXTENSION = 14;
  CAPICOM_OID_NAME_CONSTRAINTS_EXTENSION = 15;
  CAPICOM_OID_CRL_DIST_POINTS_EXTENSION = 16;
  CAPICOM_OID_CERT_POLICIES_EXTENSION = 17;
  CAPICOM_OID_POLICY_MAPPINGS_EXTENSION = 18;
  CAPICOM_OID_AUTHORITY_KEY_IDENTIFIER2_EXTENSION = 19;
  CAPICOM_OID_POLICY_CONSTRAINTS_EXTENSION = 20;
  CAPICOM_OID_ENHANCED_KEY_USAGE_EXTENSION = 21;
  CAPICOM_OID_CERTIFICATE_TEMPLATE_EXTENSION = 22;
  CAPICOM_OID_APPLICATION_CERT_POLICIES_EXTENSION = 23;
  CAPICOM_OID_APPLICATION_POLICY_MAPPINGS_EXTENSION = 24;
  CAPICOM_OID_APPLICATION_POLICY_CONSTRAINTS_EXTENSION = 25;
  CAPICOM_OID_AUTHORITY_INFO_ACCESS_EXTENSION = 26;
  CAPICOM_OID_SERVER_AUTH_EKU = 100;
  CAPICOM_OID_CLIENT_AUTH_EKU = 101;
  CAPICOM_OID_CODE_SIGNING_EKU = 102;
  CAPICOM_OID_EMAIL_PROTECTION_EKU = 103;
  CAPICOM_OID_IPSEC_END_SYSTEM_EKU = 104;
  CAPICOM_OID_IPSEC_TUNNEL_EKU = 105;
  CAPICOM_OID_IPSEC_USER_EKU = 106;
  CAPICOM_OID_TIME_STAMPING_EKU = 107;
  CAPICOM_OID_CTL_USAGE_SIGNING_EKU = 108;
  CAPICOM_OID_TIME_STAMP_SIGNING_EKU = 109;
  CAPICOM_OID_SERVER_GATED_CRYPTO_EKU = 110;
  CAPICOM_OID_ENCRYPTING_FILE_SYSTEM_EKU = 111;
  CAPICOM_OID_EFS_RECOVERY_EKU = 112;
  CAPICOM_OID_WHQL_CRYPTO_EKU = 113;
  CAPICOM_OID_NT5_CRYPTO_EKU = 114;
  CAPICOM_OID_OEM_WHQL_CRYPTO_EKU = 115;
  CAPICOM_OID_EMBEDED_NT_CRYPTO_EKU = 116;
  CAPICOM_OID_ROOT_LIST_SIGNER_EKU = 117;
  CAPICOM_OID_QUALIFIED_SUBORDINATION_EKU = 118;
  CAPICOM_OID_KEY_RECOVERY_EKU = 119;
  CAPICOM_OID_DIGITAL_RIGHTS_EKU = 120;
  CAPICOM_OID_LICENSES_EKU = 121;
  CAPICOM_OID_LICENSE_SERVER_EKU = 122;
  CAPICOM_OID_SMART_CARD_LOGON_EKU = 123;
  CAPICOM_OID_PKIX_POLICY_QUALIFIER_CPS = 124;
  CAPICOM_OID_PKIX_POLICY_QUALIFIER_USERNOTICE = 125;

Enum CAPICOM_PROPID;
  CAPICOM_PROPID_UNKNOWN = 0;
  CAPICOM_PROPID_KEY_PROV_HANDLE = 1;
  CAPICOM_PROPID_KEY_PROV_INFO = 2;
  CAPICOM_PROPID_SHA1_HASH = 3;
  CAPICOM_PROPID_HASH_PROP = 3;
  CAPICOM_PROPID_MD5_HASH = 4;
  CAPICOM_PROPID_KEY_CONTEXT = 5;
  CAPICOM_PROPID_KEY_SPEC = 6;
  CAPICOM_PROPID_IE30_RESERVED = 7;
  CAPICOM_PROPID_PUBKEY_HASH_RESERVED = 8;
  CAPICOM_PROPID_ENHKEY_USAGE = 9;
  CAPICOM_PROPID_CTL_USAGE = 9;
  CAPICOM_PROPID_NEXT_UPDATE_LOCATION = 10;
  CAPICOM_PROPID_FRIENDLY_NAME = 11;
  CAPICOM_PROPID_PVK_FILE = 12;
  CAPICOM_PROPID_DESCRIPTION = 13;
  CAPICOM_PROPID_ACCESS_STATE = 14;
  CAPICOM_PROPID_SIGNATURE_HASH = 15;
  CAPICOM_PROPID_SMART_CARD_DATA = 16;
  CAPICOM_PROPID_EFS = 17;
  CAPICOM_PROPID_FORTEZZA_DATA = 18;
  CAPICOM_PROPID_ARCHIVED = 19;
  CAPICOM_PROPID_KEY_IDENTIFIER = 20;
  CAPICOM_PROPID_AUTO_ENROLL = 21;
  CAPICOM_PROPID_PUBKEY_ALG_PARA = 22;
  CAPICOM_PROPID_CROSS_CERT_DIST_POINTS = 23;
  CAPICOM_PROPID_ISSUER_PUBLIC_KEY_MD5_HASH = 24;
  CAPICOM_PROPID_SUBJECT_PUBLIC_KEY_MD5_HASH = 25;
  CAPICOM_PROPID_ENROLLMENT = 26;
  CAPICOM_PROPID_DATE_STAMP = 27;
  CAPICOM_PROPID_ISSUER_SERIAL_NUMBER_MD5_HASH = 28;
  CAPICOM_PROPID_SUBJECT_NAME_MD5_HASH = 29;
  CAPICOM_PROPID_EXTENDED_ERROR_INFO = 30;
  CAPICOM_PROPID_RENEWAL = 64;
  CAPICOM_PROPID_ARCHIVED_KEY_HASH = 65;
  CAPICOM_PROPID_FIRST_RESERVED = 66;
  CAPICOM_PROPID_LAST_RESERVED = $7FFF;
  CAPICOM_PROPID_FIRST_USER = $8000;
  CAPICOM_PROPID_LAST_USER = $FFFF;

Enum CAPICOM_PROV_TYPE;
  CAPICOM_PROV_RSA_FULL = 1;
  CAPICOM_PROV_RSA_SIG = 2;
  CAPICOM_PROV_DSS = 3;
  CAPICOM_PROV_FORTEZZA = 4;
  CAPICOM_PROV_MS_EXCHANGE = 5;
  CAPICOM_PROV_SSL = 6;
  CAPICOM_PROV_RSA_SCHANNEL = 12;
  CAPICOM_PROV_DSS_DH = 13;
  CAPICOM_PROV_EC_ECDSA_SIG = 14;
  CAPICOM_PROV_EC_ECNRA_SIG = 15;
  CAPICOM_PROV_EC_ECDSA_FULL = 16;
  CAPICOM_PROV_EC_ECNRA_FULL = 17;
  CAPICOM_PROV_DH_SCHANNEL = 18;
  CAPICOM_PROV_SPYRUS_LYNKS = 20;
  CAPICOM_PROV_RNG = 21;
  CAPICOM_PROV_INTEL_SEC = 22;
  CAPICOM_PROV_REPLACE_OWF = 23;
  CAPICOM_PROV_RSA_AES = 24;

Enum CAPICOM_CERTIFICATE_SAVE_AS_TYPE;
  CAPICOM_CERTIFICATE_SAVE_AS_PFX = 0;
  CAPICOM_CERTIFICATE_SAVE_AS_CER = 1;

Enum CAPICOM_CERTIFICATES_SAVE_AS_TYPE;
  CAPICOM_CERTIFICATES_SAVE_AS_SERIALIZED = 0;
  CAPICOM_CERTIFICATES_SAVE_AS_PKCS7 = 1;
  CAPICOM_CERTIFICATES_SAVE_AS_PFX = 2;

Enum CAPICOM_CERTIFICATE_INCLUDE_OPTION;
  CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT = 0;
  CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN = 1;
  CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY = 2;

Enum CAPICOM_KEY_SPEC;
  CAPICOM_KEY_SPEC_KEYEXCHANGE = 1;
  CAPICOM_KEY_SPEC_SIGNATURE = 2;

Enum CAPICOM_KEY_LOCATION;
  CAPICOM_CURRENT_USER_KEY = 0;
  CAPICOM_LOCAL_MACHINE_KEY = 1;

Enum CAPICOM_KEY_STORAGE_FLAG;
  CAPICOM_KEY_STORAGE_DEFAULT = 0;
  CAPICOM_KEY_STORAGE_EXPORTABLE = 1;
  CAPICOM_KEY_STORAGE_USER_PROTECTED = 2;

Enum CAPICOM_EXPORT_FLAG;
  CAPICOM_EXPORT_DEFAULT = 0;
  CAPICOM_EXPORT_IGNORE_PRIVATE_KEY_NOT_EXPORTABLE_ERROR = 1;

Enum CAPICOM_KEY_USAGE;
  CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 128;
  CAPICOM_NON_REPUDIATION_KEY_USAGE = 64;
  CAPICOM_KEY_ENCIPHERMENT_KEY_USAGE = 32;
  CAPICOM_DATA_ENCIPHERMENT_KEY_USAGE = 16;
  CAPICOM_KEY_AGREEMENT_KEY_USAGE = 8;
  CAPICOM_KEY_CERT_SIGN_KEY_USAGE = 4;
  CAPICOM_OFFLINE_CRL_SIGN_KEY_USAGE = 2;
  CAPICOM_CRL_SIGN_KEY_USAGE = 2;
  CAPICOM_ENCIPHER_ONLY_KEY_USAGE = 1;
  CAPICOM_DECIPHER_ONLY_KEY_USAGE = $8000;

Enum CAPICOM_CERTIFICATE_FIND_TYPE;
  CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;
  CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME = 1;
  CAPICOM_CERTIFICATE_FIND_ISSUER_NAME = 2;
  CAPICOM_CERTIFICATE_FIND_ROOT_NAME = 3;
  CAPICOM_CERTIFICATE_FIND_TEMPLATE_NAME = 4;
  CAPICOM_CERTIFICATE_FIND_EXTENSION = 5;
  CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;
  CAPICOM_CERTIFICATE_FIND_APPLICATION_POLICY = 7;
  CAPICOM_CERTIFICATE_FIND_CERTIFICATE_POLICY = 8;
  CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
  CAPICOM_CERTIFICATE_FIND_TIME_NOT_YET_VALID = 10;
  CAPICOM_CERTIFICATE_FIND_TIME_EXPIRED = 11;
  CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;

Enum CAPICOM_HASH_ALGORITHM;
  CAPICOM_HASH_ALGORITHM_SHA1 = 0;
  CAPICOM_HASH_ALGORITHM_MD2 = 1;
  CAPICOM_HASH_ALGORITHM_MD4 = 2;
  CAPICOM_HASH_ALGORITHM_MD5 = 3;
  CAPICOM_HASH_ALGORITHM_SHA_256 = 4;
  CAPICOM_HASH_ALGORITHM_SHA_384 = 5;
  CAPICOM_HASH_ALGORITHM_SHA_512 = 6;

Module Constants;
  CAPICOM_MAJOR_VERSION = 2;
  CAPICOM_MINOR_VERSION = 1;
  CAPICOM_RELEASE_NUMBER = 0;
  CAPICOM_BUILD_NUMBER = 2;
  CAPICOM_VERSION_INFO = CAPICOM v2.1;
  CAPICOM_COPY_RIGHT = Copyright (c) Microsoft Corporation 1999-2006. All rights reserved.;
  CAPICOM_MY_STORE = My;
  CAPICOM_CA_STORE = Ca;
  CAPICOM_ROOT_STORE = Root;
  CAPICOM_OTHER_STORE = AddressBook;
  CAPICOM_OID_SERVER_AUTH = 1.3.6.1.5.5.7.3.1;
  CAPICOM_OID_CLIENT_AUTH = 1.3.6.1.5.5.7.3.2;
  CAPICOM_OID_CODE_SIGNING = 1.3.6.1.5.5.7.3.3;
  CAPICOM_OID_EMAIL_PROTECTION = 1.3.6.1.5.5.7.3.4;
  CAPICOM_OID_IPSEC_END_SYSTEM = 1.3.6.1.5.5.7.3.5;
  CAPICOM_OID_IPSEC_TUNNEL = 1.3.6.1.5.5.7.3.6;
  CAPICOM_OID_IPSEC_USER = 1.3.6.1.5.5.7.3.7;
  CAPICOM_OID_TIME_STAMPING = 1.3.6.1.5.5.7.3.8;
  CAPICOM_OID_CTL_USAGE_SIGNING = 1.3.6.1.4.1.311.10.3.1;
  CAPICOM_OID_TIME_STAMP_SIGNING = 1.3.6.1.4.1.311.10.3.2;
  CAPICOM_OID_SERVER_GATED_CRYPTO = 1.3.6.1.4.1.311.10.3.3;
  CAPICOM_OID_ENCRYPTING_FILE_SYSTEM = 1.3.6.1.4.1.311.10.3.4;
  CAPICOM_OID_EFS_RECOVERY = 1.3.6.1.4.1.311.10.3.4.1;
  CAPICOM_OID_WHQL_CRYPTO = 1.3.6.1.4.1.311.10.3.5;
  CAPICOM_OID_NT5_CRYPTO = 1.3.6.1.4.1.311.10.3.6;
  CAPICOM_OID_OEM_WHQL_CRYPTO = 1.3.6.1.4.1.311.10.3.7;
  CAPICOM_OID_EMBEDED_NT_CRYPTO = 1.3.6.1.4.1.311.10.3.8;
  CAPICOM_OID_ROOT_LIST_SIGNER = 1.3.6.1.4.1.311.10.3.9;
  CAPICOM_OID_QUALIFIED_SUBORDINATION = 1.3.6.1.4.1.311.10.3.10;
  CAPICOM_OID_KEY_RECOVERY = 1.3.6.1.4.1.311.10.3.11;
  CAPICOM_OID_DIGITAL_RIGHTS = 1.3.6.1.4.1.311.10.5.1;
  CAPICOM_OID_LICENSES = 1.3.6.1.4.1.311.10.6.1;
  CAPICOM_OID_LICENSE_SERVER = 1.3.6.1.4.1.311.10.6.2;
  CAPICOM_OID_SMART_CARD_LOGON = 1.3.6.1.4.1.311.20.2.2;
  CAPICOM_SERVER_AUTH_OID = 1.3.6.1.5.5.7.3.1;
  CAPICOM_CLIENT_AUTH_OID = 1.3.6.1.5.5.7.3.2;
  CAPICOM_CODE_SIGNING_OID = 1.3.6.1.5.5.7.3.3;
  CAPICOM_EMAIL_PROTECTION_OID = 1.3.6.1.5.5.7.3.4;
  CAPICOM_IPSEC_END_SYSTEM_OID = 1.3.6.1.5.5.7.3.5;
  CAPICOM_IPSEC_TUNNEL_OID = 1.3.6.1.5.5.7.3.6;
  CAPICOM_IPSEC_USER_OID = 1.3.6.1.5.5.7.3.7;
  CAPICOM_TIME_STAMPING_OID = 1.3.6.1.5.5.7.3.8;
  CAPICOM_CTL_USAGE_SIGNING_OID = 1.3.6.1.4.1.311.10.3.1;
  CAPICOM_TIME_STAMP_SIGNING_OID = 1.3.6.1.4.1.311.10.3.2;
  CAPICOM_SERVER_GATED_CRYPTO_OID = 1.3.6.1.4.1.311.10.3.3;
  CAPICOM_ENCRYPTING_FILE_SYSTEM_OID = 1.3.6.1.4.1.311.10.3.4;
  CAPICOM_EFS_RECOVERY_OID = 1.3.6.1.4.1.311.10.3.4.1;
  CAPICOM_WHQL_CRYPTO_OID = 1.3.6.1.4.1.311.10.3.5;
  CAPICOM_NT5_CRYPTO_OID = 1.3.6.1.4.1.311.10.3.6;
  CAPICOM_OEM_WHQL_CRYPTO_OID = 1.3.6.1.4.1.311.10.3.7;
  CAPICOM_EMBEDED_NT_CRYPTO_OID = 1.3.6.1.4.1.311.10.3.8;
  CAPICOM_ROOT_LIST_SIGNER_OID = 1.3.6.1.4.1.311.10.3.9;
  CAPICOM_QUALIFIED_SUBORDINATION_OID = 1.3.6.1.4.1.311.10.3.10;
  CAPICOM_KEY_RECOVERY_OID = 1.3.6.1.4.1.311.10.3.11;
  CAPICOM_DIGITAL_RIGHTS_OID = 1.3.6.1.4.1.311.10.5.1;
  CAPICOM_LICENSES_OID = 1.3.6.1.4.1.311.10.6.1;
  CAPICOM_LICENSE_SERVER_OID = 1.3.6.1.4.1.311.10.6.2;
  CAPICOM_SMART_CARD_LOGON_OID = 1.3.6.1.4.1.311.20.2.2;
  CAPICOM_ANY_APPLICATION_POLICY_OID = 1.3.6.1.4.1.311.10.12.1;
  CAPICOM_ANY_CERT_POLICY_OID = 2.5.29.32.0;
  CAPICOM_AUTHORITY_KEY_IDENTIFIER_OID = 2.5.29.1;
  CAPICOM_KEY_ATTRIBUTES_OID = 2.5.29.2;
  CAPICOM_CERT_POLICIES_95_OID = 2.5.29.3;
  CAPICOM_KEY_USAGE_RESTRICTION_OID = 2.5.29.4;
  CAPICOM_LEGACY_POLICY_MAPPINGS_OID = 2.5.29.5;
  CAPICOM_SUBJECT_ALT_NAME_OID = 2.5.29.7;
  CAPICOM_ISSUER_ALT_NAME_OID = 2.5.29.8;
  CAPICOM_BASIC_CONSTRAINTS_OID = 2.5.29.10;
  CAPICOM_SUBJECT_KEY_IDENTIFIER_OID = 2.5.29.14;
  CAPICOM_KEY_USAGE_OID = 2.5.29.15;
  CAPICOM_PRIVATEKEY_USAGE_PERIOD_OID = 2.5.29.16;
  CAPICOM_SUBJECT_ALT_NAME2_OID = 2.5.29.17;
  CAPICOM_ISSUER_ALT_NAME2_OID = 2.5.29.18;
  CAPICOM_BASIC_CONSTRAINTS2_OID = 2.5.29.19;
  CAPICOM_NAME_CONSTRAINTS_OID = 2.5.29.30;
  CAPICOM_CRL_DIST_POINTS_OID = 2.5.29.31;
  CAPICOM_CERT_POLICIES_OID = 2.5.29.32;
  CAPICOM_POLICY_MAPPINGS_OID = 2.5.29.33;
  CAPICOM_AUTHORITY_KEY_IDENTIFIER2_OID = 2.5.29.35;
  CAPICOM_POLICY_CONSTRAINTS_OID = 2.5.29.36;
  CAPICOM_ENHANCED_KEY_USAGE_OID = 2.5.29.37;
  CAPICOM_CERTIFICATE_TEMPLATE_OID = 1.3.6.1.4.1.311.21.7;
  CAPICOM_APPLICATION_CERT_POLICIES_OID = 1.3.6.1.4.1.311.21.10;
  CAPICOM_APPLICATION_POLICY_MAPPINGS_OID = 1.3.6.1.4.1.311.21.11;
  CAPICOM_APPLICATION_POLICY_CONSTRAINTS_OID = 1.3.6.1.4.1.311.21.12;
  CAPICOM_AUTHORITY_INFO_ACCESS_OID = 1.3.6.1.5.5.7.1.1;
  CAPICOM_PKIX_POLICY_QUALIFIER_CPS_OID = 1.3.6.1.5.5.7.2.1;
  CAPICOM_PKIX_POLICY_QUALIFIER_USERNOTICE_OID = 1.3.6.1.5.5.7.2.2;
  CAPICOM_TRUST_IS_NOT_TIME_VALID = 1;
  CAPICOM_TRUST_IS_NOT_TIME_NESTED = 2;
  CAPICOM_TRUST_IS_REVOKED = 4;
  CAPICOM_TRUST_IS_NOT_SIGNATURE_VALID = 8;
  CAPICOM_TRUST_IS_NOT_VALID_FOR_USAGE = 16;
  CAPICOM_TRUST_IS_UNTRUSTED_ROOT = 32;
  CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN = 64;
  CAPICOM_TRUST_IS_CYCLIC = 128;
  CAPICOM_TRUST_INVALID_EXTENSION = $100;
  CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS = $200;
  CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS = $400;
  CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS = $800;
  CAPICOM_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = $1000;
  CAPICOM_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = $2000;
  CAPICOM_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = $4000;
  CAPICOM_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = $8000;
  CAPICOM_TRUST_IS_OFFLINE_REVOCATION = $1000000;
  CAPICOM_TRUST_NO_ISSUANCE_CHAIN_POLICY = $2000000;
  CAPICOM_TRUST_IS_PARTIAL_CHAIN = $10000;
  CAPICOM_TRUST_CTL_IS_NOT_TIME_VALID = $20000;
  CAPICOM_TRUST_CTL_IS_NOT_SIGNATURE_VALID = $40000;
  CAPICOM_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = $80000;
  CAPICOM_PROV_MS_DEF_PROV = Microsoft Base Cryptographic Provider v1.0;
  CAPICOM_PROV_MS_ENHANCED_PROV = Microsoft Enhanced Cryptographic Provider v1.0;
  CAPICOM_PROV_MS_STRONG_PROV = Microsoft Strong Cryptographic Provider;
  CAPICOM_PROV_MS_DEF_RSA_SIG_PROV = Microsoft RSA Signature Cryptographic Provider;
  CAPICOM_PROV_MS_DEF_RSA_SCHANNEL_PROV = Microsoft RSA SChannel Cryptographic Provider;
  CAPICOM_PROV_MS_DEF_DSS_PROV = Microsoft Base DSS Cryptographic Provider;
  CAPICOM_PROV_MS_DEF_DSS_DH_PROV = Microsoft Base DSS and Diffie-Hellman Cryptographic Provider;
  CAPICOM_PROV_MS_ENH_DSS_DH_PROV = Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider;
  CAPICOM_PROV_MS_DEF_DH_SCHANNEL_PROV = Microsoft DH SChannel Cryptographic Provider;
  CAPICOM_PROV_MS_SCARD_PROV = Microsoft Base Smart Card Crypto Provider;
  CAPICOM_PROV_MS_ENH_RSA_AES_PROV = Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype);

Class Settings; // Settings Class
GUID={A996E48C-D3DC-4244-89F7-AFA33EC60679};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get EnablePromptForCertificateUI: bool;
  property-put EnablePromptForCertificateUI(bool);
  property-get ActiveDirectorySearchLocation: CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION;
  property-put ActiveDirectorySearchLocation(CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION);

Dispatch ISettings; // ISettings Interface
GUID={A24104F5-46D0-4C0F-926D-665565908E91};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get EnablePromptForCertificateUI: bool;
  property-put EnablePromptForCertificateUI(bool);
  property-get ActiveDirectorySearchLocation: CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION;
  property-put ActiveDirectorySearchLocation(CAPICOM_ACTIVE_DIRECTORY_SEARCH_LOCATION);

Class EKU; // EKU Class
GUID={8535F9A1-738A-40D0-8FB1-10CC8F74E7D3};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_EKU;
  property-put Name(CAPICOM_EKU);
  property-get OID: BSTR;
  property-put OID(BSTR);

Dispatch IEKU; // IEKU Interface
GUID={976B7E6D-1002-4051-BFD4-824A74BD74E2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_EKU;
  property-put Name(CAPICOM_EKU);
  property-get OID: BSTR;
  property-put OID(BSTR);

Class EKUs; // EKUs Class
GUID={F1800663-5BFC-4D1A-8D44-56CE02DDA34F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch IEKUs; // IEKUs Interface
GUID={47C87CEC-8C4B-4E3C-8D22-34280274EFD1};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class KeyUsage; // KeyUsage Class
GUID={9226C95C-38BE-4CC4-B3A2-A867F5199C13};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get IsDigitalSignatureEnabled: bool;
  property-get IsNonRepudiationEnabled: bool;
  property-get IsKeyEnciphermentEnabled: bool;
  property-get IsDataEnciphermentEnabled: bool;
  property-get IsKeyAgreementEnabled: bool;
  property-get IsKeyCertSignEnabled: bool;
  property-get IsCRLSignEnabled: bool;
  property-get IsEncipherOnlyEnabled: bool;
  property-get IsDecipherOnlyEnabled: bool;

Dispatch IKeyUsage; // IKeyUsage Interface
GUID={41DD35A8-9FF9-45A6-9A7C-F65B2F085D1F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get IsDigitalSignatureEnabled: bool;
  property-get IsNonRepudiationEnabled: bool;
  property-get IsKeyEnciphermentEnabled: bool;
  property-get IsDataEnciphermentEnabled: bool;
  property-get IsKeyAgreementEnabled: bool;
  property-get IsKeyCertSignEnabled: bool;
  property-get IsCRLSignEnabled: bool;
  property-get IsEncipherOnlyEnabled: bool;
  property-get IsDecipherOnlyEnabled: bool;

Class ExtendedKeyUsage; // ExtendedKeyUsage Class
GUID={42C18607-1B4B-4126-8F1B-76E2DC7F631A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get EKUs: ^IEKUs;

Dispatch IExtendedKeyUsage; // IExtendedKeyUsage Interface
GUID={7289D408-987D-45D1-8DEE-CF9E91C2E90E};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get EKUs: ^IEKUs;

Class BasicConstraints; // BasicConstraints Class
GUID={C05AAC6E-3A58-45A9-A203-56952E961E48};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get IsCertificateAuthority: bool;
  property-get IsPathLenConstraintPresent: bool;
  property-get PathLenConstraint: I4;

Dispatch IBasicConstraints; // IBasicConstraints Interface
GUID={4E298C47-ABA6-459E-851B-993D6C626EAD};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get IsCertificateAuthority: bool;
  property-get IsPathLenConstraintPresent: bool;
  property-get PathLenConstraint: I4;

Class CertificateStatus; // CertificateStatus Class
GUID={0EF24D18-BD9B-47D4-9458-E05B489FB7BA};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;
  property-get VerificationTime: date;
  property-put VerificationTime(date);
  property-get UrlRetrievalTimeout: I4;
  property-put UrlRetrievalTimeout(I4);
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;
  property-get ValidationCertificates: ^ICertificates;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;
  property-get VerificationTime: date;
  property-put VerificationTime(date);
  property-get UrlRetrievalTimeout: I4;
  property-put UrlRetrievalTimeout(I4);
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;

Dispatch ICertificateStatus3; // ICertificateStatus3 Interface
GUID={A4EAB890-0786-406B-9B31-2746F31F8D87};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;
  property-get VerificationTime: date;
  property-put VerificationTime(date);
  property-get UrlRetrievalTimeout: I4;
  property-put UrlRetrievalTimeout(I4);
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;
  property-get ValidationCertificates: ^ICertificates;

Dispatch ICertificateStatus2; // ICertificateStatus2 Interface
GUID={BF95660E-F743-4EAC-9DE5-960787A4606C};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;
  property-get VerificationTime: date;
  property-put VerificationTime(date);
  property-get UrlRetrievalTimeout: I4;
  property-put UrlRetrievalTimeout(I4);
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;

Dispatch ICertificateStatus; // ICertificateStatus Interface
GUID={AB769053-6D38-49D4-86EF-5FA85ED3AF27};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Result: bool;
  property-get CheckFlag: CAPICOM_CHECK_FLAG;
  property-put CheckFlag(CAPICOM_CHECK_FLAG);
  function EKU: ^IEKU;

Dispatch IOIDs; // IOIDs Interface
GUID={DA55E8FC-8E27-451B-AEA8-1470D80FAD42};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:variant): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IOID);
  function Remove(Index:variant);
  function Clear;

Dispatch IOID; // IOID Interface
GUID={208E5E9B-58B1-4086-970F-161B582A846F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_OID;
  property-put Name(CAPICOM_OID);
  property-get FriendlyName: BSTR;
  property-put FriendlyName(BSTR);
  property-get Value: BSTR;
  property-put Value(BSTR);

Dispatch ICertificates; // ICertificates Interface
GUID={68646716-BDA0-4046-AB82-4444BC93B84A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class Certificate; // Certificate Class
GUID={9171C115-7DD9-46BA-B1E5-0ED50AFFC1B8};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Version: I4;
  property-get SerialNumber: BSTR;
  property-get SubjectName: BSTR;
  property-get IssuerName: BSTR;
  property-get ValidFromDate: date;
  property-get ValidToDate: date;
  property-get Thumbprint: BSTR;
  function HasPrivateKey: bool;
  function GetInfo(InfoType:CAPICOM_CERT_INFO_TYPE): BSTR;
  function IsValid: ^ICertificateStatus;
  function KeyUsage: ^IKeyUsage;
  function ExtendedKeyUsage: ^IExtendedKeyUsage;
  function BasicConstraints: ^IBasicConstraints;
  function Export(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedCertificate:BSTR);
  function Display;
  property-get Archived: bool;
  property-put Archived(bool);
  function Template: ^ITemplate;
  function PublicKey: ^IPublicKey;
  property-get PrivateKey: ^IPrivateKey;
  property-put PrivateKey(^IPrivateKey);
  function Extensions: ^IExtensions;
  function ExtendedProperties: ^IExtendedProperties;
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG; KeyLocation:CAPICOM_KEY_LOCATION);
  function Save(FileName:BSTR; Password:BSTR; SaveAs:CAPICOM_CERTIFICATE_SAVE_AS_TYPE; IncludeOption:CAPICOM_CERTIFICATE_INCLUDE_OPTION);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Version: I4;
  property-get SerialNumber: BSTR;
  property-get SubjectName: BSTR;
  property-get IssuerName: BSTR;
  property-get ValidFromDate: date;
  property-get ValidToDate: date;
  property-get Thumbprint: BSTR;
  function HasPrivateKey: bool;
  function GetInfo(InfoType:CAPICOM_CERT_INFO_TYPE): BSTR;
  function IsValid: ^ICertificateStatus;
  function KeyUsage: ^IKeyUsage;
  function ExtendedKeyUsage: ^IExtendedKeyUsage;
  function BasicConstraints: ^IBasicConstraints;
  function Export(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedCertificate:BSTR);
  function Display;
  property-get CertContext(out ppCertContext:^I4): HResult;
  property-put CertContext(ppCertContext:I4): HResult;
  function FreeContext(pCertContext:I4): HResult;

Dispatch ICertificate2; // ICertificate2 Interface
GUID={6FE450DC-AD32-48D4-A366-01EE7E0B1374};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Version: I4;
  property-get SerialNumber: BSTR;
  property-get SubjectName: BSTR;
  property-get IssuerName: BSTR;
  property-get ValidFromDate: date;
  property-get ValidToDate: date;
  property-get Thumbprint: BSTR;
  function HasPrivateKey: bool;
  function GetInfo(InfoType:CAPICOM_CERT_INFO_TYPE): BSTR;
  function IsValid: ^ICertificateStatus;
  function KeyUsage: ^IKeyUsage;
  function ExtendedKeyUsage: ^IExtendedKeyUsage;
  function BasicConstraints: ^IBasicConstraints;
  function Export(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedCertificate:BSTR);
  function Display;
  property-get Archived: bool;
  property-put Archived(bool);
  function Template: ^ITemplate;
  function PublicKey: ^IPublicKey;
  property-get PrivateKey: ^IPrivateKey;
  property-put PrivateKey(^IPrivateKey);
  function Extensions: ^IExtensions;
  function ExtendedProperties: ^IExtendedProperties;
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG; KeyLocation:CAPICOM_KEY_LOCATION);
  function Save(FileName:BSTR; Password:BSTR; SaveAs:CAPICOM_CERTIFICATE_SAVE_AS_TYPE; IncludeOption:CAPICOM_CERTIFICATE_INCLUDE_OPTION);

Dispatch ICertificate; // ICertificate Interface
GUID={0BBA0B86-766C-4755-A443-243FF2BD8D29};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Version: I4;
  property-get SerialNumber: BSTR;
  property-get SubjectName: BSTR;
  property-get IssuerName: BSTR;
  property-get ValidFromDate: date;
  property-get ValidToDate: date;
  property-get Thumbprint: BSTR;
  function HasPrivateKey: bool;
  function GetInfo(InfoType:CAPICOM_CERT_INFO_TYPE): BSTR;
  function IsValid: ^ICertificateStatus;
  function KeyUsage: ^IKeyUsage;
  function ExtendedKeyUsage: ^IExtendedKeyUsage;
  function BasicConstraints: ^IBasicConstraints;
  function Export(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedCertificate:BSTR);
  function Display;

Dispatch ITemplate; // ITemplate Interface
GUID={5F10FFCE-C922-476F-AA76-DF99D5BDFA2C};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get Name: BSTR;
  property-get OID: ^IOID;
  property-get MajorVersion: I4;
  property-get MinorVersion: I4;

Dispatch IPublicKey; // IPublicKey Interface
GUID={72BF9ADA-6817-4C31-B43E-25F7C7B091F4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Algorithm: ^IOID;
  property-get Length: I4;
  property-get EncodedKey: ^IEncodedData;
  property-get EncodedParameters: ^IEncodedData;

Dispatch IEncodedData; // IEncodedData Interface
GUID={D3D460F2-E7F3-4AF3-8EC6-8EB68C61C567};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Value(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Format(bMultiLines:bool): BSTR;
  function Decoder: IDispatch;

Dispatch IPrivateKey; // IPrivateKey Interface
GUID={659DEDC3-6C85-42DB-8527-EFCB21742862};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get ContainerName: BSTR;
  property-get UniqueContainerName: BSTR;
  property-get ProviderName: BSTR;
  property-get ProviderType: CAPICOM_PROV_TYPE;
  property-get KeySpec: CAPICOM_KEY_SPEC;
  function IsAccessible: bool;
  function IsProtected: bool;
  function IsExportable: bool;
  function IsRemovable: bool;
  function IsMachineKeyset: bool;
  function IsHardwareDevice: bool;
  function Open(ContainerName:BSTR; ProviderName:BSTR; ProviderType:CAPICOM_PROV_TYPE; KeySpec:CAPICOM_KEY_SPEC; StoreLocation:CAPICOM_STORE_LOCATION; bCheckExistence:bool);
  function Delete;

Dispatch IExtensions; // IExtensions Interface
GUID={BC530D61-E692-4225-9E7A-07B90B45856A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:variant): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch IExtendedProperties; // IExtendedProperties Interface
GUID={3B096E87-6218-4A3B-A880-F6CB951E7805};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IExtendedProperty);
  function Remove(PropID:CAPICOM_PROPID);

Dispatch IExtendedProperty; // IExtendedProperty Interface
GUID={ECB8A5C8-562C-4989-B49D-FA37D40F8FC4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get PropID: CAPICOM_PROPID;
  property-put PropID(CAPICOM_PROPID);
  property-get Value(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  property-put Value(EncodingType:CAPICOM_ENCODING_TYPE; BSTR);

Interface ICertContext; // ICertContext Interface
GUID={9E7D3477-4F63-423E-8A45-E13B2BB851A2};
  property-get CertContext(out ppCertContext:^I4): HResult;
  property-put CertContext(ppCertContext:I4): HResult;
  function FreeContext(pCertContext:I4): HResult;

Class Certificates; // Certificates Class
GUID={3605B612-C3CF-4AB4-A426-2D853391DB2E};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Find(FindType:CAPICOM_CERTIFICATE_FIND_TYPE; varCriteria:variant; bFindValidOnly:bool): ^ICertificates2;
  function Select(Title:BSTR; DisplayString:BSTR; bMultiSelect:bool): ^ICertificates2;
  function Add(pVal:^ICertificate2);
  function Remove(Index:variant);
  function Clear;
  function Save(FileName:BSTR; Password:BSTR; SaveAs:CAPICOM_CERTIFICATES_SAVE_AS_TYPE; ExportFlag:CAPICOM_EXPORT_FLAG);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function _ExportToStore(hCertStore:^void): HResult;

Dispatch ICertificates2; // ICertificates2 Interface
GUID={7B57C04B-1786-4B30-A7B6-36235CD58A14};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Find(FindType:CAPICOM_CERTIFICATE_FIND_TYPE; varCriteria:variant; bFindValidOnly:bool): ^ICertificates2;
  function Select(Title:BSTR; DisplayString:BSTR; bMultiSelect:bool): ^ICertificates2;
  function Add(pVal:^ICertificate2);
  function Remove(Index:variant);
  function Clear;
  function Save(FileName:BSTR; Password:BSTR; SaveAs:CAPICOM_CERTIFICATES_SAVE_AS_TYPE; ExportFlag:CAPICOM_EXPORT_FLAG);

Interface ICCertificates; // ICCertificates Interface
GUID={EBDC6DC2-684D-4425-BBB7-CB4D15A088A7};
  function _ExportToStore(hCertStore:^void): HResult;

Class Chain; // Chain Class
GUID={550C8FFB-4DC0-4756-828C-862E6D0AE74F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  property-get Status(Index:I4): I4;
  function Build(pICertificate:^ICertificate): bool;
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;
  function ExtendedErrorInfo(Index:I4): BSTR;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  property-get Status(Index:I4): I4;
  function Build(pICertificate:^ICertificate): bool;
  property-get ChainContext(out pChainContext:^I4): HResult;
  property-put ChainContext(pChainContext:I4): HResult;
  function FreeContext(pChainContext:I4): HResult;

Dispatch IChain2; // IChain2 Interface
GUID={CA65D842-2110-4073-AEE3-D0AA5F56C421};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  property-get Status(Index:I4): I4;
  function Build(pICertificate:^ICertificate): bool;
  function CertificatePolicies: ^IOIDs;
  function ApplicationPolicies: ^IOIDs;
  function ExtendedErrorInfo(Index:I4): BSTR;

Dispatch IChain; // IChain Interface
GUID={77F6F881-5D3A-4F2F-AEF0-E4A2F9AA689D};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  property-get Status(Index:I4): I4;
  function Build(pICertificate:^ICertificate): bool;

Interface IChainContext; // IChainContext Interface
GUID={B27FFB30-432E-4585-A3FD-72530108CBFD};
  property-get ChainContext(out pChainContext:^I4): HResult;
  property-put ChainContext(pChainContext:I4): HResult;
  function FreeContext(pChainContext:I4): HResult;

Class Store; // Store Class
GUID={91D221C4-0CD4-461C-A728-01D509321556};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG);
  property-get Name: BSTR;
  property-get Location: CAPICOM_STORE_LOCATION;
  function Delete: bool;
  function Close;
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);
  property-get StoreHandle(out phCertStore:^I4): HResult;
  property-put StoreHandle(phCertStore:I4): HResult;
  property-get StoreLocation(out pStoreLocation:^CAPICOM_STORE_LOCATION): HResult;
  property-put StoreLocation(pStoreLocation:CAPICOM_STORE_LOCATION): HResult;
  function CloseHandle(hCertStore:I4): HResult;

Dispatch IStore3; // IStore3 Interface
GUID={F701F8EC-31C7-48FB-B621-5DE417C3A607};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG);
  property-get Name: BSTR;
  property-get Location: CAPICOM_STORE_LOCATION;
  function Delete: bool;
  function Close;

Dispatch IStore2; // IStore2 Interface
GUID={4DA6ABC4-BDCD-4317-B650-262075B93A9C};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);
  function Load(FileName:BSTR; Password:BSTR; KeyStorageFlag:CAPICOM_KEY_STORAGE_FLAG);

Dispatch IStore; // IStore Interface
GUID={E860EF75-1B63-4254-AF47-960DAA3DD337};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificates: ^ICertificates;
  function Open(StoreLocation:CAPICOM_STORE_LOCATION; StoreName:BSTR; OpenMode:CAPICOM_STORE_OPEN_MODE);
  function Add(pVal:^ICertificate);
  function Remove(pVal:^ICertificate);
  function Export(SaveAs:CAPICOM_STORE_SAVE_AS_TYPE; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Import(EncodedStore:BSTR);

Interface ICertStore; // ICertStore Interface
GUID={BB3ECB9C-A83A-445C-BDB5-EFBEF691B731};
  property-get StoreHandle(out phCertStore:^I4): HResult;
  property-put StoreHandle(phCertStore:I4): HResult;
  property-get StoreLocation(out pStoreLocation:^CAPICOM_STORE_LOCATION): HResult;
  property-put StoreLocation(pStoreLocation:CAPICOM_STORE_LOCATION): HResult;
  function CloseHandle(hCertStore:I4): HResult;

Class Attribute; // Attribute Class
GUID={54BA1E8F-818D-407F-949D-BAE1692C5C18};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_ATTRIBUTE;
  property-put Name(CAPICOM_ATTRIBUTE);
  property-get Value: variant;
  property-put Value(variant);

Dispatch IAttribute; // IAttribute Interface
GUID={B17A8D78-B5A6-45F7-BA21-01AB94B08415};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_ATTRIBUTE;
  property-put Name(CAPICOM_ATTRIBUTE);
  property-get Value: variant;
  property-put Value(variant);

Class Attributes; // Attributes Class
GUID={933013A9-64C8-4485-ACEF-4908C3692A33};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IAttribute);
  function Remove(Index:I4);
  function Clear;

Dispatch IAttributes; // IAttributes Interface
GUID={6ADC653E-D5B9-422A-991A-A2B0119CEDAC};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IAttribute);
  function Remove(Index:I4);
  function Clear;

Class Signer; // Signer Class
GUID={60A9863A-11FD-4080-850E-A8E184FC3A3C};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificate: ^ICertificate;
  property-put Certificate(^ICertificate);
  property-get AuthenticatedAttributes: ^IAttributes;
  property-get Chain: ^IChain;
  property-get Options: CAPICOM_CERTIFICATE_INCLUDE_OPTION;
  property-put Options(CAPICOM_CERTIFICATE_INCLUDE_OPTION);
  function Load(FileName:BSTR; Password:BSTR);
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificate: ^ICertificate;
  property-put Certificate(^ICertificate);
  property-get AuthenticatedAttributes: ^IAttributes;
  property-get AdditionalStore(out phAdditionalStore:^I4): HResult;
  property-put AdditionalStore(phAdditionalStore:I4): HResult;

Dispatch ISigner2; // ISigner2 Interface
GUID={625B1F55-C720-41D6-9ECF-BA59F9B85F17};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificate: ^ICertificate;
  property-put Certificate(^ICertificate);
  property-get AuthenticatedAttributes: ^IAttributes;
  property-get Chain: ^IChain;
  property-get Options: CAPICOM_CERTIFICATE_INCLUDE_OPTION;
  property-put Options(CAPICOM_CERTIFICATE_INCLUDE_OPTION);
  function Load(FileName:BSTR; Password:BSTR);

Dispatch ISigner; // ISigner Interface
GUID={51017B88-1913-49AD-82BE-6BB7C417DCF2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Certificate: ^ICertificate;
  property-put Certificate(^ICertificate);
  property-get AuthenticatedAttributes: ^IAttributes;

Interface ICSigner; // ICSigner Interface
GUID={8F83F792-014C-4E22-BD57-5C381E622F34};
  property-get AdditionalStore(out phAdditionalStore:^I4): HResult;
  property-put AdditionalStore(phAdditionalStore:I4): HResult;

Class Signers; // Signers Class
GUID={1314C1D8-D3A8-4F8A-BED0-811FD7A8A633};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch ISigners; // ISigners Interface
GUID={5A0780F8-9E6B-4BB0-BF54-87CD9627A8B4};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class SignedData; // SignedData Class
GUID={94AFFFCC-6C05-4814-B123-A941105AA77F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Signers: ^ISigners;
  property-get Certificates: ^ICertificates;
  function Sign(pSigner:^ISigner; bDetached:bool; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function CoSign(pSigner:^ISigner; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Verify(SignedMessage:BSTR; bDetached:bool; VerifyFlag:CAPICOM_SIGNED_DATA_VERIFY_FLAG);

Dispatch ISignedData; // ISignedData Interface
GUID={AE9C454B-FC65-4C10-B130-CD9B45BA948B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Signers: ^ISigners;
  property-get Certificates: ^ICertificates;
  function Sign(pSigner:^ISigner; bDetached:bool; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function CoSign(pSigner:^ISigner; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Verify(SignedMessage:BSTR; bDetached:bool; VerifyFlag:CAPICOM_SIGNED_DATA_VERIFY_FLAG);

Class Algorithm; // Algorithm Class
GUID={A1EEF42F-5026-4A32-BC5C-2E552B70FD96};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_ENCRYPTION_ALGORITHM;
  property-put Name(CAPICOM_ENCRYPTION_ALGORITHM);
  property-get KeyLength: CAPICOM_ENCRYPTION_KEY_LENGTH;
  property-put KeyLength(CAPICOM_ENCRYPTION_KEY_LENGTH);

Dispatch IAlgorithm; // IAlgorithm Interface
GUID={BF3D04A9-B0DA-4153-B45E-6CCFA5AC715B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_ENCRYPTION_ALGORITHM;
  property-put Name(CAPICOM_ENCRYPTION_ALGORITHM);
  property-get KeyLength: CAPICOM_ENCRYPTION_KEY_LENGTH;
  property-put KeyLength(CAPICOM_ENCRYPTION_KEY_LENGTH);

Class Recipients; // Recipients Class
GUID={96A1B8B0-8F9A-436A-84DE-E23CD6818DA5};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^ICertificate);
  function Remove(Index:I4);
  function Clear;

Dispatch IRecipients; // IRecipients Interface
GUID={A694C896-FC38-4C34-AE61-3B1A95984C14};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^ICertificate);
  function Remove(Index:I4);
  function Clear;

Class EnvelopedData; // EnvelopedData Class
GUID={F3A12E08-EDE9-4160-8B51-334D982A9AD0};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Algorithm: ^IAlgorithm;
  property-get Recipients: ^IRecipients;
  function Encrypt(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Decrypt(EnvelopedMessage:BSTR);

Dispatch IEnvelopedData; // IEnvelopedData Interface
GUID={F6CB6A20-CC18-4424-AE57-6F2AA3DC2059};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Algorithm: ^IAlgorithm;
  property-get Recipients: ^IRecipients;
  function Encrypt(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Decrypt(EnvelopedMessage:BSTR);

Class EncryptedData; // EncryptedData Class
GUID={A440BD76-CFE1-4D46-AB1F-15F238437A3D};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Algorithm: ^IAlgorithm;
  function SetSecret(newVal:BSTR; SecretType:CAPICOM_SECRET_TYPE);
  function Encrypt(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Decrypt(EncryptedMessage:BSTR);

Dispatch IEncryptedData; // IEncryptedData Interface
GUID={C4778A66-972F-42E4-87C5-5CC16F7931CA};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-put Content(BSTR);
  property-get Content: BSTR;
  property-get Algorithm: ^IAlgorithm;
  function SetSecret(newVal:BSTR; SecretType:CAPICOM_SECRET_TYPE);
  function Encrypt(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Decrypt(EncryptedMessage:BSTR);

Class OID; // OID Class
GUID={7BF3AC5C-CC84-429A-ACA5-74D916AD6B8C};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Name: CAPICOM_OID;
  property-put Name(CAPICOM_OID);
  property-get FriendlyName: BSTR;
  property-put FriendlyName(BSTR);
  property-get Value: BSTR;
  property-put Value(BSTR);

Class OIDs; // OIDs Class
GUID={FD661131-D716-4D15-A187-AEAAB161C8AD};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:variant): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IOID);
  function Remove(Index:variant);
  function Clear;

Class NoticeNumbers; // NoticeNumbers Class
GUID={A6FDF22A-8E00-464B-B15D-1A891D88B6ED};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch INoticeNumbers; // INoticeNumbers Interface
GUID={EE2C051D-33A1-4157-86B4-9280E29782F2};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class Qualifier; // Qualifier Class
GUID={E5F29B74-0902-4654-8A9A-21C5201DFA61};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get CPSPointer: BSTR;
  property-get OrganizationName: BSTR;
  property-get NoticeNumbers: ^INoticeNumbers;
  property-get ExplicitText: BSTR;

Dispatch IQualifier; // IQualifier Interface
GUID={3604C9DD-A22E-4A15-A469-8181C0C113DE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get CPSPointer: BSTR;
  property-get OrganizationName: BSTR;
  property-get NoticeNumbers: ^INoticeNumbers;
  property-get ExplicitText: BSTR;

Class Qualifiers; // Qualifiers Class
GUID={6C8006C0-F649-4783-B4A6-617DD0B270C7};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch IQualifiers; // IQualifiers Interface
GUID={6B5A8AB6-597D-4398-AC63-1036EF546348};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class PolicyInformation; // PolicyInformation Class
GUID={0AAF88F4-1C22-4F65-A0E3-289D97DCE994};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get Qualifiers: ^IQualifiers;

Dispatch IPolicyInformation; // IPolicyInformation Interface
GUID={8973710C-8411-4951-9E65-D45FD524FFDF};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get Qualifiers: ^IQualifiers;

Class CertificatePolicies; // CertificatePolicies Class
GUID={988583C2-00C7-4D22-9241-E810E35EED1B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Dispatch ICertificatePolicies; // ICertificatePolicies Interface
GUID={CC7A72A7-C83A-4049-85F4-4292DE9DBFD3};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class EncodedData; // EncodedData Class
GUID={7083C0AA-E7B9-48A4-8EFB-D6A109EBEC13};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Value(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Format(bMultiLines:bool): BSTR;
  function Decoder: IDispatch;

Class Extension; // Extension Class
GUID={D2359E2C-82D6-458F-BB6F-41559155E693};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get IsCritical: bool;
  property-get EncodedData: ^IEncodedData;

Dispatch IExtension; // IExtension Interface
GUID={ED4E4ED4-FDD8-476E-AED9-5239E7948257};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get OID: ^IOID;
  property-get IsCritical: bool;
  property-get EncodedData: ^IEncodedData;

Class Extensions; // Extensions Class
GUID={7C92E131-C1DC-4CA1-B02C-F513A08B41ED};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:variant): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;

Class ExtendedProperty; // ExtendedProperty Class
GUID={9E7EA907-5810-4FCA-B817-CD0BBA8496FC};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get PropID: CAPICOM_PROPID;
  property-put PropID(CAPICOM_PROPID);
  property-get Value(EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  property-put Value(EncodingType:CAPICOM_ENCODING_TYPE; BSTR);

Class ExtendedProperties; // ExtendedProperties Class
GUID={90E7143D-1A07-438D-8F85-3DBB0B73D314};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Item(Index:I4): variant;
  property-get Count: I4;
  property-get _NewEnum: IUnknown;
  function Add(pVal:^IExtendedProperty);
  function Remove(PropID:CAPICOM_PROPID);

Class Template; // Template Class
GUID={61F0D2BD-373E-4F3C-962E-59B7C42C1B22};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get IsPresent: bool;
  property-get IsCritical: bool;
  property-get Name: BSTR;
  property-get OID: ^IOID;
  property-get MajorVersion: I4;
  property-get MinorVersion: I4;

Class PublicKey; // PublicKey Class
GUID={301FC658-4055-4D76-9703-AA38E6D7236A};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Algorithm: ^IOID;
  property-get Length: I4;
  property-get EncodedKey: ^IEncodedData;
  property-get EncodedParameters: ^IEncodedData;

Class PrivateKey; // PrivateKey Class
GUID={03ACC284-B757-4B8F-9951-86E600D2CD06};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get ContainerName: BSTR;
  property-get UniqueContainerName: BSTR;
  property-get ProviderName: BSTR;
  property-get ProviderType: CAPICOM_PROV_TYPE;
  property-get KeySpec: CAPICOM_KEY_SPEC;
  function IsAccessible: bool;
  function IsProtected: bool;
  function IsExportable: bool;
  function IsRemovable: bool;
  function IsMachineKeyset: bool;
  function IsHardwareDevice: bool;
  function Open(ContainerName:BSTR; ProviderName:BSTR; ProviderType:CAPICOM_PROV_TYPE; KeySpec:CAPICOM_KEY_SPEC; StoreLocation:CAPICOM_STORE_LOCATION; bCheckExistence:bool);
  function Delete;
  function _GetKeyProvInfo(out pKeyProvInfo:^^_CRYPT_KEY_PROV_INFO): HResult;
  function _GetKeyContext(out pKeyContext:^^_CERT_KEY_CONTEXT): HResult;

Interface ICPrivateKey; // ICPrivateKey Interface
GUID={50F241B7-A8F2-4E0A-B982-4BD7DF0CCF3C};
  function _GetKeyProvInfo(out pKeyProvInfo:^^_CRYPT_KEY_PROV_INFO): HResult;
  function _GetKeyContext(out pKeyContext:^^_CERT_KEY_CONTEXT): HResult;

Record _CRYPT_KEY_PROV_INFO;
  pwszContainerName: LPWSTR;
  pwszProvName: LPWSTR;
  dwProvType: UI4;
  dwFlags: UI4;
  cProvParam: UI4;
  rgProvParam: ^_CRYPT_KEY_PROV_PARAM;
  dwKeySpec: UI4;

Record _CRYPT_KEY_PROV_PARAM;
  dwParam: UI4;
  pbData: ^UI1;
  cbData: UI4;
  dwFlags: UI4;

Record _CERT_KEY_CONTEXT;
  cbSize: UI4;
  __MIDL____MIDL_itf_capicom_0001_00640106: __MIDL___MIDL_itf_capicom_0001_0064_0024;
  dwKeySpec: UI4;

Union __MIDL___MIDL_itf_capicom_0001_0064_0024;
  hCryptProv: UI4;
  hNCryptKey: UI4;

Class SignedCode; // SignedCode Class
GUID={8C3E4934-9FA4-4693-9253-A29A05F99186};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get FileName: BSTR;
  property-put FileName(BSTR);
  property-get Description: BSTR;
  property-put Description(BSTR);
  property-get DescriptionURL: BSTR;
  property-put DescriptionURL(BSTR);
  property-get Signer: ^ISigner2;
  property-get TimeStamper: ^ISigner2;
  property-get Certificates: ^ICertificates2;
  function Sign(pISigner2:^ISigner2);
  function Timestamp(URL:BSTR);
  function Verify(bUIAllowed:bool);

Dispatch ISignedCode; // ISignedCode Interface
GUID={84FBCB95-5600-404C-9187-AC25B4CD6E94};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get FileName: BSTR;
  property-put FileName(BSTR);
  property-get Description: BSTR;
  property-put Description(BSTR);
  property-get DescriptionURL: BSTR;
  property-put DescriptionURL(BSTR);
  property-get Signer: ^ISigner2;
  property-get TimeStamper: ^ISigner2;
  property-get Certificates: ^ICertificates2;
  function Sign(pISigner2:^ISigner2);
  function Timestamp(URL:BSTR);
  function Verify(bUIAllowed:bool);

Class HashedData; // HashedData Class
GUID={CE32ABF6-475D-41F6-BF82-D27F03E3D38B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Value: BSTR;
  property-get Algorithm: CAPICOM_HASH_ALGORITHM;
  property-put Algorithm(CAPICOM_HASH_ALGORITHM);
  function Hash(newVal:BSTR);

Dispatch IHashedData; // IHashedData Interface
GUID={9F7F23E8-06F4-42E8-B965-5CBD044BF27F};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  property-get Value: BSTR;
  property-get Algorithm: CAPICOM_HASH_ALGORITHM;
  property-put Algorithm(CAPICOM_HASH_ALGORITHM);
  function Hash(newVal:BSTR);

Class Utilities; // Utilities Class
GUID={22A85CE1-F011-4231-B9E4-7E7A0438F71B};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function GetRandom(Length:I4; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Base64Encode(SrcString:BSTR): BSTR;
  function Base64Decode(EncodedString:BSTR): BSTR;
  function BinaryToHex(BinaryString:BSTR): BSTR;
  function HexToBinary(HexString:BSTR): BSTR;
  function BinaryStringToByteArray(BinaryString:BSTR): variant;
  function ByteArrayToBinaryString(varByteArray:variant): BSTR;
  function LocalTimeToUTCTime(LocalTime:date): date;
  function UTCTimeToLocalTime(UTCTime:date): date;

Dispatch IUtilities; // IUtilities Interface
GUID={EB166CF6-2AE6-44DA-BD96-0C1635D183FE};
  function QueryInterface(riid:^GUID; out ppvObj:^^void);
  function AddRef: UI4;
  function Release: UI4;
  function GetTypeInfoCount(out pctinfo:^UINT);
  function GetTypeInfo(itinfo:UINT; lcid:UI4; out pptinfo:^^void);
  function GetIDsOfNames(riid:^GUID; rgszNames:^^I1; cNames:UINT; lcid:UI4; out rgdispid:^I4);
  function Invoke(dispidMember:I4; riid:^GUID; lcid:UI4; wFlags:UI2; pdispparams:^DISPPARAMS; out pvarResult:^variant; out pexcepinfo:^EXCEPINFO; out puArgErr:^UINT);
  function GetRandom(Length:I4; EncodingType:CAPICOM_ENCODING_TYPE): BSTR;
  function Base64Encode(SrcString:BSTR): BSTR;
  function Base64Decode(EncodedString:BSTR): BSTR;
  function BinaryToHex(BinaryString:BSTR): BSTR;
  function HexToBinary(HexString:BSTR): BSTR;
  function BinaryStringToByteArray(BinaryString:BSTR): variant;
  function ByteArrayToBinaryString(varByteArray:variant): BSTR;
  function LocalTimeToUTCTime(LocalTime:date): date;
  function UTCTimeToLocalTime(UTCTime:date): date;

原创粉丝点击