暗号化関数
暗号化機能は、使用法に応じて次のように分類されます。
- CryptXML 関数
- 署名者関数
- 基本暗号化関数
- 証明書と証明書のMicrosoft Store関数
- MakeCert 関数
- 証明書検証関数
- メッセージ関数
- 補助関数
- 証明書サービスのBackupと復元の機能
- コールバック関数
- カタログ定義関数
- カタログ関数
- WinTrust Functions
- オブジェクト ロケーター関数
CryptXML 関数
暗号化 XML 関数は、XML 形式のデータを使用してデジタル署名を作成および表す API を提供します。 XML 形式のシグネチャの詳細については、XML-Signature構文と処理の仕様 https://go.microsoft.com/fwlink/p/?linkid=139649に関するページを参照してください。
機能 | 説明 |
---|---|
A_SHAFinal | MD5Update 関数によって入力されたデータの最終的なハッシュを計算します。 |
A_SHAInit | データ ストリームのハッシュを開始します。 |
A_SHAUpdate | 指定したハッシュ オブジェクトにデータを追加します。 |
CryptXmlCreateReference | XML 署名への参照を作成します。 |
CryptXmlAddObject | エンコード用に開かれたドキュメント コンテキストの Signature に Object 要素を追加します。 |
CryptXmlClose | 暗号化 XML オブジェクト ハンドルを閉じます。 |
CryptXmlDigestReference | 解決された参照をダイジェストするためにアプリケーションによって使用されます。 この関数は、ダイジェストを更新する前に変換を適用します。 |
CryptXmlDllCloseDigest | CryptXmlDllCreateDigest 関数によって割り当てられたCRYPT_XML_DIGESTを解放します。 |
CryptXmlDllCreateDigest | 指定したメソッドのダイジェスト オブジェクトを作成します。 |
CryptXmlDllCreateKey | KeyValue 要素を解析し、暗号化 API: 次世代 (CNG) BCrypt キー ハンドルを作成して署名を確認します。 |
CryptXmlDllDigestData | ダイジェストにデータを配置します。 |
CryptXmlDllEncodeAlgorithm | 既定のパラメーターを使用してアジャイル アルゴリズムの SignatureMethod 要素または DigestMethod 要素をエンコードします。 |
CryptXmlDllEncodeKeyValue | KeyValue 要素をエンコードします。 |
CryptXmlDllFinalizeDigest | ダイジェスト値を取得します。 |
CryptXmlDllGetAlgorithmInfo | XML アルゴリズムをデコードし、アルゴリズムに関する情報を返します。 |
CryptXmlDllGetInterface | 指定したアルゴリズムの暗号化拡張機能関数へのポインターを取得します。 |
CryptXmlDllSignData | データに署名します。 |
CryptXmlDllVerifySignature | 署名を検証します。 |
CryptXmlEncode | 指定された XML ライター コールバック関数を使用して署名データをエンコードします。 |
CryptXmlGetAlgorithmInfo | CRYPT_XML_ALGORITHM構造体をデコードし、アルゴリズムに関する情報を返します。 |
CryptXmlGetDocContext | 指定されたハンドルで指定されたドキュメント コンテキストを返します。 |
CryptXmlGetReference | 指定されたハンドルで指定された Reference 要素を返します。 |
CryptXmlGetSignature | XML Signature 要素を返します。 |
CryptXmlGetStatus | 指定したハンドルで指定されたオブジェクトに関する状態情報を含む CRYPT_XML_STATUS 構造体を返します。 |
CryptXmlGetTransforms | 既定の変換チェーン エンジンに関する情報を返します。 |
CryptXmlImportPublicKey | 指定されたハンドルで指定された公開キーをインポートします。 |
CryptXmlOpenToEncode | エンコードする XML デジタル署名を開き、開かれた Signature 要素のハンドルを返します。 ハンドルは、1 つの CRYPT_XML_SIGNATURE 構造体を持つドキュメント コンテキストをカプセル化し、 CryptXmlClose 関数が呼び出されるまで開いたままです。 |
CryptXmlOpenToDecode | デコードする XML デジタル署名を開き、 CRYPT_XML_SIGNATURE 構造体をカプセル化するドキュメント コンテキストのハンドルを返します。 ドキュメント コンテキストには、1 つ以上の Signature 要素を含めることができます。 |
CryptXmlSetHMACSecret | CryptXmlSign または CryptXmlVerify 関数を呼び出す前に、ハンドルに HMAC シークレットを設定します。 |
CryptXmlSign | SignedInfo 要素の暗号化署名を作成します。 |
CryptXmlVerifySignature | SignedInfo 要素の暗号化署名検証を実行します。 |
PFN_CRYPT_XML_WRITE_CALLBACK | 指定したデータ プロバイダーの変換を作成します。 |
PFN_CRYPT_XML_CREATE_TRANSFORM | 暗号化 XML データを書き込みます。 |
PFN_CRYPT_XML_DATA_PROVIDER_READ | 暗号化 XML データを読み取ります。 |
PFN_CRYPT_XML_DATA_PROVIDER_CLOSE | 暗号化 XML データ プロバイダーを解放します。 |
PFN_CRYPT_XML_ENUM_ALG_INFO | 定義済みおよび登録済 みのCRYPT_XML_ALGORITHM_INFO エントリを列挙します。 |
署名者関数
データに署名およびタイム スタンプを行う関数を提供します。
機能 | 説明 |
---|---|
SignerFreeSignerContext | SignerSignEx 関数の以前の呼び出しによって割り当てられたSIGNER_CONTEXT構造体を解放します。 |
SignError | GetLastError 関数を呼び出し、戻りコードを HRESULT に変換します。 |
SignerSign | 指定したファイルに署名します。 |
SignerSignEx | 指定したファイルに署名し、署名されたデータへのポインターを返します。 |
SignerSignEx2 | 指定したファイルに署名とタイムスタンプを付け、複数の入れ子になった署名を許可します。 |
SignerTimeStamp | 指定した件名にタイム スタンプを設定します。 この機能では、Authenticode のタイム スタンプがサポートされます。 X.509 公開キー 基盤 (RFC 3161) のタイム スタンプを実行するには、 SignerTimeStampEx2 関数を使用します。 |
SignerTimeStampEx | 指定したサブジェクトにタイム スタンプを設定し、必要に応じて BLOB へのポインターを含むSIGNER_CONTEXT構造体へのポインターを返します。 この機能では、Authenticode のタイム スタンプがサポートされます。 X.509 公開キー 基盤 (RFC 3161) のタイム スタンプを実行するには、 SignerTimeStampEx2 関数を使用します。 |
SignerTimeStampEx2 | 指定したサブジェクトにタイム スタンプを設定し、必要に応じて BLOB へのポインターを含むSIGNER_CONTEXT構造体へのポインターを返します。 この関数は、X.509 公開キー 基盤、RFC 3161 準拠のタイム スタンプを実行するために使用できます。 |
SignerTimeStampEx3 | 指定した件名にタイム スタンプを設定し、複数の署名にタイム スタンプを設定できます。 |
基本暗号化関数
基本暗号化機能は、暗号化アプリケーションを開発するための最も柔軟な手段を提供します。 暗号化サービス プロバイダー (CSP) との通信はすべて、これらの機能を介して行われます。
CSP は、すべての暗号化操作を実行する独立したモジュールです。 暗号化機能を使用するアプリケーションごとに、少なくとも 1 つの CSP が必要です。 1 つのアプリケーションで複数の CSP を使用する場合があります。
複数の CSP を使用する場合は、CryptoAPI 暗号化関数呼び出しで使用する CSP を指定できます。 1 つの CSP である Microsoft Base Cryptographic Provider が CryptoAPI にバンドルされています。 この CSP は、他の CSP が指定されていない場合、CryptoAPI 関数の多くで既定のプロバイダーとして使用されます。
各 CSP は、CryptoAPI に提供される暗号化サポートの異なる実装を提供します。 より強力な暗号アルゴリズムを提供するものもあります。その他には、 スマート カードなどのハードウェア コンポーネントが含まれています。 さらに、一部の CSP は、ユーザーの署名秘密キーを使用してデジタル署名を実行する場合など、ユーザーと直接通信することがあります。
基本暗号化関数は、次の広範なグループに含まれています。
- サービス プロバイダー関数
- キー生成関数とExchange関数
- オブジェクトエンコードおよびデコード関数
- データ暗号化および暗号化解除関数
- ハッシュ関数とデジタル署名関数
サービス プロバイダー関数
アプリケーションでは、次のサービス関数を使用して 、暗号化サービス プロバイダー (CSP) に接続および切断します。
機能 | 説明 |
---|---|
CryptAcquireContext | [!重要] 特定の CSP 内の現在のユーザーの キー コンテナー へのハンドルを取得します。 |
CryptContextAddRef | [!重要] HCRYPTPROV ハンドルの参照カウントをインクリメントします。 |
CryptEnumProviders | [!重要] コンピューター上のプロバイダーを列挙します。 |
CryptEnumProviderTypes | [!重要] コンピューターでサポートされているプロバイダーの種類を列挙します。 |
CryptGetDefaultProvider | [!重要] 現在のユーザーまたは指定したプロバイダーの種類のコンピューターの既定の CSP を決定します。 |
CryptGetProvParam | [!重要] CSP の操作を制御するパラメーターを取得します。 |
CryptInstallDefaultContext | [!重要] 以前に取得した HCRYPTPROV コンテキストを既定のコンテキストとして使用するようにインストールします。 |
CryptReleaseContext | [!重要] CryptAcquireContext 関数によって取得されたハンドルを解放します。 |
CryptSetProvider と CryptSetProviderEx | [!重要] 特定の CSP の種類のユーザーの既定の CSP を指定します。 |
CryptSetProvParam | [!重要] CSP の属性を指定します。 |
CryptUninstallDefaultContext | [!重要] CryptInstallDefaultContext によって以前にインストールされた既定のコンテキストを削除します。 |
FreeCryptProvFromCertEx | 暗号化サービス プロバイダー (CSP) または Cryptography API: Next Generation (CNG) キーのいずれかにハンドルを解放します。 |
キー生成関数とExchange関数
キー生成および交換関数は、他のユーザーと キーを交換 し、 暗号化キーを作成、構成、破棄します。
機能 | 説明 |
---|---|
CryptDeriveKey | [!重要] パスワードから派生したキーを作成します。 |
CryptDestroyKey | [!重要] キーを破棄します。 |
CryptDuplicateKey | [!重要] キーの 状態 を含め、キーの正確なコピーを作成します。 |
CryptExportKey | [!重要] CSP からアプリケーションのメモリ空間内の キー BLOB にキー を転送します。 |
CryptGenKey | [!重要] ランダム なキーを作成します。 |
CryptGenRandom | [!重要] ランダム なデータを生成します。 |
CryptGetKeyParam | [!重要] キーのパラメーターを取得します。 |
CryptGetUserKey | [!重要] キー交換キーまたは署名キーへのハンドルを取得します。 |
CryptImportKey | [!重要] キー BLOB から CSP にキーを転送します。 |
CryptSetKeyParam | [!重要] キーのパラメーターを指定します。 |
オブジェクトエンコードおよびデコード関数
これらは、一般化されたエンコードおよびデコード関数です。 証明書、証明書失効リスト (CRL)、証明書要求、および証明書拡張機能をエンコードおよびデコードするために使用されます。
機能 | 説明 |
---|---|
CryptDecodeObject | lpszStructType 型の構造体をデコードします。 |
CryptDecodeObjectEx | lpszStructType 型の構造体をデコードします。 CryptDecodeObjectEx では 、ワンパス メモリ割り当てオプションがサポートされています。 |
CryptEncodeObject | lpszStructType 型の構造体をエンコードします。 |
CryptEncodeObjectEx | lpszStructType 型の構造体をエンコードします。 CryptEncodeObjectEx では 、ワンパス メモリ割り当てオプションがサポートされています。 |
データ暗号化および暗号化解除関数
次の関数は、暗号化と暗号化解除の操作をサポートしています。 CryptEncrypt と CryptDecrypt では、呼び出される前に 暗号化キー が必要です。 これを行うには、 CryptGenKey、 CryptDeriveKey、または CryptImportKey 関数を 使用します。 暗号化アルゴリズムは、キーの作成時に指定されます。 CryptSetKeyParam では 、追加の暗号化パラメーターを設定できます。
機能 | 説明 |
---|---|
CryptDecrypt | [!重要] 指定した暗号化キーを使用して 、暗号テキスト のセクションを復号化します。 |
CryptEncrypt | [!重要] 指定した暗号化キーを使用して 、プレーンテキスト のセクションを暗号化します。 |
CryptProtectData | DATA_BLOB構造のデータに対して暗号化を実行します。 |
CryptProtectMemory | 機密情報を保護するためにメモリを暗号化します。 |
CryptUnprotectData | DATA_BLOB内のデータの復号化と整合性チェックを実行します。 |
CryptUnprotectMemory | CryptProtectMemory を使用して暗号化されたメモリを復号化します。 |
ハッシュ関数とデジタル署名関数
これらの関数は、データの ハッシュを 計算し、 デジタル署名を作成して検証します。 ハッシュは、メッセージ ダイジェストとも呼ばれます。
機能 | 説明 |
---|---|
CryptCreateHash | [!重要] 空のハッシュ オブジェクトを作成します。 |
CryptDestroyHash | [!重要] ハッシュ オブジェクトを破棄します。 |
CryptDuplicateHash | ハッシュ オブジェクトを複製します。 |
CryptGetHashParam | ハッシュ オブジェクト パラメーターを取得します。 |
CryptHashData | [!重要] データのブロックをハッシュし、指定したハッシュ オブジェクトに追加します。 |
CryptHashSessionKey | [!重要] セッション キーをハッシュし、指定したハッシュ オブジェクトに追加します。 |
CryptSetHashParam | [!重要] ハッシュ オブジェクト パラメーターを設定します。 |
CryptSignHash | [!重要] 指定したハッシュ オブジェクトに署名します。 |
CryptUIWizDigitalSign | ドキュメントまたは BLOB にデジタル署名するウィザードを表示 します。 |
CryptUIWizFreeDigitalSignContext | CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT構造体へのポインターを解放します。 |
CryptVerifySignature | [!重要] ハッシュ オブジェクトへのハンドルを指定して、デジタル署名を検証します。 |
PFNCFILTERPROC | CryptUIWizDigitalSign 関数によって表示されるデジタル署名ウィザードに表示される証明書をフィルター処理します。 |
証明書と証明書のMicrosoft Store関数
証明書ストア関数と証明書ストア関数は、 証明書、 証明書失効リスト (CRL)、証明書 信頼リスト (CCTL) の使用、ストレージ、および取得を管理します。 これらの関数は、次のグループに分かれています。
- 証明書Microsoft Store関数
- 証明書と証明書のMicrosoft Storeメンテナンス機能
- 証明書関数
- 証明書失効リスト関数
- 証明書信頼リスト関数
- 拡張プロパティ関数
- MakeCert 関数
証明書Microsoft Store関数
ユーザー サイトでは、時間の経過と伴って多くの証明書を収集できます。 通常、サイトには、サイトのユーザー用の証明書と、ユーザーが通信する個人やエンティティを記述するその他の証明書があります。 エンティティごとに、複数の証明書を使用できます。 個々の証明書ごとに、信頼された ルート証明書への証跡を提供する証明書を検証するチェーンが存在する必要があります。 証明書ストア とその関連関数は、証明書に格納されている情報を格納、取得、列挙、検証、および使用するための機能を提供します。
機能 | 説明 |
---|---|
CertAddStoreToCollection | 兄弟証明書ストアをコレクション証明書ストアに追加します。 |
CertCloseStore | 証明書ストア ハンドルを閉じます。 |
CertControlStore | キャッシュされたストアの内容とストレージに永続化されるストアの内容に違いがある場合に、アプリケーションに通知を受け取ることができます。 また、必要に応じてキャッシュされたストアのデランチロン化を提供し、キャッシュされたストアで行われた変更を永続化されたストレージにコミットする手段も提供します。 |
CertDuplicateStore | 参照カウントをインクリメントして、ストア ハンドルを複製します。 |
CertEnumPhysicalStore | 指定したシステム ストアの物理ストアを列挙します。 |
CertEnumSystemStore | 使用可能なすべてのシステム ストアを列挙します。 |
CertEnumSystemStoreLocation | 使用可能なシステム ストアを持つすべての場所を列挙します。 |
CertGetStoreProperty | ストア プロパティを取得します。 |
CertOpenStore | 指定したストア プロバイダーの種類を使用して証明書ストアを開きます。 |
CertOpenSystemStore | サブシステム プロトコルに基づいてシステム証明書ストアを開きます。 |
CertRegisterPhysicalStore | レジストリ システム ストア コレクションに物理ストアを追加します。 |
CertRegisterSystemStore | システム ストアを登録します。 |
CertRemoveStoreFromCollection | コレクション ストアから兄弟証明書ストアを削除します。 |
CertSaveStore | 証明書ストアを保存します。 |
CertSetStoreProperty | ストア プロパティを設定します。 |
CertUnregisterPhysicalStore | 指定したシステム ストア コレクションから物理ストアを削除します。 |
CertUnregisterSystemStore | 指定したシステム ストアの登録を解除します。 |
CryptUIWizExport | 証明書、証明書信頼リスト (CTL)、証明書失効リスト (CRL)、または証明書ストアをエクスポートするウィザードを表示します。 |
CryptUIWizImport | 証明書、証明書信頼リスト (CTL)、証明書失効リスト (CRL)、または証明書ストアをインポートするウィザードを表示します。 |
証明書と証明書のMicrosoft Storeメンテナンス機能
CryptoAPI には、一連の一般的な証明書と証明書ストアのメンテナンス機能が用意されています。
機能 | 説明 |
---|---|
CertAddSerializedElementToStore | シリアル化された証明書または CRL 要素をストアに追加します。 |
CertCreateContext | エンコードされたバイトから指定されたコンテキストを作成します。 新しいコンテキストはストアに配置されません。 |
CertEnumSubjectInSortedCTL | 並べ替えられた CTL コンテキストで TrustedSubjects を列挙します。 |
CertFindSubjectInCTL | CTL で指定されたサブジェクトを検索します。 |
CertFindSubjectInSortedCTL | 並べ替えられた CTL で指定された件名を検索します。 |
OpenPersonalTrustDBDialog と OpenPersonalTrustDBDialogEx | [ 証明書 ] ダイアログ ボックスを表示します。 |
証明書関数
ほとんどの 証明書 関数には、CRL と CTL を 処理するための関連関数 があります。 関連する CRL および CTL 関数の詳細については、「証明書失効リスト関数」および「証明書信頼リスト関数」を参照してください。
機能 | 説明 |
---|---|
CertAddCertificateContextToStore | 証明書コンテキストを証明書ストアに追加します。 |
CertAddCertificateLinkToStore | 証明書ストア内のリンクを別のストアの証明書コンテキストに追加します。 |
CertAddEncodedCertificateToStore | エンコードされた証明書を証明書コンテキストに変換し、そのコンテキストを証明書ストアに追加します。 |
CertAddRefServerOcspResponse | HCERT_SERVER_OCSP_RESPONSE ハンドルの参照カウントをインクリメントします。 |
CertAddRefServerOcspResponseContext | CERT_SERVER_OCSP_RESPONSE_CONTEXT構造体の参照カウントをインクリメントします。 |
CertCloseServerOcspResponse | オンライン証明書状態プロトコル (OCSP) サーバー応答ハンドルを閉じます。 |
CertCreateCertificateContext | エンコードされた証明書から証明書コンテキストを作成します。 作成されたコンテキストは証明書ストアに格納されません。 |
CertCreateSelfSignCertificate | 自己署名証明書を作成する。 |
CertDeleteCertificateFromStore | 証明書ストアから証明書を削除します。 |
CertDuplicateCertificateContext | 参照カウントをインクリメントして、証明書コンテキストを複製します。 |
CertEnumCertificatesInStore | 証明書ストア内の証明書コンテキストを列挙します。 |
CertFindCertificateInStore | 検索条件を満たす証明書ストア内の最初の証明書コンテキストまたは次の証明書コンテキストを検索します。 |
CertFreeCertificateContext | 証明書コンテキストを解放します。 |
CertGetIssuerCertificateFromStore | 指定したサブジェクト証明書の最初または次の発行者の証明書ストアから証明書コンテキストを取得します。 |
CertGetServerOcspResponseContext | 指定したハンドルの非ブロッキングで有効な オンライン証明書状態プロトコル (OCSP) 応答コンテキストを取得します。 |
CertGetSubjectCertificateFromStore | 証明書ストアからサブジェクト証明書コンテキストを取得します。このコンテキストは、発行者とシリアル番号によって一意に識別されます。 |
CertGetValidUsages | 証明書の配列内のすべての証明書の有効な使用法の積集合で構成される使用法の配列を返します。 |
CertOpenServerOcspResponse | サーバー証明書チェーンに関連付けられている オンライン証明書状態プロトコル (OCSP) 応答へのハンドルを開きます。 |
CertRetrieveLogoOrBiometricInfo | szOID_LOGOTYPE_EXTまたはszOID_BIOMETRIC_EXT証明書拡張機能で指定されたロゴまたは生体認証情報の URL 取得を実行します。 |
CertSelectCertificate | ユーザーが特定の条件に一致する証明書のセットから証明書を選択できるようにするダイアログ ボックスを表示します。 |
CertSelectCertificateChains | 指定した選択条件に基づいて証明書チェーンを取得します。 |
CertSelectionGetSerializedBlob | CERT_SELECTUI_INPUT構造体からシリアル化された証明書 BLOB を取得するために使用されるヘルパー関数。 |
CertSerializeCertificateStoreElement | 証明書コンテキストのエンコードされた証明書とそのプロパティのエンコードされた表現をシリアル化します。 |
CertVerifySubjectCertificateContext | 発行者を使用して、サブジェクト証明書に対して有効な検証チェックを実行します。 |
CryptUIDlgCertMgr | ユーザーが証明書を管理できるようにするダイアログ ボックスを表示します。 |
CryptUIDlgSelectCertificate | ユーザーが証明書を選択できるようにするダイアログ ボックスを表示します。 |
CryptUIDlgSelectCertificateFromStore | 指定したストアから証明書を選択できるダイアログ ボックスを表示します。 |
CryptUIDlgViewCertificate | 指定した証明書を表示するダイアログ ボックスを表示します。 |
CryptUIDlgViewContext | 証明書、CRL、または CTL を表示します。 |
CryptUIDlgViewSignerInfo | 署名済みメッセージの署名者情報を含むダイアログ ボックスを表示します。 |
GetFriendlyNameOfCert | 証明書の表示名を取得します。 |
RKeyCloseKeyService | キー サービス ハンドルを閉じます。 |
RKeyOpenKeyService | リモート コンピューターでキー サービス ハンドルを開きます。 |
RKeyPFXInstall | リモート コンピューターに証明書をインストールします。 |
証明書失効リスト関数
これらの関数は、 証明書失効リスト (CRL) のストレージと取得を管理します。
機能 | 説明 |
---|---|
CertAddCRLContextToStore | 証明書ストアに CRL コンテキストを追加します。 |
CertAddCRLLinkToStore | ストア内のリンクを別のストアの CRL コンテキストに追加します。 |
CertAddEncodedCRLToStore | エンコードされた CRL を CRL コンテキストに変換し、そのコンテキストを証明書ストアに追加します。 |
CertCreateCRLContext | エンコードされた CRL から CRL コンテキストを作成します。 作成されたコンテキストは証明書ストアに格納されません。 |
CertDeleteCRLFromStore | 証明書ストアから CRL を削除します。 |
CertDuplicateCRLContext | 参照カウントをインクリメントして CRL コンテキストを複製します。 |
CertEnumCRLsInStore | ストア内の CRL コンテキストを列挙します。 |
CertFindCertificateInCRL | 指定した証明書の証明書失効リスト (CRL) を検索します。 |
CertFindCRLInStore | 特定の条件に一致する証明書ストア内の最初の CRL コンテキストまたは次の CRL コンテキストを検索します。 |
CertFreeCRLContext | CRL コンテキストを解放します。 |
CertGetCRLFromStore | 指定した発行者証明書の証明書ストアから最初または次の CRL コンテキストを取得します。 |
CertSerializeCRLStoreElement | CRL コンテキストのエンコードされた CRL とそのプロパティをシリアル化します。 |
証明書信頼リスト関数
これらの関数は、 証明書信頼リスト (CTL) のストレージと取得を管理します。
機能 | 説明 |
---|---|
CertAddCTLContextToStore | 証明書ストアに CTL コンテキストを追加します。 |
CertAddCTLLinkToStore | ストア内のリンクを別のストアの CRL コンテキストに追加します。 |
CertAddEncodedCTLToStore | エンコードされた CTL を CTL コンテキストに変換し、そのコンテキストを証明書ストアに追加します。 |
CertCreateCTLContext | エンコードされた証明書信頼リストから CTL コンテキストを作成します。 作成されたコンテキストは証明書ストアに格納されません。 |
CertDeleteCTLFromStore | 証明書ストアから CTL を削除します。 |
CertDuplicateCTLContext | 参照カウントをインクリメントして CTL コンテキストを複製します。 |
CertEnumCTLsInStore | 証明書ストア内の CTL コンテキストを列挙します。 |
CertFindCTLInStore | 特定の条件に一致する証明書ストア内の最初の CTL コンテキストまたは次の CTL コンテキストを検索します。 |
CertFreeCTLContext | CTL コンテキストを解放します。 |
CertModifyCertificatesToTrust | 特定の目的のために CTL 内の証明書のセットを変更します。 |
CertSerializeCTLStoreElement | CTL コンテキストのエンコードされた CTL とそのプロパティをシリアル化します。 |
拡張プロパティ関数
次の関数は、証明書、CRL、および CCTL の拡張プロパティで動作します。
機能 | 説明 |
---|---|
CertEnumCertificateContextProperties | 指定した証明書コンテキストのプロパティを列挙します。 |
CertEnumCRLContextProperties | 指定した CRL コンテキストのプロパティを列挙します。 |
CertEnumCTLContextProperties | 指定した CTL コンテキストのプロパティを列挙します。 |
CertGetCertificateContextProperty | 証明書のプロパティを取得します。 |
CertGetCRLContextProperty | CRL プロパティを取得します。 |
CertGetCTLContextProperty | CTL プロパティを取得します。 |
CertSetCertificateContextProperty | 証明書のプロパティを設定します。 |
CertSetCRLContextProperty | CRL プロパティを設定します。 |
CertSetCTLContextProperty | CTL プロパティを設定します。 |
MakeCert 関数
次の関数は 、MakeCert ツールをサポートしています。
機能 | 説明 |
---|---|
FreeCryptProvFromCert | 暗号化サービス プロバイダー (CSP) へのハンドルを解放し、必要に応じて GetCryptProvFromCert 関数によって作成された一時コンテナーを削除します。 |
GetCryptProvFromCert | CSP へのハンドルと証明書コンテキストのキー仕様を取得します。 |
PvkFreeCryptProv | CSP へのハンドルを解放し、必要に応じて PvkGetCryptProv 関数によって作成された一時コンテナーを削除します。 |
PvkGetCryptProv | 秘密キー ファイル名またはキー コンテナー名に基づいて CSP へのハンドルを取得します。 |
PvkPrivateKeyAcquireContextFromMemory | CSP に一時コンテナーを作成し、メモリからコンテナーに秘密キーを読み込みます。 |
PvkPrivateKeySave | 秘密キーとそれに対応する 公開キー を、指定したファイルに保存します。 |
SignError | GetLastError を呼び出し、戻りコードを HRESULT に変換します。 |
証明書検証関数
証明書は、 CCTL または証明書チェーンを使用して検証されます。 関数は、次の両方に対して提供されます。
- CCTL を使用した検証関数
- 証明書チェーン検証関数
CCTL を使用した検証関数
これらの関数は、検証プロセスで CCTL を使用します。 CCTL を操作するためのその他の関数については、証明書信頼リスト関数と拡張プロパティ関数を参照してください。
次の関数では、検証に直接 CCTL を使用します。
機能 | 説明 |
---|---|
CertVerifyCTLUsage | CTL の使用状況を確認します。 |
CryptMsgEncodeAndSignCTL | CTL をエンコードし、メッセージとして署名します。 |
CryptMsgGetAndVerifySigner | メッセージから CTL を取得して検証します。 |
CryptMsgSignCTL | CTL を含むメッセージに署名します。 |
証明書チェーン検証関数
証明書チェーンは、個々の証明書に関する信頼情報を提供するために構築されています。
関数名 | 説明 |
---|---|
CertCreateCertificateChainEngine | アプリケーションの既定以外の新しいチェーン エンジンを作成します。 |
CertCreateCTLEntryFromCertificateContextProperties | 証明書コンテキストのプロパティである属性を持つ CTL エントリを作成します。 |
CertDuplicateCertificateChain | チェーンの 参照カウント をインクリメントし、チェーンへのポインターを返すことで、証明書チェーンを複製します。 |
CertFindChainInStore | ストア内の最初の証明書チェーン コンテキストまたは次の証明書チェーン コンテキストを検索します。 |
CertFreeCertificateChain | 証明書チェーンの参照数を減らすことで、証明書チェーンを解放します。 |
CertFreeCertificateChainEngine | 既定以外の証明書チェーン エンジンを解放します。 |
CertFreeCertificateChainList | チェーン コンテキストへのポインターの配列を解放します。 |
CertGetCertificateChain | 終了証明書から始まり、可能な場合は信頼された ルート証明書に戻るチェーン コンテキストを構築します。 |
CertIsValidCRLForCertificate | CRL をチェックして、その証明書が失効した場合に特定の証明書が含まれるかどうかを判断します。 |
CertSetCertificateContextPropertiesFromCTLEntry | CTL エントリの属性を使用して、証明書コンテキストのプロパティを設定します。 |
CertVerifyCertificateChainPolicy | 証明書チェーンをチェックして、指定された有効性ポリシー条件に準拠するなど、その有効性を確認します。 |
メッセージ関数
CryptoAPI メッセージ関数は、低レベルのメッセージ関数と 簡略化されたメッセージ関数という 2 つの関数のグループで構成されます。
低レベルのメッセージ関数は、PKCS #7 メッセージを直接作成して操作します。 これらの関数は、受信した PKCS #7 データを送信およびデコードするために PKCS #7 データをエンコードします。 また、受信したメッセージの署名を復号化して検証します。 PKCS #7 標準メッセージと低レベルメッセージの概要については、 低レベルメッセージを参照してください。
簡略化されたメッセージ関数は、より高いレベルにあり、いくつかの低レベルのメッセージ関数と証明書関数を、特定の方法で特定のタスクを実行する単一の関数にラップします。 これらの関数により、タスクを実行するために必要な関数呼び出しの数が減り、CryptoAPI の使用が簡略化されます。 簡略化されたメッセージの概要については、「 簡略化されたメッセージ」を参照してください。
- 低レベルのメッセージ関数
- 簡略化されたメッセージ関数
低レベルのメッセージ関数
低レベルのメッセージ関数は、送信のためにデータをエンコードし、受信した PKCS #7 メッセージをデコードするために必要な機能を提供します。 また、受信したメッセージの署名を復号化して検証する機能も提供されます。 ほとんどのアプリケーションでこれらの低レベルのメッセージ関数を使用することはお勧めしません。 ほとんどのアプリケーションでは、いくつかの低レベルのメッセージ関数を 1 つの関数呼び出しにラップする簡略化されたメッセージ関数を使用することをお勧めします。
機能 | 説明 |
---|---|
CryptMsgCalculateEncodedLength | エンコードされた暗号化メッセージの長さを計算します。 |
CryptMsgClose | 暗号化メッセージのハンドルを閉じます。 |
CryptMsgControl | エンコードまたはデコードされた暗号化メッセージの最終的な CryptMsgUpdate の後に特別な制御関数を実行します。 |
CryptMsgCountersign | メッセージ内の既存の署名に対して署名します。 |
CryptMsgCountersignEncoded | 既に存在する署名 (PKCS #7 で定義されているエンコードされた SignerInfo) に署名します。 |
CryptMsgDuplicate | 参照カウントをインクリメントして、暗号化メッセージ ハンドルを複製します。 参照カウントは、メッセージの有効期間を追跡します。 |
CryptMsgGetParam | 暗号化メッセージのエンコードまたはデコード後にパラメーターを取得します。 |
CryptMsgOpenToDecode | デコード用の暗号化メッセージを開きます。 |
CryptMsgOpenToEncode | エンコード用の暗号化メッセージを開きます。 |
CryptMsgUpdate | 暗号化メッセージの内容を更新します。 |
CryptMsgVerifyCountersignatureEncoded | SignerInfo 構造体 (PKCS #7 で定義) の観点から 、カウンター署名 を検証します。 |
CryptMsgVerifyCountersignatureEncodedEx | pbSignerInfoCounterSignature パラメーターに、pbSignerInfo パラメーター構造の encryptedDigest フィールドの暗号化されたハッシュが含まれていることを確認します。 |
簡略化されたメッセージ関数
簡略化されたメッセージ関数は 、低レベルのメッセージ関数を 1 つの関数にラップして、指定されたタスクを実行します。
機能 | 説明 |
---|---|
CryptDecodeMessage | 暗号化メッセージをデコードします。 |
CryptDecryptAndVerifyMessageSignature | 指定したメッセージの暗号化を解除し、署名者を検証します。 |
CryptDecryptMessage | 指定したメッセージの暗号化を解除します。 |
CryptEncryptMessage | 受信者または受信者のメッセージを暗号化します。 |
CryptGetMessageCertificates | メッセージの証明書と CRL を含む証明書 ストア を返 します。 |
CryptGetMessageSignerCount | 署名されたメッセージ内の署名者の数を返します。 |
CryptHashMessage | メッセージのハッシュを作成します。 |
CryptSignAndEncryptMessage | メッセージに署名し、受信者または受信者に対して暗号化します。 |
CryptSignMessageWithKey | パラメーターで指定された CSP の秘密キーを使用してメッセージを関数に署名します。 |
CryptSignMessage | メッセージに署名します。 |
CryptVerifyDetachedMessageHash | デタッチされたハッシュを含むハッシュされたメッセージを検証します。 |
CryptVerifyDetachedMessageSignature | デタッチされた署名または署名を含む署名付きメッセージを検証します。 |
CryptVerifyMessageHash | ハッシュされたメッセージを検証します。 |
CryptVerifyMessageSignature | 署名されたメッセージを確認します。 |
CryptVerifyMessageSignatureWithKey | 指定した公開キー情報を使用して、署名されたメッセージの署名を確認します。 |
補助関数
補助関数は次のようにグループ化されます。
- データ管理関数
- データ変換関数
- 拡張キー使用法関数
- キー識別子関数
- OID サポート関数
- リモート オブジェクト取得関数
- PFX 関数
データ管理関数
次の CryptoAPI 関数は、データと証明書を管理します。
機能 | 説明 |
---|---|
CertCompareCertificate | 2 つの証明書を比較して、それらが同一であるかどうかを判断します。 |
CertCompareCertificateName | 2 つの証明書名を比較して、それらが同一であるかどうかを判断します。 |
CertCompareIntegerBlob | 2 つの整数 BLOB を比較します。 |
CertComparePublicKeyInfo | 2 つの 公開キー を比較して、それらが同一であるかどうかを判断します。 |
CertFindAttribute | オブジェクト識別子 (OID) で識別される最初の属性を検索します。 |
CertFindExtension | OID で識別される最初の拡張機能を検索します。 |
CertFindRDNAttr | OID によって識別される最初の RDN 属性を 、相対識別名の名前リストで検索します。 |
CertGetIntendedKeyUsage | 証明書から目的のキー使用量バイトを取得します。 |
CertGetPublicKeyLength | 公開キー BLOB から公開/秘密キーのビット長を取得します。 |
CertIsRDNAttrsInCertificateName | 証明書名の属性と指定したCERT_RDNを比較して、すべての属性がそこに含まれているかどうかを判断します。 |
CertIsStrongHashToSign | 指定したハッシュ アルゴリズムと署名証明書の公開キーを使用して強力な署名を実行できるかどうかを判断します。 |
CertVerifyCRLRevocation | サブジェクト証明書が証明書 失効リスト (CRL) に含まれていないことを確認します。 |
CertVerifyCRLTimeValidity | CRL の時間の有効性を確認します。 |
CertVerifyRevocation | サブジェクト証明書が CRL にないことを確認します。 |
CertVerifyTimeValidity | 証明書の時間の有効性を確認します。 |
CertVerifyValidityNesting | サブジェクトの時刻の有効性が発行者の時間の有効性内に入れ子であることを確認します。 |
CryptExportPKCS8 | この関数は CryptExportPKCS8Ex 関数に置き換えられます。 |
CryptExportPKCS8Ex | 秘密キーを PKCS #8 形式でエクスポートします。 |
CryptExportPublicKeyInfo | プロバイダーの対応する秘密キーに関連付けられている公開キー情報をエクスポートします。 |
CryptExportPublicKeyInfoEx | プロバイダーの対応する秘密キーに関連付けられている公開キー情報をエクスポートします。 この関数は、ユーザーが公開キー アルゴリズムを指定できるため、CSP によって提供される既定値をオーバーライドするという点で、 CryptExportPublicKeyInfo とは異なります。 |
CryptExportPublicKeyInfoFromBCryptKeyHandle | プロバイダーの対応する秘密キーに関連付けられている公開キー情報をエクスポートします。 |
CryptFindCertificateKeyProvInfo | 暗号化プロバイダーとその キー コンテナー を列挙して、証明書の公開キーに対応する秘密キーを検索します。 |
CryptFindLocalizedName | たとえば、指定した名前のローカライズされた名前を検索し、ルート システムのストア名のローカライズされた名前を検索します。 |
CryptHashCertificate | [!重要] エンコードされたコンテンツをハッシュします。 |
CryptHashCertificate2 | Cryptography API: Next Generation (CNG) ハッシュ プロバイダーを使用して、データのブロックをハッシュします。 |
CryptHashPublicKeyInfo | [!重要] エンコードされた公開キー情報のハッシュを計算します。 |
CryptHashToBeSigned | [!重要] エンコードされた署名済みコンテンツ (CERT_SIGNED_CONTENT_INFO) 内の "署名対象" 情報のハッシュを計算します。 |
CryptImportPKCS8 | [!重要] PKCS #8 形式の 秘密キー を 暗号化サービス プロバイダー (CSP) にインポートします。 |
CryptImportPublicKeyInfo | [!重要] 公開キー情報をプロバイダーに変換してインポートし、公開キーのハンドルを返します。 |
CryptImportPublicKeyInfoEx | [!重要] 公開キー情報をプロバイダーに変換してインポートし、公開キーのハンドルを返します。 既定値をオーバーライドするために使用できる追加のパラメーター ( CryptImportPublicKeyInfo で指定されているものに対して) は、CERT_PUBLIC_KEY_INFOを補完するために提供されます。 |
CryptImportPublicKeyInfoEx2 | 公開キーを CNG 非対称プロバイダーにインポートします。 |
CryptMemAlloc | バッファーのメモリを割り当てます。 このメモリは、割り当てられたバッファーを返すすべての Crypt32.lib 関数で使用されます。 |
CryptMemFree | CryptMemAlloc または CryptMemRealloc によって割り当てられたメモリを解放します。 |
CryptMemRealloc | バッファーに現在割り当てられているメモリを解放し、新しいバッファーにメモリを割り当てます。 |
CryptQueryObject | [!重要] BLOB またはファイルの内容に関する情報を取得します。 |
CryptSignAndEncodeCertificate | "署名する" 情報をエンコードし、このエンコードされた情報に署名し、結果として生成される署名済みのエンコードされた情報をエンコードします。 |
CryptSignCertificate | エンコードされた署名済みコンテンツ内の "署名する" 情報に署名します。 |
CryptSIPAddProvider | サブジェクト インターフェイス パッケージ (SIP) を追加します。 |
CryptSIPCreateIndirectData | 指定された SIP_SUBJECTINFO 構造体、ダイジェスト アルゴリズム、およびエンコード属性の ハッシュ を含む SIP_INDIRECT_DATA 構造体を返します。 ハッシュは、データへの間接的な参照として使用できます。 |
CryptSIPGetCaps | SIP の機能を取得します。 |
CryptSIPGetSignedDataMsg | ファイルから Authenticode 署名を取得します。 |
CryptSIPLoad | サブジェクト インターフェイス パッケージを実装し、適切なライブラリ エクスポート関数を SIP_DISPATCH_INFO 構造体に割り当てるダイナミック リンク ライブラリを読み込みます。 |
CryptSIPPutSignedDataMsg | Authenticode Signature をターゲット ファイルに格納します。 |
CryptSIPRemoveProvider | CryptSIPAddProvider 関数の前回の呼び出しによって追加された SIP を削除します。 |
CryptSIPRemoveSignedDataMsg | 指定した Authenticode 署名を削除します。 |
CryptSIPRetrieveSubjectGuid | 指定したファイル内のヘッダー情報に基づいて GUID を取得します。 |
CryptSIPRetrieveSubjectGuidForCatalogFile | 指定したファイルに関連付けられているサブジェクト GUID を取得します。 |
CryptSIPVerifyIndirectData | 指定されたサブジェクトに対して間接ハッシュデータを検証します。 |
CryptUpdateProtectedState | ユーザーの セキュリティ識別子 (SID) が変更された後、現在のユーザーのマスター キーを移行します。 |
CryptVerifyCertificateSignature | 公開キー情報を使用して、サブジェクト証明書または CRL の署名を確認します。 |
CryptVerifyCertificateSignatureEx | CryptVerifyCertificateSignature の拡張バージョン。 |
GetEncSChannel | 暗号化された Schannel DLL の内容をメモリに格納します。 |
pCryptSIPGetCaps | 機能を報告するために SIP によって実装されます。 |
データ変換関数
次の CryptoAPI 関数は、証明書構造のメンバーを異なる形式に変換します。
機能 | 説明 |
---|---|
CertAlgIdToOID | CryptoAPI アルゴリズム識別子 (ALG_ID) を 抽象構文表記 1 (ASN.1) オブジェクト識別子 (OID) 文字列に変換します。 |
CertGetNameString | 証明書からサブジェクト名または発行者名を取得し、null で終わる文字列に変換します。 |
CertNameToStr | 証明書名 BLOB を 0 で終わる文字列に変換します。 |
CertOIDToAlgId | ASN.1 オブジェクト識別子文字列を CSP アルゴリズム識別子に変換します。 |
CertRDNValueToStr | Name Value を null で終わる文字列に変換します。 |
CertStrToName | null で終わる X.500 文字列をエンコードされた証明書名に変換します。 |
CryptBinaryToString | バイナリ シーケンスを書式設定された文字列に変換します。 |
CryptFormatObject | エンコードされたデータを書式設定し、Unicode 文字列を返します。 |
CryptStringToBinary | 書式設定された文字列をバイナリ シーケンスに変換します。 |
拡張キー使用法関数
次の関数は、 拡張キー使用法 (EKU) 拡張機能と証明書の EKU 拡張プロパティを扱います。 EKU 拡張プロパティと拡張プロパティは、証明書の有効な使用を指定および制限します。 拡張機能は、証明書自体の一部です。 これらは証明書の発行者によって設定され、読み取り専用です。 証明書拡張プロパティは、アプリケーションで設定できる証明書に関連付けられている値です。
機能 | 説明 |
---|---|
CertAddEnhancedKeyUsageIdentifier | 証明書の EKU プロパティに使用状況識別子を追加します。 |
CertGetEnhancedKeyUsage | 証明書から、EKU 拡張機能またはプロパティに関する情報を取得します。 |
CertRemoveEnhancedKeyUsageIdentifier | 証明書の EKU 拡張プロパティから使用状況識別子を削除します。 |
CertSetEnhancedKeyUsage | 証明書の EKU プロパティを設定します。 |
キー識別子関数
キー識別子関数を使用すると、ユーザーはキー識別子またはそのプロパティを作成、設定、取得、または検索できます。
キー識別子は、 公開キーと秘密キーのペアの一意識別子です。 任意の一意識別子を指定できますが、通常はエンコードされた CERT_PUBLIC_KEY_INFO 構造体の 20 バイト SHA1 ハッシュです。 キー識別子は、証明書のCERT_KEY_IDENTIFIER_PROP_IDを使用して取得できます。 キー識別子を使用すると、その キー ペア を使用して、証明書を使用せずにメッセージを暗号化または復号化できます。
キー識別子は CRL または CTLに関連付けられません。
キー識別子は、証明書コンテキストと同じプロパティを持つことができます。 詳細については、「 CertCreateContext」を参照してください。
機能 | 説明 |
---|---|
CryptCreateKeyIdentifierFromCSP | [!重要] CSP の 公開キー BLOB からキー識別子を作成します。 |
CryptEnumKeyIdentifierProperties | キー識別子とそのプロパティを列挙します。 |
CryptGetKeyIdentifierProperty | [!重要] 指定したキー識別子から特定のプロパティを取得します。 |
CryptSetKeyIdentifierProperty | [!重要] 指定したキー識別子のプロパティを設定します。 |
OID サポート関数
これらの関数は 、オブジェクト識別子 (OID) のサポートを提供します。 これらの関数は、OID およびエンコード型固有の関数をインストール、登録、およびディスパッチします。
次の CryptoAPI 関数は、これらの OID サポート関数を使用します。
- CryptEncodeObject
- CryptEncodeObjectEx
- CryptDecodeObject
- CryptDecodeObjectEx
- CertVerifyRevocation
- CertOpenStore
このプロセスの概要については、「 CryptoAPI 機能の拡張」を参照してください。
次の関数は OID で動作します。
機能 | 説明 |
---|---|
CryptEnumOIDFunction | エンコードの種類、関数名、および OID で識別される登録済みの OID 関数を列挙します。 |
CryptEnumOIDInfo | グループによって識別された登録済みの OID 情報を列挙し、一致する pfnEnumOIDInfo を 呼び出します。 |
CryptFindOIDInfo | 指定したキーとグループを使用して OID 情報を検索します。 |
CryptFreeOIDFunctionAddress | CryptGetOIDFunctionAddress または CryptGetDefaultOIDFunctionAddress によってインクリメントされて返されたハンドル数を解放します。 |
CryptGetDefaultOIDDllList | 指定した関数セットとエンコード型の登録済みの既定の DLL エントリの一覧を取得します。 |
CryptGetDefaultOIDFunctionAddress | 最初または次にインストールされた既定の関数を取得するか、既定の関数を含む DLL を読み込みます。 |
CryptGetOIDFunctionAddress | インストールされている関数の一覧で、エンコードの種類と OID の一致を検索します。 一致するものが見つからない場合、レジストリは一致を検索します。 |
CryptGetOIDFunctionValue | 指定したエンコードの種類、関数名、OID、および値の名前の値を取得します。 |
CryptInitOIDFunctionSet | 指定された関数名で識別される OID 関数セットのハンドルを初期化して返します。 |
CryptInstallOIDFunctionAddress | 呼び出し可能な OID 関数アドレスのセットをインストールします。 |
CryptRegisterDefaultOIDFunction | 指定したエンコードの種類と関数名に対して呼び出される既定の関数を含む DLL を登録します。 |
CryptRegisterOIDFunction | 指定したエンコードの種類、関数名、および OID に対して呼び出される関数を含む DLL を登録します。 |
CryptRegisterOIDInfo | CRYPT_OID_INFO構造体で指定された OID 情報を登録し、レジストリに保持します。 |
CryptSetOIDFunctionValue | 指定したエンコードの種類、関数名、OID、および値の名前の値を設定します。 |
CryptUnregisterDefaultOIDFunction | 指定したエンコード型と関数名に対して呼び出される既定の関数を含む DLL の登録を削除します。 |
CryptUnregisterOIDFunction | 指定したエンコードの種類、関数名、および OID に対して呼び出される関数を含む DLL の登録を削除します。 |
CryptUnregisterOIDInfo | 指定した OID 情報の登録を削除します。 |
リモート オブジェクト取得関数
次の関数を使用すると、ユーザーは公開キー基盤 (PKI) オブジェクトを取得したり、証明書、CTL、または CRL の URL を取得したり、オブジェクトから URL を抽出したりすることができます。
機能 | 説明 |
---|---|
CryptGetObjectUrl | 証明書、CTL、または CRL からリモート オブジェクトの URL を取得します。 |
CryptRetrieveObjectByUrl | URL で指定された場所から PKI オブジェクトを取得します。 |
PFX 関数
以下の機能は、個人情報Exchange (PFX) 形式の BLOB をサポートします。
機能 | 説明 |
---|---|
PFXExportCertStore | 参照先の証明書からエクスポートすると、証明書と、その証明書に関連付けられている秘密キーが保存されます (使用可能な場合)。 |
PFXExportCertStoreEx | 参照先の証明書からエクスポートすると、証明書と、その証明書に関連付けられている秘密キーが保存されます (使用可能な場合)。 |
PFXImportCertStore | PFX BLOB をインポートし、証明書と関連付けられている秘密キーを含むストアのハンドルを返します。 |
PFXIsPFXBlob | BLOB の外部レイヤーを PFX パケットとしてデコードしようとします。 |
PFXVerifyPassword | BLOB の外部レイヤーを PFX パケットとしてデコードし、指定されたパスワードで復号化しようとします。 |
証明書サービスのBackupと復元の機能
証明書サービスには、Certificate Services データベースをバックアップおよび復元するための機能が含まれています。 これらの証明書サービスのバックアップと復元の機能は、Certadm.dllに含まれています。 Certificate Services に関連付けられている他の API 要素とは異なり、これらの関数は、クラス メソッドの呼び出しに使用できるオブジェクトにカプセル化されません。 代わりに、バックアップ API と復元 API は、最初に LoadLibrary を呼び出して Certadm.dll ライブラリをメモリに読み込み、 GetProcAddress を呼び出して関数のアドレスを決定することによって呼び出されます。 証明書サービスのバックアップと復元の関数の呼び出しが完了したら、 FreeLibrary を呼び出して、Certadm.dllリソースをメモリから解放します。
Note
Certadm.dllによって提供されるBackupおよび復元機能は、証明書サービスの秘密キーをバックアップまたは復元しません。 Certificate Services 秘密キーのバックアップについては、「証明書サービスの秘密キー のバックアップと復元」を参照してください。
バックアップと復元の機能を呼び出すには、バックアップと復元 の権限が必要です。 詳細については、「Backupと復元権限の設定」を参照してください。
Note
CoInitializeEx が証明書サービスのバックアップと復元 API の呼び出しに使用されたのと同じスレッドで以前に呼び出された場合、COINIT_APARTMENTTHREADED フラグは CoInitializeEx に渡されている必要があります。 つまり、同じスレッドを使用している場合、 スレッドが CoInitializeEx の呼び出しで COINIT_MULTITHREADED フラグで渡された場合、証明書サービスのバックアップと復元 API を呼び出すことはできません。
証明書サービス Backup API は Certbcli.h で定義されています。 ただし、プログラムを作成するときは、インクルード ファイルとして Certsrv.h を使用します。
次の API は、Certadm.dllによってエクスポートされます。
機能 | 説明 |
---|---|
CertSrvBackupClose | 開いているファイルを閉じます。 |
CertSrvBackupEnd | バックアップ セッションを終了します。 |
CertSrvBackupFree | バックアップ API と復元 API によって割り当てられたバッファーを解放します。 |
CertSrvBackupGetBackupLogs | バックアップする必要があるログ ファイルの一覧を返します。 |
CertSrvBackupGetDatabaseNames | バックアップする必要があるデータベース ファイルの一覧を返します。 |
CertSrvBackupGetDynamicFileList | 特定のバックアップ コンテキストに対してバックアップする必要がある証明書サービスの動的ファイル名の一覧を取得します。 |
CertSrvBackupOpenFile | バックアップの準備としてファイルを開きます。 |
CertSrvBackupPrepare | オンライン バックアップ用にデータベースを準備します。 |
CertSrvBackupRead | 開いているファイルの内容を読み取ります。 |
CertSrvBackupTruncateLogs | ログ ファイルを切り捨てます。 |
CertSrvIsServerOnline | 証明書サービス サーバーがオンライン (アクティブに実行) されているかどうかを判断します。 |
CertSrvRestoreEnd | 復元セッションを終了します。 |
CertSrvRestoreGetDatabaseLocations | データベースの場所を取得します (バックアップと復元の両方のシナリオで使用されます)。 |
CertSrvRestorePrepare | 復元セッションを開始します。 |
CertSrvRestoreRegister | 復元操作を登録します。 |
CertSrvRestoreRegisterComplete | 以前に登録した復元操作を完了します。 |
CertSrvRestoreRegisterThroughFile | 復元操作を登録します。 |
CertSrvServerControl | Certificate Services インスタンスに制御コマンドを送信します。 |
コールバック関数
このセクションのコールバック関数は、アプリケーション定義 の証明書ストア プロバイダーを登録またはインストールし、コールバック関数を介して関連する機能を提供するために使用されます。 コールバック関数はアプリケーションによって実装され、 CryptoAPI 関数によって呼び出されます。 コールバック関数を使用すると、CryptoAPI 関数がデータを操作する方法を制御できます。
コールバック関数 | vmmblue_2 |
---|---|
CertChainFindByIssuerCallback | 証明書チェーンに追加される可能性のある証明書をアプリケーションがフィルター処理できるようにするアプリケーション定義のコールバック関数。 |
CertDllOpenStoreProv | ストア プロバイダーのオープン関数を定義します。 |
CertEnumPhysicalStoreCallback | CertEnumPhysicalStore 関数によって、検出された各物理ストアに関する情報を書式設定および提示するために使用されるコールバック関数。 |
CertEnumSystemStoreCallback | CertEnumSystemStore 関数によって、検出された各物理ストアに関する情報を書式設定および表示するために使用されるコールバック関数。 |
CertEnumSystemStoreLocationCallback | CertEnumSystemStoreLocation 関数によって、検出された各物理ストアに関する情報を書式設定および表示するために使用されるコールバック関数。 |
CertStoreProvCloseCallback | オープン ストアの 参照カウント が 0 になったときの動作を決定します。 |
CertStoreProvControl | 使用中のキャッシュされたストアの内容と、ストレージに永続化されるそのストアの内容の間に違いがある場合に、アプリケーションに通知を受け取ることができます。 |
CertStoreProvDeleteCertCallback | 証明書ストアから証明書を削除する前に実行するアクションを決定します。 |
CertStoreProvDeleteCRLCallback | 証明書失効リスト (CRL) が証明書ストアから削除される前に実行するアクションを決定します。 |
CertStoreProvDeleteCTL | CTL を削除できるかどうかを判断します。 |
CertStoreProvFindCert | 指定した条件に一致するストア内の最初の証明書または次の証明書を検索します。 |
CertStoreProvFindCRL | 指定した条件に一致するストア内の最初の CRL または次の CRL を検索します。 |
CertStoreProvFindCTL | 指定した条件に一致するストア内の最初の CTL または次の CTL を検索します。 |
CertStoreProvFreeFindCert | 以前に見つかった証明書コンテキストを解放します。 |
CertStoreProvFreeFindCRL | 以前に見つかった CRL コンテキストを解放します。 |
CertStoreProvFreeFindCTL | 以前に見つかった CTL コンテキストを解放します。 |
CertStoreProvGetCertProperty | 証明書の指定したプロパティを取得します。 |
CertStoreProvGetCRLProperty | CRL の指定したプロパティを取得します。 |
CertStoreProvGetCTLProperty | CTL の指定したプロパティを取得します。 |
CertStoreProvReadCertCallback | 現在は使用されていませんが、将来の CSP にエクスポートされる可能性があります。 |
CertStoreProvReadCRLCallback | 現在は使用されていませんが、将来の CSP にエクスポートされる可能性があります。 |
CertStoreProvReadCTL | プロバイダーの CTL コンテキストのコピーを読み取り、存在する場合は新しい CTL コンテキストを作成します。 |
CertStoreProvSetCertPropertyCallback | CertSetCertificateContextProperty または CertGetCertificateContextProperty を呼び出す前に実行するアクションを決定します。 |
CertStoreProvSetCRLPropertyCallback | CertSetCRLContextProperty または CertGetCRLContextProperty を呼び出す前に実行するアクションを決定します。 |
CertStoreProvSetCTLProperty | プロパティを CTL に設定できるかどうかを決定します。 |
CertStoreProvWriteCertCallback | ストアに証明書を追加する前に実行するアクションを決定します。 |
CertStoreProvWriteCRLCallback | CRL をストアに追加する前に実行するアクションを決定します。 |
CertStoreProvWriteCTL | CTL をストアに追加できるかどうかを決定します。 |
CRYPT_ENUM_KEYID_PROP | CryptEnumKeyIdentifierProperties 関数によって使用されるコールバック関数。 |
CRYPT_ENUM_OID_FUNCTION | CryptEnumOIDFunction 関数によって使用されるコールバック関数。 |
CRYPT_ENUM_OID_INFO | CryptEnumOIDInfo 関数によって使用されるコールバック関数。 |
CryptGetSignerCertificateCallback | メッセージ署名者の証明書を取得して検証するために 、CRYPT_VERIFY_MESSAGE_PARA 構造体と共に使用されるコールバック関数。 |
PCRYPT_DECRYPT_PRIVATE_KEY_FUNC | CryptImportPKCS8 関数によって使用されるコールバック関数。 |
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC | CRYPT_ENCRYPTED_PRIVATE_KEY_INFO構造体の作成時に使用されるコールバック関数。 |
PCRYPT_RESOLVE_HCRYPTPROV_FUNC | CryptImportPKCS8 関数によって使用されるコールバック関数。 |
PFN_CDF_PARSE_ERROR_CALLBACK | カタログ定義ファイル (CDF) の解析中にカタログ定義関数エラーに対して呼び出されたユーザー定義関数。 |
PFN_CERT_CREATE_CONTEXT_SORT_FUNC | コンテキストが作成されるときに、並べ替えられた各コンテキスト エントリに対して呼び出されます。 |
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY | 既に復号化されたコンテンツ暗号化キー (CEK) をインポートするための CNG オブジェクト識別子 (OID) インストール可能な関数。 |
PFN_CMSG_CNG_IMPORT_KEY_AGREE | エンベロープされたメッセージのキー トランスポート受信者のコンテンツ暗号化キーをインポートします。 |
PFN_CMSG_CNG_IMPORT_KEY_TRANS | キートランスポート受信者、暗号化されたコンテンツ暗号化キー (CEK) のインポートと復号化のための CNG OID インストール可能な関数。 |
PFN_CMSG_EXPORT_KEY_AGREE | エンベロープ されたメッセージのキー アグリーメント受信者のコンテンツ暗号化キーを暗号化してエクスポートします。 |
PFN_CMSG_EXPORT_KEY_TRANS | エンベロープされたメッセージのキー トランスポート受信者のコンテンツ暗号化キーを暗号化およびエクスポートします。 |
PFN_CMSG_EXPORT_MAIL_LIST | エンベロープメッセージのメーリング リスト受信者のコンテンツ暗号化キーを暗号化およびエクスポートします。 |
PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY | エンベロープされたメッセージのコンテンツを暗号化するために使用される 対称キー を生成します。 |
PFN_CMSG_IMPORT_KEY_AGREE | エンベロープされたメッセージのキー トランスポート受信者のコンテンツ暗号化キーをインポートします。 |
PFN_CMSG_IMPORT_KEY_TRANS | エンベロープされたメッセージのキー トランスポート受信者のコンテンツ暗号化キーをインポートします。 |
PFN_CMSG_IMPORT_MAIL_LIST | エンベロープされたメッセージのキー トランスポート受信者のコンテンツ暗号化キーをインポートします。 |
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC | 公開キー BLOB をエクスポートしてエンコードするために CryptExportPublicKeyInfoEx によって呼び出されます。 |
PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC | ハッシュ アルゴリズム識別子と必要に応じてシグネチャ パラメーターをデコードして返すために呼び出されます。 |
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC | 計算されたハッシュに署名してエンコードするために呼び出されます。 |
PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC | エンコードされた署名を復号化し、計算されたハッシュと比較するために呼び出されます。 |
PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC | 公開キー アルゴリズム識別子のデコード、アルゴリズム プロバイダーの読み込み、キー ペアのインポートを行うために、CryptImportPublicKeyInfoEx2 によって呼び出されます。 |
PFNCCERTDISPLAYPROC | CryptUIDlgSelectCertificate 関数の呼び出し元が、ユーザーが表示を選択した証明書の表示を処理できるようにするユーザー定義コールバック関数。 |
PFNCMFILTERPROC | 各証明書をフィルター処理して、 CertSelectCertificate 関数によって表示される証明書の選択ダイアログ ボックスに表示されるかどうかを決定します。 |
PFNCMHOOKPROC | CertSelectCertificate 関数によって生成された証明書選択ダイアログ ボックスによってメッセージが処理される前に呼び出されます。 |
カタログ定義関数
これらの関数は、カタログの作成に使用されます。 これらの関数はすべて MakeCat によって呼び出されます。
機能 | 説明 |
---|---|
CryptCATCDFClose | カタログ定義ファイルを閉じ、対応する CRYPTCATCDF 構造体のメモリを解放します。 |
CryptCATCDFEnumAttributesWithCDFTag | CDF の CatalogFiles セクションにあるメンバー ファイルの属性を列挙します。 |
CryptCATCDFEnumCatAttributes | CDF の CatalogHeader セクション内のカタログ レベルの属性を列挙します。 |
CryptCATCDFEnumMembersByCDFTagEx | CDF の CatalogFiles セクション内の個々のファイル メンバーを列挙します。 |
CryptCATCDFOpen | 読み取り用の既存の CDF を開き、 CRYPTCATCDF 構造体を初期化します。 |
カタログ関数
これらの関数は、カタログの管理に使用されます。
機能 | 説明 |
---|---|
CryptCATAdminAcquireContext | カタログ管理者コンテキストへのハンドルを取得します。 このハンドルは、 CryptCATAdminAddCatalog、 CryptCATAdminEnumCatalogFromHash、および CryptCATAdminRemoveCatalog 関数への後続の呼び出しで使用できます。 |
CryptCATAdminAcquireContext2 | 特定のハッシュ アルゴリズムとハッシュ ポリシーのカタログ管理者コンテキストへのハンドルを取得します。 |
CryptCATAdminAddCatalog | カタログ をカタログ データベースに追加します。 |
CryptCATAdminCalcHashFromFileHandle | ファイルのハッシュを計算します。 |
CryptCATAdminCalcHashFromFileHandle2 | 指定したアルゴリズムを使用して、ファイルのハッシュを計算します。 |
CryptCATAdminEnumCatalogFromHash | 指定したハッシュを含むカタログを列挙します。 |
CryptCATAdminReleaseCatalogContext | CryptCATAdminAddCatalog 関数によって以前に返されたカタログ コンテキストへのハンドルを解放します。 |
CryptCATAdminReleaseContext | CryptCATAdminAcquireContext 関数によって以前に割り当てられたハンドルを解放します。 |
CryptCATAdminRemoveCatalog | カタログ ファイルを削除し、そのカタログのエントリをWindowsカタログ データベースから削除します。 |
CryptCATAdminResolveCatalogPath | 指定したカタログの完全修飾パスを取得します。 |
CryptCATCatalogInfoFromContext | 指定したカタログ コンテキストからカタログ情報を取得します。 |
CryptCATClose | CryptCATOpen 関数によって以前に開かれたカタログ ハンドルを閉じます。 |
CryptCATEnumerateAttr | カタログのメンバーに関連付けられている属性を列挙します。 |
CryptCATEnumerateCatAttr | カタログに関連付けられている属性を列挙します。 |
CryptCATEnumerateMember | カタログのメンバーを列挙します。 |
CryptCATGetAttrInfo | カタログのメンバーの属性に関する情報を取得します。 |
CryptCATGetMemberInfo | カタログの PKCS #7 からメンバー情報を取得します。 指定した参照タグのメンバー情報を取得するだけでなく、この関数はメンバー コンテキストを開きます。 |
CryptCATOpen | カタログを開き、開いているカタログにコンテキスト ハンドルを返します。 |
IsCatalogFile | 指定したファイルがカタログ ファイルであるかどうかを示すブール値を取得します。 |
WinTrust Functions
次の関数は、さまざまな信頼操作を実行するために使用されます。
機能 | 説明 |
---|---|
WintrustAddActionID | 信頼プロバイダー アクションをユーザーのシステムに追加します。 |
WintrustGetRegPolicyFlags | ポリシー プロバイダーのポリシー フラグを取得します。 |
WintrustAddDefaultForUsage | プロバイダーの既定の使用状況識別子とコールバック情報を指定します |
WintrustGetDefaultForUsage | 既定の使用状況識別子とコールバック情報を取得します。 |
WintrustLoadFunctionPointers | 指定したアクション GUID の関数エントリ ポイントを読み込みます。 |
WintrustRemoveActionID | WintrustAddActionID 関数によって追加されたアクションを削除します。 |
WintrustSetDefaultIncludePEPageHashes | ポータブル実行可能ファイルのサブジェクト インターフェイス パッケージ (SIP) 間接データを作成するときにページ ハッシュを含めるかどうかを決定する既定の設定を設定します。 |
WintrustSetRegPolicyFlags | ポリシー プロバイダーのポリシー フラグを設定します。 |
WinVerifyTrust | 指定したオブジェクトに対して信頼確認アクションを実行します。 |
WinVerifyTrustEx | 指定したオブジェクトに対して信頼検証アクションを実行し、WINTRUST_DATA構造体へのポインターを受け取ります。 |
WTHelperCertCheckValidSignature | 署名が有効かどうかを確認します。 |
WTHelperCertFindIssuerCertificate | 指定したサブジェクト証明書と一致する指定した証明書ストアから発行者証明書を検索します。 |
WTHelperCertIsSelfSigned | 証明書が自己署名されているかどうかを確認します。 |
WTHelperGetFileHash | 署名されたファイルの署名を検証し、ファイルのハッシュ値とアルゴリズム識別子を取得します。 |
WTHelperGetProvCertFromChain | 証明書チェーンから信頼プロバイダー証明書を取得します。 |
WTHelperGetProvPrivateDataFromChain | プロバイダー ID を使用して、チェーンから CRYPT_PROVIDER_PRIVDATA 構造体を受け取ります。 |
WTHelperGetProvSignerFromChain | チェーンからインデックス別に署名者またはカウンター署名者を取得します。 |
WTHelperProvDataFromStateData | 指定したハンドルから信頼プロバイダー情報を取得します。 |
オブジェクト ロケーター関数
次のコールバック関数は、証明書を取得するために Secure Channel (Schannel) セキュリティ パッケージによって呼び出されることを意図したカスタム プロバイダーによって実装できます。
機能 | 説明 |
---|---|
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH | オブジェクトが変更されたことを指定します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET | オブジェクトを取得します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE | プロバイダーを解放します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD | PFX バイト配列の暗号化に使用されるパスワードを解放します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE | プロバイダーから返されるオブジェクトを解放します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER | オブジェクト識別子のメモリを解放します。 |
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE | プロバイダーを初期化します。 |