Внешняя компонента ROM-HMAC
Библиотека входит в 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, согласно международной конвенции о защите авторских прав
Поддерживаемые версии 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==