暗号化関数

暗号化関数は、使用法に応じて次のように分類されます。

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 要素を解析し、Cryptography API: Next Generation (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 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
特定の CSP 内の現在のユーザーの キー コンテナー へのハンドルを取得します。
CryptContextAddRef 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
HCRYPTPROV ハンドルの参照カウントをインクリメントします。
CryptEnumProviders 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
コンピューター上のプロバイダーを列挙します。
CryptEnumProviderTypes 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
コンピューターでサポートされているプロバイダーの種類を列挙します。
CryptGetDefaultProvider 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
現在のユーザーまたは指定したプロバイダーの種類のコンピューターの既定の CSP を決定します。
CryptGetProvParam 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CSP の操作を制御するパラメーターを取得します。
CryptInstallDefaultContext 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
既定のコンテキストとして使用するために、以前に取得した HCRYPTPROV コンテキストをインストールします。
CryptReleaseContext 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CryptAcquireContext 関数によって取得されたハンドルを解放します。
CryptSetProviderCryptSetProviderEx 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
特定の CSP の種類のユーザーの既定の CSP を指定します。
CryptSetProvParam 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CSP の属性を指定します。
CryptUninstallDefaultContext 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CryptInstallDefaultContext によって以前にインストールされた既定のコンテキストを削除します。
FreeCryptProvFromCertEx ハンドルを 暗号化サービス プロバイダー (CSP) または Cryptography API: Next Generation (CNG) キーに解放します。

 

キー生成と Exchange 関数

キー生成および交換関数は、他のユーザーと キーを交換 し、 暗号化キーの作成、構成、破棄を行います。

機能 説明
CryptDeriveKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
パスワードから派生したキーを作成します。
CryptDestroyKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キーを破棄します。
CryptDuplicateKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キーの 状態 を含め、キーの正確なコピーを作成します。
CryptExportKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CSP からアプリケーションのメモリ空間内の キー BLOB にキー を転送します。
CryptGenKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
ランダムなキーを作成します。
CryptGenRandom 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
ランダム なデータを生成します。
CryptGetKeyParam 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キーのパラメーターを取得します。
CryptGetUserKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キー交換キーまたは署名キーへのハンドルを取得します。
CryptImportKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キー BLOB から CSP にキーを転送します。
CryptSetKeyParam 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
キーのパラメーターを指定します。

 

オブジェクト エンコード関数とデコード関数

これらは、一般化されたエンコードおよびデコード関数です。 証明書証明書失効リスト (CRL)、証明書要求、および証明書拡張機能をエンコードしてデコードするために使用されます。

機能 説明
CryptDecodeObject lpszStructType 型の構造体をデコードします。
CryptDecodeObjectEx lpszStructType 型の構造体をデコードします。 CryptDecodeObjectEx では 、ワンパス メモリ割り当てオプションがサポートされています。
CryptEncodeObject lpszStructType 型の構造体をエンコードします。
CryptEncodeObjectEx lpszStructType 型の構造体をエンコードします。 CryptEncodeObjectEx では 、ワンパス メモリ割り当てオプションがサポートされています。

 

データ暗号化と復号化関数

次の関数は、暗号化と暗号化解除の操作をサポートしています。 CryptEncryptCryptDecrypt には、呼び出される前に 暗号化キー が必要です。 これを行うには、 CryptGenKeyCryptDeriveKey、または CryptImportKey 関数を使用します。 暗号化アルゴリズムは、キーの作成時に指定されます。 CryptSetKeyParam では 、追加の暗号化パラメーターを設定できます。

機能 説明
CryptDecrypt 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
指定した暗号化キーを使用して 、暗号テキスト のセクションを復号化します。
CryptEncrypt 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
指定した暗号化キーを使用して 、プレーンテキスト のセクションを暗号化します。
CryptProtectData DATA_BLOB構造内のデータに対して暗号化を実行します。
CryptProtectMemory 機密情報を保護するためにメモリを暗号化します。
CryptUnprotectData DATA_BLOB内のデータの暗号化解除と整合性のチェックを実行します。
CryptUnprotectMemory CryptProtectMemory を使用して暗号化されたメモリを復号化します。

 

ハッシュ関数とデジタル署名関数

これらの関数は、データの ハッシュを 計算し、 デジタル署名を作成して検証します。 ハッシュはメッセージ ダイジェストとも呼ばれます。

機能 説明
CryptCreateHash 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
空のハッシュ オブジェクトを作成します。
CryptDestroyHash 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
ハッシュ オブジェクトを破棄します。
CryptDuplicateHash ハッシュ オブジェクトを複製します。
CryptGetHashParam ハッシュ オブジェクト パラメーターを取得します。
CryptHashData 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
データのブロックをハッシュし、指定したハッシュ オブジェクトに追加します。
CryptHashSessionKey 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
セッション キーをハッシュし、指定したハッシュ オブジェクトに追加します。
CryptSetHashParam 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
ハッシュ オブジェクト パラメーターを設定します。
CryptSignHash 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
指定したハッシュ オブジェクトに署名します。
CryptUIWizDigitalSign ドキュメントまたは BLOB にデジタル署名するウィザードを表示します。
CryptUIWizFreeDigitalSignContext CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT構造体へのポインターを解放します。
CryptVerifySignature 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
ハッシュ オブジェクトへのハンドルを指定して、デジタル署名を検証します。
PFNCFILTERPROC CryptUIWizDigitalSign 関数によって表示されるデジタル署名ウィザードに表示される証明書をフィルター処理します。

 

証明書と証明書ストアの関数

証明書ストア関数と証明書ストア関数は、 証明書証明書失効リスト (CRL)、証明書 信頼 リスト (CCTL) の使用、保存、取得を管理します。 これらの関数は、次のグループに分かれています。

  • 証明書ストア関数
  • 証明書と証明書ストアのメンテナンス機能
  • 証明書関数
  • 証明書失効リスト関数
  • 証明書信頼リスト関数
  • 拡張プロパティ関数
  • MakeCert 関数

証明書ストア関数

ユーザー サイトでは、時間の経過と同時に多くの証明書を収集できます。 通常、サイトには、サイトのユーザーに対する証明書と、ユーザーが通信する個人やエンティティを記述するその他の証明書があります。 エンティティごとに、複数の証明書を使用できます。 個々の証明書ごとに、信頼された ルート証明書への証跡を提供する証明書を検証するチェーンが存在する必要があります。 証明書ストア とその関連関数は、証明書に格納されている情報を格納、取得、列挙、検証、および使用するための機能を提供します。

機能 説明
CertAddStoreToCollection 兄弟証明書ストアをコレクション証明書ストアに追加します。
CertCloseStore 証明書ストア ハンドルを閉じます。
CertControlStore キャッシュされたストアの内容とストレージに永続化されるストアの内容に違いがある場合に、アプリケーションに通知を受け取ることができます。 また、必要に応じてキャッシュされたストアの非同期化も提供し、キャッシュされたストアで行われた変更を永続化されたストレージにコミットする手段も提供します。
CertDuplicateStore 参照カウントをインクリメントしてストア ハンドルを複製します。
CertEnumPhysicalStore 指定したシステム ストアの物理ストアを列挙します。
CertEnumSystemStore 使用可能なすべてのシステム ストアを列挙します。
CertEnumSystemStoreLocation 使用可能なシステム ストアを持つすべての場所を列挙します。
CertGetStoreProperty ストア プロパティを取得します。
CertOpenStore 指定したストア プロバイダーの種類を使用して証明書ストアを開きます。
CertOpenSystemStore サブシステム プロトコルに基づいてシステム証明書ストアを開きます。
CertRegisterPhysicalStore レジストリ システム ストア コレクションに物理ストアを追加します。
CertRegisterSystemStore システム ストアを登録します。
CertRemoveStoreFromCollection コレクション ストアから兄弟証明書ストアを削除します。
CertSaveStore 証明書ストアを保存します。
CertSetStoreProperty ストア プロパティを設定します。
CertUnregisterPhysicalStore 指定したシステム ストア コレクションから物理ストアを削除します。
CertUnregisterSystemStore 指定したシステム ストアの登録を解除します。
CryptUIWizExport 証明書、証明書信頼リスト (CTL)、証明書失効リスト (CRL)、または証明書ストアをエクスポートするウィザードを表示します。
CryptUIWizImport 証明書、証明書信頼リスト (CTL)、証明書失効リスト (CRL)、または証明書ストアをインポートするウィザードを表示します。

 

証明書と証明書ストアのメンテナンス機能

CryptoAPI には、一連の一般的な証明書と証明書ストアのメンテナンス機能が用意されています。

機能 説明
CertAddSerializedElementToStore シリアル化された証明書または CRL 要素をストアに追加します。
CertCreateContext エンコードされたバイトから指定したコンテキストを作成します。 新しいコンテキストはストアに配置されません。
CertEnumSubjectInSortedCTL 並べ替えられた CTL コンテキストで TrustedSubjects を列挙します。
CertFindSubjectInCTL CTL で指定された件名を検索します。
CertFindSubjectInSortedCTL 並べ替えられた CTL で指定された件名を検索します。
OpenPersonalTrustDBDialogOpenPersonalTrustDBDialogEx [ 証明書 ] ダイアログ ボックスを表示します。

 

証明書関数

ほとんどの 証明書 関数には、 CRL と CCTL を 処理するための関連関数 があります。 関連する 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 とそのプロパティをシリアル化します。

 

証明書信頼リスト関数

これらの関数は、 証明書信頼リスト (CCTL) のストレージと取得を管理します。

機能 説明
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 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
エンコードされたコンテンツをハッシュします。
CryptHashCertificate2 Cryptography API: Next Generation (CNG) ハッシュ プロバイダーを使用して、データのブロックをハッシュします。
CryptHashPublicKeyInfo 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
エンコードされた公開キー情報のハッシュを計算します。
CryptHashToBeSigned 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
エンコードされた署名済みコンテンツ (CERT_SIGNED_CONTENT_INFO) 内の "署名対象" 情報のハッシュを計算します。
CryptImportPKCS8 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
PKCS #8 形式の 秘密キー暗号化サービス プロバイダー (CSP) にインポートします。
CryptImportPublicKeyInfo 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
公開キー情報をプロバイダーに変換してインポートし、公開キーのハンドルを返します。
CryptImportPublicKeyInfoEx 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
公開キー情報をプロバイダーに変換してインポートし、公開キーのハンドルを返します。 既定値をオーバーライドするために使用できる追加のパラメーター ( CryptImportPublicKeyInfo で指定されたものに対するパラメーター) は、 CERT_PUBLIC_KEY_INFOを補完するために提供されます。
CryptImportPublicKeyInfoEx2 公開キーを CNG 非対称プロバイダーにインポートします。
CryptMemAlloc バッファーにメモリを割り当てます。 このメモリは、割り当てられたバッファーを返すすべての Crypt32.lib 関数で使用されます。
CryptMemFree CryptMemAlloc または CryptMemRealloc によって割り当てられたメモリを解放します
CryptMemRealloc バッファーに現在割り当てられているメモリを解放し、新しいバッファーにメモリを割り当てます。
CryptQueryObject 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
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 または CCTL に関連付けされません。

キー識別子は、証明書コンテキストと同じプロパティを持つことができます。 詳細については、「 CertCreateContext」を参照してください。

機能 説明
CryptCreateKeyIdentifierFromCSP 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
CSP の 公開キー BLOB からキー識別子を作成します。
CryptEnumKeyIdentifierProperties キー識別子とそのプロパティを列挙します。
CryptGetKeyIdentifierProperty 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
指定したキー識別子から特定のプロパティを取得します。
CryptSetKeyIdentifierProperty 重要:
この API は非推奨です。 新規および既存のソフトウェアでは 、Cryptography Next Generation API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
指定したキー識別子のプロパティを設定します。

 

OID サポート関数

これらの関数は 、オブジェクト識別子 (OID) のサポートを提供します。 これらの関数は、OID およびエンコード型固有の関数をインストール、登録、およびディスパッチします。

次の CryptoAPI 関数では、これらの OID サポート関数を使用します。

このプロセスの概要については、「 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 パケットとしてデコードし、指定されたパスワードで復号化しようとします。

 

証明書サービスのバックアップと復元の機能

Certificate Services には、Certificate Services データベースをバックアップおよび復元するための機能が含まれています。 これらの Certificate Services のバックアップおよび復元機能は、Certadm.dll に含まれています。 Certificate Services に関連付けられている他の API 要素とは異なり、これらの関数は、クラス メソッドの呼び出しに使用できるオブジェクトにカプセル化されません。 代わりに、バックアップ API と復元 API を呼び出すには、まず LoadLibrary を呼び出して Certadm.dll ライブラリをメモリに読み込み、 GetProcAddress を呼び出して関数のアドレスを決定します。 Certificate Services のバックアップと復元の関数の呼び出しが完了したら、 FreeLibrary を呼び出して、Certadm.dll リソースをメモリから解放します。

注意

Certadm.dll によって提供されるバックアップおよび復元機能は、証明書サービスの 秘密キーをバックアップまたは復元しません。 Certificate Services 秘密キーのバックアップの詳細については、「Certificate Services 秘密キー のバックアップと復元」を参照してください。

バックアップと復元の機能を呼び出すには、バックアップと復元 の特権が必要です。 詳細については、「 バックアップと復元の特権の設定」を参照してください。

 

注意

証明書サービスのバックアップ API と復元 API の呼び出しに使用したのと同じスレッドで CoInitializeEx が以前に呼び出された場合は、COINIT_APARTMENTTHREADED フラグが CoInitializeEx に渡されている必要があります。 つまり、同じスレッドを使用する場合、 スレッドが CoInitializeEx の呼び出しで COINIT_MULTITHREADED フラグを渡した場合、Certificate Services のバックアップおよび復元 API を呼び出すことはできません。

 

Certificate Services Backup API は Certbcli.h で定義されています。 ただし、プログラムを作成するときは、インクルード ファイルとして Certsrv.h を使用します。

次の API は、Certadm.dll によってエクスポートされます。

機能 説明
CertSrvBackupClose 開いているファイルを閉じます。
CertSrvBackupEnd バックアップ セッションを終了します。
CertSrvBackupFree バックアップ API と復元 API によって割り当てられたバッファーを解放します。
CertSrvBackupGetBackupLogs バックアップする必要があるログ ファイルの一覧を返します。
CertSrvBackupGetDatabaseNames バックアップする必要があるデータベース ファイルの一覧を返します。
CertSrvBackupGetDynamicFileList 特定のバックアップ コンテキストに対してバックアップする必要がある Certificate Services の動的ファイル名の一覧を取得します。
CertSrvBackupOpenFile バックアップの準備としてファイルを開きます。
CertSrvBackupPrepare オンライン バックアップ用にデータベースを準備します。
CertSrvBackupRead 開かれたファイルの内容を読み取ります。
CertSrvBackupTruncateLogs ログ ファイルを切り捨てます。
CertSrvIsServerOnline Certificate Services サーバーがオンライン (アクティブに実行されている) かどうかを判断します。
CertSrvRestoreEnd 復元セッションを終了します。
CertSrvRestoreGetDatabaseLocations データベースの場所を取得します (バックアップと復元の両方のシナリオで使用されます)。
CertSrvRestorePrepare 復元セッションを開始します。
CertSrvRestoreRegister 復元操作を登録します。
CertSrvRestoreRegisterComplete 以前に登録した復元操作を完了します。
CertSrvRestoreRegisterThroughFile 復元操作を登録します。
CertSrvServerControl Certificate Services インスタンスに制御コマンドを送信します。

 

コールバック関数

このセクションのコールバック関数は、アプリケーション定義 の証明書ストア プロバイダーを登録またはインストールし、コールバック関数を使用して関連する機能を提供するために使用されます。 コールバック関数はアプリケーションによって実装され、 CryptoAPI 関数によって呼び出されます。 コールバック関数を使用すると、CryptoAPI 関数がデータを操作する方法の一部を制御できます。

コールバック関数 用途
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 カタログ管理者コンテキストへのハンドルを取得します。 このハンドルは、 CryptCATAdminAddCatalogCryptCATAdminEnumCatalogFromHash、および 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 関数

次の関数は、さまざまな信頼操作を実行するために使用されます。

機能 説明
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 プロバイダーを初期化します。