Posted in 1С: Предприятие 8.х Без рубрики

Варианты Преобразования HEX в строку и в двоичные данные

Сегодня передо мной встала задача: искать сертификаты по отпечатку через CAPICOM.dll и отфильтровывать их по алгоритму подписи, а затем передавать на вход методов подписания документов и отображения сертификатов на формах и в справочниках данных сертификатов.

Почему? Просто оказалось что МенеджерКриптографии не получает все сертификаты без разбора по АлгоритмуПодписи с которым он был создан.

Встала задача фильтрации.

Из CAPICOM я получаю через .Thumbprint отпечаток в виде строки, которая содержит HEX символы двоичных данных.

Метод 1С

Сертификат = ХранилищеСертификатов.НайтиПоОтпечатку(ДвоичныйОтпечаток);

Работает только с ДвоичнымиДанными

метод для преобразования HEX строки в ДвоичныеДанные появился только с платформы версии 8.3.10

ОтпечатокВВидеДвоичныхДанных = ПолучитьДвоичныеДанныеИзHexСтроки(ТекущийОтпечаток)

поэтому понадобились эти функции преобразования

таких строк как 5145BC539CCFFE6537741AC28C45C74DB2BAFF8D

в 51 45 BC 53 9C CF FE 65 37 74 1A C2 8C 45 C7 4D B2 BA FF 8D

Функция СтрокуКакДвоичныеДанные(Параметр) Экспорт
    Перем Результат;
    
    ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary");
    Результат = ФабрикаXDTO.Создать(ТипДвоичныеДанные,Параметр);
    
    Возврат Результат.Значение;
КонецФункции 

Функция ДвоичныеДанныеКакСтроку(Параметр) Экспорт
    Перем Результат;
    
    ТипДвоичныеДанные = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary");
    Результат = ФабрикаXDTO.Создать(ТипДвоичныеДанные,Параметр);
    
    Возврат Результат.ЛексическоеЗначение;
КонецФункции

Данные методы согласно документации поддерживаются с версии 1С Предприятия 8.1