В ЭЦП данные о её владельце и изготовителе хранятся в виде Distinguished Names (DN).
Например:
CN=БЛОГОВ БЛОГ,SURNAME=БЛОГОВ,SERIALNUMBER=IIN123456789012,C=KZ,L=АСТАНА,S=АСТАНА,G=БЛОГОВИЧ,O=ТОО \"Рога\, копыта 24\\7\",OU=BIN000111222333 |
Атрибуты отделяются между собой запятыми, каждый атрибут представляет из себя ключ и значение, разделенные символом равно (=). Так же некоторые символы экранируются, например: \" \,
Предлагаю следующую функцию, которая принимает строку в формате DN и возвращается объект с соответствующими полями и значениями (я использовал angular’овский цикл, но можно заменить на обычный).
function parseDN(value){ var parts = value .replace(/\\,/g,'<comma>') .replace(/,/g,'<delim>') .replace(/<comma>/g,',') .replace(/\\\\/g,'<backslash>') .replace(/\\/g,'') .replace(/<backslash>/g,'\\') .split('<delim>'); var map = {}; angular.forEach(parts, function(part){ var split = part.split('='); map[split[0]] = split[1]; }); return map; } |
Пример использования:
var map = parseDN("YOUR_DN_STRING"); console.log(map.CN); console.log(map.SERIALNUMBER); console.log(map.O); |
Добавить комментарий