Некоторые команды (writeUserCertificate, writeStandaloneCertificate, parseX509Certificate, writeServerCertificate, verifyCertificateChain) в качестве входных аргументов могут принимать данные в любом из следующих форматов: PEM или DER.
Типом аргумента в формате PEM может являться строка или массив.
PEM-данные в виде строки без разделителей
var data = 'MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==';
PEM-данные в виде строки с использованием символа ‘\n’ в качестве разделителя
var data = 'MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\n\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\n\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\n\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\n\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\n\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\n\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\n\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\n\
sA==';
PEM-данные в виде строки с метками ‘–––––BEGIN‘ и ‘–––––END‘
В метках не обязательно конкретно указывать, что это за объект (CERTIFICATE или X509 CRL), т.к. для каждой команды заранее известен ожидаемый объект, поэтому наименование объектов внутри меток игнорируется и для получения тела используются только ‘–––––BEGIN‘ и ‘–––––END‘.
В связи с этим в примере ниже переменные data_0, data_1 и data_2 эквивалентны.
var data_0 = '-----BEGIN CERTIFICATE-----\n\
MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==\n\
-----END CERTIFICATE-----';
var data_1 = '-----BEGIN -----\n\
MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==\n\
-----END -----';
var data_2 = 'ANY TEXT\n\
-----BEGIN -----\n\
MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==\n\
-----END -----\n\
ANY TEXT';
PEM-данные в виде массива
// Функция преобразования строки в массив
function stringToAsciiArray(str) {
var result = [];
if (!str) {
return result;
}
for (var i = 0; i < str.length; i++) {
result.push(str.charCodeAt(i));
}
return result;
};
// Данные в виде строки (здесь может быть любое строковое представление данных, представленных в примерах выше)
var dataStr = 'MIIBfTCCASoCCQDGS0qiKF8OKTAKBgYqhQMCAgMFADBFMQswCQYDVQQGEwJSVTET\
MBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ\
dHkgTHRkMB4XDTEzMDEzMDEyMzkyN1oXDTEzMDMwMTEyMzkyN1owRTELMAkGA1UE\
BhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdp\
ZGdpdHMgUHR5IEx0ZDBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MA\
BEDHgQAkxQJ95kibeD8kuRGv17zTWWIkf2JhnRuyZ7OzTJQyeG3KaxZ1je4lVq+e\
6+i38lUu33cVESIU9L6Mc2SyMAoGBiqFAwICAwUAA0EARj1I65tsiChYFM0thKlI\
AZQ+YIh/OgUe7+QzVxVoQg9W8OT845us4GDo3WnQArmJIPa6PtSJxfQqz9NAXROK\
sA==';
// Данные в виде массива
var dataArray = stringToAsciiArray(dataStr);
Типом аргумента в формате DER является массив байт.