Библиотека входит в SDK для возможности интеграции с RESTfull-сервисами, использующих для авторизации OAuth, OAuth2 или собственные механизмы авторизации на базе HMAC
ROM-HMAC - внешняя компонента 1С:Предприятие 8.x, реализована по технологии Native API, в соответствии с рекомендациями 1С, изложенными в руководстве «Технология создания внешних компонент». Библиотека написана на языке C++.
ROM-HMAC реализует функциональность HMAC-хеширования для платформы 1С. Реализация HMAC выполнена в соответствии с RFC 2104.
1.0.1 (stable)
Авторские права принадлежат Simplit, согласно международной конвенции о защите авторских прав
32772
(SHA-1)1
(PROV_RSA_FULL)«Microsoft Enhanced Cryptographic Provider v1.0»
Для хеширования 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"); КонецЕсли;
Ключ="key"; Значение="The quick brown fox jumps over the lazy dog"; ХешСумма=HMAC.ХешСумма(Ключ,Значение); // de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9
// 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
// MD5 (32771) в качестве хеш-функции HMAC.ХешФункция=32771; // Base64 (1) в качестве формата возвращаемого значения ФорматЗначения=1; Ключ="key"; Значение="The quick brown fox jumps over the lazy dog"; ХешСумма=HMAC.ХешСумма(Ключ,Значение); // gAcHE0Y+d0m5DC3CSRHidQ==