OID 概述

通过提供新的 对象标识符 (OID) 、新的编码类型和新的 DLL 来实现扩展性。

CryptoAPI OID 可以采用以下任何形式:

  • 数字字符串,例如“1.2.3.500.88”
  • 字母数字字符串,例如 MyFunction
  • 一个常量,其值小于或等于 0xFFFF。 这些常量通常通过在头文件中使用 #define 语句与名称相关联。

可扩展函数接受 OID 和编码类型参数。 这些函数搜索系统注册表以查找与传递给函数的 OID 和编码类型参数关联的 DLL。 如果找到 OID 的 DLL,则找到编码类型组合,则加载 DLL 并调用其函数。 下图显示了 CryptEncodeObject 函数的此流:

oid flow

这允许根据需要扩展 CryptoAPI 的功能。 使用此方法给新功能的开发人员带来了为该功能编写所有必要的代码的负担。 例如,若要对某些新数据结构进行编码,DLL 中的函数必须执行整个编码过程。