OID の概要
拡張は、新しい オブジェクト識別子 (OID)、新しいエンコード型、および新しい DLL を使用できるようにすることで実現されます。
CryptoAPI OID は、次のいずれかの形式を使用できます。
- "1.2.3.500.88" などの数値文字列
- MyFunction などの英数字文字列
- 0xFFFF以下の値を持つ定数。 これらの定数は、多くの場合、ヘッダー ファイルで #define ステートメントを使用して名前に関連付けられます。
拡張可能な関数は、OID とエンコード型の引数を受け入れます。 これらの関数は、システム レジストリを検索して、関数に渡される OID およびエンコード型引数に関連付けられている DLL を検索します。 OID の DLL でエンコード型の組み合わせが見つかった場合、DLL が読み込まれ、その関数が呼び出されます。 次の図は、 CryptEncodeObject 関数のこのフローを示しています。
これにより、必要に応じて CryptoAPI の機能を拡張できます。 この手法を使用すると、新しい機能の開発者は、その機能に必要なすべてのコードを記述する負担になります。 たとえば、いくつかの新しいデータ構造をエンコードするには、DLL 内の関数がエンコード プロセス全体を実行する必要があります。