Внешняя компонента ROM-HMAC

Библиотека входит в SDK для возможности интеграции с RESTfull-сервисами, использующих для авторизации OAuth, OAuth2 или собственные механизмы авторизации на базе HMAC

ROM-HMAC - внешняя компонента 1С:Предприятие 8.x, реализована по технологии Native API, в соответствии с рекомендациями 1С, изложенными в руководстве «Технология создания внешних компонент». Библиотека написана на языке C++.

ROM-HMAC реализует функциональность HMAC-хеширования для платформы 1С. Реализация HMAC выполнена в соответствии с RFC 2104.

Hash-based message authentication code

Текущая версия

Авторские права

Авторские права принадлежат Simplit, согласно международной конвенции о защите авторских прав

Поддерживаемые версии 1С:Предприятие

  • 1С:Предприятие 8.1
  • 1С:Предприятие 8.2 обычное приложение
  • 1С:Предприятие 8.2, 8.3 управляемое приложение:
    • сервер,
    • толстый клиент,
    • тонкий клиент,

Поддерживаемые ОС

  • Windows Server 2012
  • Windows Server 2008
  • Windows 10
  • Windows 8
  • Windows 7
  • Windows Vista
  • Windows XP SP3

Свойства

  • ХешФункция / HashFunction – (чтение/запись), (число), функция используемая для хеширования, по умолчанию 32772 (SHA-1)
  • ПровайдерТип / ProviderType – (чтение/запись), (число), тип CSP (Crypto Service Provider), по умолчанию 1 (PROV_RSA_FULL)
  • ПровайдерИмя / ProviderName – (чтение/запись), (строка), имя CSP (Crypto Service Provider), по умолчанию «Microsoft Enhanced Cryptographic Provider v1.0»
  • Версия / Version – (чтение), (строка), версия внешней компоненты

Методы

  • ХешСумма / HashSum (Key,Text,Format) - выполнить HMAC-хеширование, где
    • Key - (строка), (обязательный), ключ хеширования, допустимо пустое значение
    • Text - (строка), (обязательный) строка для хеширования, допустимо пустое значение
    • Format - (число), (необязательный) формат вывода результата, по умолчанию HEXRAW

Перечисления

Для хеширования ROM-HASH использует стандартные функции Windows CryptoAPI.

Хеш-функции

В параметре ХешФункция / HashFunction допустимо использовать значения, приведенные в таблице алгоритмов (MSDN)

Наиболее часто используемые хеш-функции:

Хеш-функция Значение параметра
SHA-1 32772
SHA-256 32780
SHA-384 32781
SHA-512 32782
MD5 32771
MD4 32770
MD2 32769

Пример использования параметра ХешФункция

HMAC.ХешФункция=32780;

Тип провайдера

В параметре ПровайдерТип / ProviderType допустимо использовать значения, приведенные в по ссылке (MSDN)

Наиболее часто используемые типы провайдеров:

Тип провайдера Значение параметра
PROV_RSA_FULL 1
PROV_RSA_AES 24
PROV_RSA_SIG 2

Пример использования параметра ПровайдерТип

HMAC.ПровайдерТип=1;

Имя провайдера

В параметре ПровайдерИмя / ProviderName допустимо использовать значения, приведенные в по ссылке (MSDN)

Наиболее часто используемые имена провайдеров:

Тип провайдера Значение параметра
MS_DEF_PROV «Microsoft Base Cryptographic Provider v1.0»
MS_ENHANCED_PROV «Microsoft Enhanced Cryptographic Provider v1.0»
MS_STRONG_PROV «Microsoft Strong Cryptographic Provider»
MS_ENH_RSA_AES_PROV «Microsoft Enhanced RSA and AES Cryptographic Provider»

Пример использования параметра ПровайдерИмя

HMAC.ПровайдерИмя="Microsoft Enhanced Cryptographic Provider v1.0";

Формат возвращаемого значения

Формат по умолчанию HEXRAW

Возможные варианты формата возвращаемого значения

Формат Значение параметра Пример
BASE64 1 3nybhbi3iqa8ino29wqQcBydtNk=
HEX 4 de 7c 9b 85 b8 b7 8a a6 bc 8a 7a 36 f7 0a 90 70 1c 9d b4 d9
HEXRAW 12 de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

Windows Server 2003 и Windows XP не поддерживают вывод в формате HEXRAW

Пример использования параметра ПровайдерИмя

HMAC.ПровайдерИмя="Microsoft Enhanced Cryptographic Provider v1.0";

Подключение внешней компоненты

Толстый клиент, сервер, внешнее соединение

//Пример подключения внешней компоненты из общего макета
АдресВнешнейКомпоненты="ОбщийМакет.ROM_HMAC";
Результат=ПодключитьВнешнююКомпоненту(АдресВнешнейКомпоненты,"Simplit",ТипВнешнейКомпоненты.Native);
Если Результат Тогда
	HMAC = Новый ("AddIn.Simplit.ROM-HMAC");
КонецЕсли;

Тонкий клиент, веб-клиент

УстановитьВнешнююКомпоненту(<Местоположение>); ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>) ;

//Пример подключения внешней компоненты из ZIP-архива, хранящегося в общем макете
АдресВнешнейКомпоненты="ОбщийМакет.ROM_HMAC_ZIP";
Результат=ПодключитьВнешнююКомпоненту(АдресВнешнейКомпоненты,"Simplit",ТипВнешнейКомпоненты.Native);
Если Не Результат Тогда
	УстановитьВнешнююКомпоненту(АдресВнешнейКомпоненты);
	Результат=ПодключитьВнешнююКомпоненту(АдресВнешнейКомпоненты,"Simplit",ТипВнешнейКомпоненты.Native);
КонецЕсли; 
Если Результат Тогда
	HMAC = Новый ("AddIn.Simplit.ROM-HMAC");
КонецЕсли; 

Пример получения HMAC-SHA1

Ключ="key";
Значение="The quick brown fox jumps over the lazy dog";
 
ХешСумма=HMAC.ХешСумма(Ключ,Значение);
// de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 

Пример получения HMAC-SHA256

// PROV_RSA_AES
HMAC.ПровайдерТип=24;
 
// MS_ENH_RSA_AES_PROV 
HMAC.ПровайдерИмя="Microsoft Enhanced RSA and AES Cryptographic Provider";
 
// SHA-256 (32780)
HMAC.ХешФункция=32780;
 
Ключ="key";
Значение="The quick brown fox jumps over the lazy dog";
 
ХешСумма=HMAC.ХешСумма(Ключ,Значение);
// f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 

Пример получения HMAC-MD5 в формате Base64

// MD5 (32771) в качестве хеш-функции
HMAC.ХешФункция=32771;
 
// Base64 (1) в качестве формата возвращаемого значения
ФорматЗначения=1;
 
Ключ="key";
Значение="The quick brown fox jumps over the lazy dog";
 
ХешСумма=HMAC.ХешСумма(Ключ,Значение);
// gAcHE0Y+d0m5DC3CSRHidQ==