Общие сведения об OID

Расширяемость достигается путем предоставления для использования новых идентификаторов объектов (OID), новых типов кодирования и новых библиотек DLL.

Идентификаторы идентификаторов CryptoAPI могут принимать любую из следующих форм:

  • Числовая строка, например "1.2.3.500.88"
  • Буквенно-цифровая строка, например MyFunction
  • Константы со значением, которое меньше или равно 0xFFFF. Эти константы часто связываются с именем с помощью оператора #define в файле заголовка.

Расширяемые функции принимают аргументы OID и типа кодирования. Эти функции выполняют поиск в системном реестре, чтобы найти библиотеку DLL, связанную с OID и аргументами типа кодирования, переданными в функцию. Если найдена библиотека DLL для объекта OID, сочетание типов кодирования, библиотека DLL загружается и вызывается ее функция. На следующем рисунке показан этот поток для функции CryptEncodeObject :

Поток oid

Это позволяет расширять функциональные возможности CryptoAPI по мере необходимости. Использование этой методологии создает нагрузку на разработчика новых функций, чтобы написать весь необходимый код для этой функции. Например, чтобы закодировать новую структуру данных, функция в библиотеке DLL должна выполнить весь процесс кодирования.