lcryptowrap
v3.0.21
Published
Crypto Library with Belarusian cryptography
Readme
Библиотека с криптографией
win, mac, linux (glibc)
Linux with musl work too
Installation
$ npm install lcryptowrapor
$ yarn add lcryptowrap$ yarn build
--arch=ia32
--target=9.0.5 --dist-url=https://atom.io/download/electron
Usage
const crypto = require('lcryptowrap');Functions
CreateDigest, CreateMac, CreateHmac,
GenRandomCTR, GenRandomHMAC,
GenRandomIntel, GenRandomSystem,
CryptoRandom, CryptoPseudoRandom, RandomFIPS,
GenEncryptKey,
KeyExpansion, KeyConversion,
Encrypt, Decrypt,
CreateToken, DecodeToken,
CreateSignDigest, VerifySignDigest,
CreateSign, VerifySign,
EncryptData, DecryptData,
Protect, Unprotect,
EncryptP7S, DecryptP7S,
CreateSignP7S, VerifySignP7S, ConvertP7S,
GenPrivateKey, SetPrivateKey,
KeyProtect, KeyUnprotect, ChangePassword,
GetKeyBytes, GetPublicKey,
ConvertPrivateKey, ConvertPublicKey,
CreateRequest, VerifyRequest, ConvertRequest, GetRequestInfo,
CreateCertificate, VerifyCertificate, ConvertCertificate, RevokeCertificate,
CreateCRL, VerifyCRL, ConvertCRL,
CreateP7B, ConvertP7B,
BELS_shareKey, BELS_recoveKeyРеализация протокола BPACE двумя сторонами
BPACE_initA
BPACE_sideA_step1
BPACE_sideA_step2
BPACE_sideA_final
BPACE_initB
BPACE_sideB_step1
BPACE_sideB_step2
BPACE_sideB_finalAPI
CRYPTO.
- CreateDigest(algorithm, data) - вычисление хэш-значения от сообщения
- algorithm - [REQUIRED] - имя алгоритма
- bash256, bash384, bash512, belt-hash
- blake2b512, blake2s256
- md4, md5, mdc2
- sha1, sha224, sha256
- sha3-224, sha3-256, sha3-384, sha3-512
- sha384, sha512, sha512-224, sha512-256
- shake128, shake256
- sm3
- data - [REQUIRED] - данные
- algorithm - [REQUIRED] - имя алгоритма
- CreateMac(data, key) - вычисление mac-значения
- data - [REQUIRED] - данные
- key - [REQUIRED] - 32байтовый ключ
- CreateHmac(data, key) - вычисление hmac-значения
- data - [REQUIRED] - данные
- key - [REQUIRED] - 32байтовый ключ
- GenRandomCTR(number, key, iv) - генерация псевдослучайных чисел в режиме CTR
- number - [REQUIRED] - кол-во 32байтовых случайных слов
- key - [REQUIRED] - 32байтовый ключ
- iv - [REQUIRED] - 32байтовая синхропосылка
- GenRandomHMAC(number, key, iv) - генерация псевдослучайных чисел в режиме HMAC
- number - [REQUIRED] - кол-во 32байтовых случайных слов
- key - [REQUIRED] - ключ
- iv - [REQUIRED] - синхропосылка
- GenRandomIntel(size) - генерация случайности Intel (если возможно)
- size - [REQUIRED] - число байт
- GenRandomSystem(size) - генерация случайности системной
- size - [REQUIRED] - число байт
- CryptoRandom(random) - генерация случайности на основе функции хэширования
- random - [REQUIRED] - байты случайности (33+)
- CryptoPseudoRandom(number, random) - генерация случайности на СТБ 34.101.47
- number - [REQUIRED] - кол-во 32байтовых случайных слов
- random - [OPTIONAL] - байты случайности (33+)
- RandomFIPS(random) - проверка FIPS 140-2 случайности 2500 байт (optimal)
- random - [OPTIONAL] - случайность байт для проверки
- GenEncryptKey(random) - генерация 32байтового ключа
- random - [OPTIONAL] - случайность байт
- KeyExpansion(key) - функция расширения ключа СТБ 34.101.31-2011 п 7.1
- key - [REQUIRED] - личный ключ [16, 24, 32]
- KeyConversion(key, newKeyCount, level, header) - функция преобразования ключа СТБ 34.101.31-2011 п 7.2
- key - [REQUIRED] - личный ключ [16, 24, 32]
- newKeyCount - [REQUIRED] - размер преобразованного ключа в байтах
- level - [OPTIONAL] - уровень ключа
- header - [OPTIONAL] - заголовок преобразованного ключа
- Encrypt(algorithm, data, key, iv) - зашифрование данных
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- key - [REQUIRED] - 32байтовый ключ
- iv - [OPTIONAL] - синхропосылка
- algorithm - [REQUIRED] - имя алгоритма
- Decrypt(algorithm, data, key) - расшифрование данных
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- key - [REQUIRED] - 32байтовый ключ
- iv - [OPTIONAL] - синхропосылка
- algorithm - [REQUIRED] - имя алгоритма
- CreateToken(key, pubKey) - установка защиты на ключ
- key - [REQUIRED] - защищаемый ключ
- pubKey - [REQUIRED] - открый ключ или сертификат получателя
- DecodeToken(token, private_token, password) - снятие защиты с ключа
- token - [REQUIRED] - токен ключа
- private_token - [REQUIRED] - токен личного ключа получателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- CreateSignDigest(algorithm, digest, private_token, password) - подпись хэш-значения от сообщения
- algorithm - [REQUIRED] - имя алгоритма
- bash256, bash384, bash512, belt-hash
- digest - [REQUIRED] - хэш-значение
- private_token - [REQUIRED] - токен личного ключа отправителя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- algorithm - [REQUIRED] - имя алгоритма
- VerifySignDigest(algorithm, digest, pubKey, sign) - подпись сообщения
- algorithm - [REQUIRED] - имя алгоритма
- bash256, bash384, bash512, belt-hash
- digest - [REQUIRED] - хэш-значение
- pubKey - [REQUIRED] - открытый ключ или сертификат отправителя
- sign - [REQUIRED] - подпись
- algorithm - [REQUIRED] - имя алгоритма
- CreateSign(data, private_token, password) - подпись сообщения
- data - [REQUIRED] - данные
- private_token - [REQUIRED] - токен личного ключа отправителя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- VerifySign(data, pubKey, sign) - подпись сообщения
- data - [REQUIRED] - данные
- pubKey - [REQUIRED] - открытый ключ или сертификат отправителя
- sign - [REQUIRED] - подпись
- EncryptData(algorithm, data, pubKey) - зашифрование данных с установкой защиты на ключ шифрования для получателя
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- pubKey - [REQUIRED] - открый ключ или сертификат получателя
- algorithm - [REQUIRED] - имя алгоритма
- DecryptData(algorithm, data, token, private_token, password) - расшифрование данных
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- token - [REQUIRED] - токен ключа
- private_token - [REQUIRED] - токен личного ключа получателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- algorithm - [REQUIRED] - имя алгоритма
- Protect(algorithm, data, private_token, password, pubKey) - зашифрование данных с установкой защиты на ключ шифрования для получателя и подписью отправителя
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- private_token - [REQUIRED] - токен личного ключа отправителя
- password - [REQUIRED] - пароль к токену личного ключа или null
- pubKey - [REQUIRED] - открый ключ или сертификат получателя
- algorithm - [REQUIRED] - имя алгоритма
- Unprotect(algorithm, data, token, private_token, password, pubKey, sign) - снятие защиты с сообщения с проверкой подписи отправителя
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- token - [REQUIRED] - токен ключа
- private_token - [REQUIRED] - токен личного ключа получателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- pubKey - [REQUIRED] - открытый ключ или сертификат отправителя
- sign - [REQUIRED] - подпись
- algorithm - [REQUIRED] - имя алгоритма
- EncryptP7S(algorithm, data, certificate, format, params) - защита сообщения
- algorithm - [REQUIRED] - имя алгоритма
- belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
- data - [REQUIRED] - данные
- pubKey - [REQUIRED] - сертификат получателя в байтах
- format - [OPTIONAL] - формат выходного сообщение
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- 2 - FORMAT_SMIME
- params - [OPTIONAL] - формат выходного сообщение
- FORMAT_PKCS7_USE_KEYID - использование subjectKeyIdentifier
- algorithm - [REQUIRED] - имя алгоритма
- DecryptP7S(data, private_token, password) - снятие защиты с сообщения
- data - [REQUIRED] - данные
- private_token - [REQUIRED] - токен личного ключа получателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- CreateSignP7S(data, private_token, password, certificate, format, params) - подпись сообщения с выходных форматом
- data - [REQUIRED] - данные
- private_token - [REQUIRED] - токен личного ключа отправителя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- certificate - [REQUIRED] - сертификат отправителя
- format - [REQUIRED] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- 2 - FORMAT_SMIME
- params - [OPTIONAL] - формат выходного сообщение
- FORMAT_PKCS7_DETACHED - [OPTIONAL] - открепленная подпись
- FORMAT_PKCS7_USE_KEYID - [OPTIONAL] - использование subjectKeyIdentifier
- FORMAT_PKCS7_NOCERTS - [OPTIONAL] - исключение сертификата
- FORMAT_PKCS7_NOATTR - [OPTIONAL] - исключение атрибутов подписи ("Тип содержимого", "хэш-значение", "время подписания")
- VerifySignP7S(sign, data, certificate) - проверка подписи
- sign - [REQUIRED] - подпись
- data - [OPTIONAL] - данные при параметре FORMAT_PKCS7_DETACHED
- certificate - [OPTIONAL] - сертификат при параметре FORMAT_PKCS7_NOCERTS
- *ConvertP7S(format, data) - конвертирование подписанных данные
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- data - [REQUIRED] - подписанные данные
- format - [REQUIRED] - вариант выходной кодировки
- GenPrivateKey(level, password, format) - генерация токена личного ключа (защищещнного или незащищенного)
- level - [REQUIRED] - уровень стойкости ключа с битах
- 128, 192, 256
- password - [OPTIONAL] - пароль к токену личного ключа или null
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- level - [REQUIRED] - уровень стойкости ключа с битах
- SetPrivateKey(level, key, password, format) - установка личного ключа в токен
- level - [REQUIRED] - уровень стойкости ключа с битах
- 128, 192, 256
- key - [REQUIRED] - ключ требуемого размера под уровень стойкости (32, 48, 64 байта)
- password - [OPTIONAL] - пароль к токену личного ключа или null
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- level - [REQUIRED] - уровень стойкости ключа с битах
- KeyProtect(private_key, password, format) - установка защиты на личный ключ
- private_key - [REQUIRED] - незащищенный токен личного ключа
- password - [REQUIRED] - пароль для установки защиты
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- KeyUnprotect(private_key, password, format) - снятие защиты с личного ключа
- private_key - [REQUIRED] - защищенный токен личного ключа
- password - [REQUIRED] - пароль для снятия защиты
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- ChangePassword(private_key, passwordOld, passwordNew, format) - изменение пароля
- private_key - [REQUIRED] - защищенный токен личного ключа
- passwordOld - [OPTIONAL] - старый пароль
- passwordNew - [OPTIONAL] - новый пароль
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- GetKeyBytes(private_token, password) - получение байтов личного и открытого ключей
- private_token - [REQUIRED] - токен личного ключа
- password - [OPTIONAL] - пароль к токену личного ключа или null
- GetPublicKey(data, format) - получение открытого ключа из сертификата или запроса на выпуск сертификата
- data - [REQUIRED] - сертификат / запрос на сертификат
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- *ConvertPrivateKey(format, key) - конвертирование личного ключа
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- key - [REQUIRED] - личный ключ
- format - [REQUIRED] - вариант выходной кодировки
- *ConvertPublicKey(format, key) - конвертирование открытого ключа
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- key - [REQUIRED] - открытый ключ
- format - [REQUIRED] - вариант выходной кодировки
- CreateRequest(private_token, password, data, config, format) - генерация запроса на выпуск сертификата
- private_token - [REQUIRED] - токен личного ключа
- password - [OPTIONAL] - пароль к токену личного ключа или null
- data - [OPTIONAL] - данные для запроса на выпуск сертификата. Заполнить RequestINFO требуемыми параметрами.
- config - [OPTIONAL] - дополнительный файл конфигурации,
- format - [OPTIONAL] - дополнительный файл конфигурации
- VerifyRequest(data) - проверка запроса на выпуска сертификата
- data - [REQUIRED] - запрос на выпуск сертификата
- *ConvertRequest(format, data) - конвертирование запроса на сертификат
- format - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- data - запроса на сертификат
- format - вариант выходной кодировки
- GetRequestInfo(data) - получение данных и запроса на выпуск сертификата
- data - [REQUIRED] - запрос на выпуск сертификата
- CreateCertificate(request, private_token, password, certificate, config, db, serial, selfsign, format) - выпуск сертификата
- request - [REQUIRED] - запрос на выпуск сертификата
- private_token - [REQUIRED] - токен личного ключа издателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- certificate - [OPTIONAL] - сертификат издателя или null при самоподписанном сертификате
- config - [OPTIONAL] - файл дополнительной конфигурации или null
- db - [OPTIONAL] - файл БД или null при первоначальном старте
- serial - [OPTIONAL] - серийный номер в HEX или null если в файле конфигурации установлен параметр генерации
- selfsign - [OPTIONAL] - самоподписанный сертификат (true or false)
- format - [OPTIONAL] - выходной формат
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- VerifyCertificate(certificate, chain, crl) - проверка сертификата
- certificate - [REQUIRED] - проверяемый сертификат
- chain - [OPTIONAL] - байты цепочки сертификатов в P7B или null для самоподписанного сертификата
- crl - [REQUIRED] - список отзыва
- *ConvertCertificate(format, data) - конвертирование сертификата
- format - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- data - сертификат
- format - вариант выходной кодировки
- RevokeCertificate(certificate, db, reason, config) - отзыв сертификата
- certificate - [REQUIRED] - отзываемый сертификат
- db - [REQUIRED] - файл БД
- reason - причина отзыва сертификата
- ReasonUnspecified - "unspecified";
- ReasonKeyCompromise - "keyCompromise";
- ReasonCACompromise - "CACompromise";
- ReasonAffiliationChanged - "affiliationChanged";
- ReasonSuperseded - "superseded";
- ReasonCessationOfOperation - "cessationOfOperation";
- ReasonCertificateHold - "certificateHold";
- ReasonRemoveFromCRL - "removeFromCRL";
- config - [OPTIONAL] - файл дополнительной конфигурации или null
- CreateCRL(private_token, password, certificate, config, db, serial, format) - выпуск списка отозванных сертификатов
- private_token - [REQUIRED] - токен личного ключа издателя
- password - [OPTIONAL] - пароль к токену личного ключа или null
- certificate - [REQUIRED] - сертификат издателя
- config - [OPTIONAL] - файл дополнительной конфигурации или null
- db - [REQUIRED] - файл БД или null при пустой БД
- serial - [REQUIRED] - серийный номер по порядку
- format - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- *VerifyCRL(datam certificate) - проверка списка отозванных сертификатов
- data - [REQUIRED] - запроса на выпуск сертификата
- certificate - [REQUIRED] - сертификат издателя
- *ConvertCRL(format, data) - конвертирование списка отозванных сертификатов
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- data - [REQUIRED] - список отозванных сертификатов
- format - [REQUIRED] - вариант выходной кодировки
- *CreateP7B(certificate, crl, format) - создание цепочки доверия
- certificate - массив сертификатов
- crl - массив списков отозванных сертификатов
- format - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- *ConvertP7B(format, data) - конвертирование цепочки доверия
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- data - [REQUIRED] - подписанные данные
- format - [REQUIRED] - вариант выходной кодировки
- *BELS_shareKey(users, threshold, key, format) - разделение секрета
- users - [REQUIRED] - число пользователей
- threshold - [REQUIRED] - пороговое число
- key - [REQUIRED] - разделяемый ключ
- format - [REQUIRED] - вариант выходной кодировки
- 0 - FORMAT_PEM
- 1 - FORMAT_ASN1
- *BELS_recoveKey(secret) - восстановление секрета
- secret - [REQUIRED] - массив частичных секретов и паролей к ним
Примеры использования в example.js
CreateDigest
var incomeData = "some data";
var createDigest = crypto.CreateDigest("bash256", incomeData);
console.log(`CreateDigest: ${createDigest.digest.toString("hex")}`);
//=> '020e726d12bf9bb143e8932224f2744e29c7976558640d5d77736d04a06de5cd'GenEncryptKey
var genEncryptKey = crypto.GenEncryptKey();
console.log(`GenEncryptKey ${genEncryptKey.privKey.toString("hex")}`);
// => 'c4e274feb88e44cf6397682dd9f25b7fd3777b1995b9a777cfebb48ac4fd3692'CreateMac
var createMac = crypto.CreateMac(incomeData, genEncryptKey.privKey);
console.log(`CreateMac: ${createMac.digest.toString("hex")}`);
//=> 'a885f24aa247b2f5'CreateHmac
var createHmac = crypto.CreateHmac(incomeData, genEncryptKey.privKey);
console.log(`CreateHmac: ${createHmac.digest.toString("hex")}`);
//=> 'e4c7dc93cb3606a9db174d84e932d8e6f53f5b10ecbe4fbbd9d506e63738c6d3'GenPrivateKey
var genPrivateKey = crypto.GenPrivateKey(128, "12345678");
console.log(`${genPrivateKey.privKey.toString()}`);
console.log(`${genPrivateKey.pubKey.toString()}`);
/*=>
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIGdMFgGCSqGSIb3DQEFDTBLMCoGCSqGSIb3DQEFDDAdBAjZnQpHOsPPAwICCAAw
DQYJKnAAAgAiZS8MBQAwHQYJKnAAAgAiZR8rBBD/r17X+dSCKOfk922d7MWyBEE1
FBW22GOCHBoygxwVPH5OMwXQr8lGFOPxmO3jHcnl3vcx0ioCLOp08Jsx2tI490/f
gQaaSyc3yW3g3q4RF+YYCA==
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MF0wGAYKKnAAAgAiZS0CAQYKKnAAAgAiZS0DAQNBAPE4W1JJZfRCQRsv+qptCTHX
fsCEsuFKANXmQtQ5yXvqiFdgWITUAGp6QUr71lIoCoErbhcMg8KcJkZiEkdW1+4=
-----END PUBLIC KEY-----
*/GetPrivateKey
var getPrivateKey = crypto.GetPrivateKey(genPrivateKey.privKey, "12345678");
console.log(`GetPrivateKey: ${getPrivateKey.privKey.toString("hex")}`);
//=> '62eb4b2541fde9134cdd14de142a0f8df0f552f3696aeb9d90d60d84a65b1b54'Encrypt + CreateToken - DecodeToken + Decrypt
// Encrypt + CreateToken
var encrypt = crypto.Encrypt("belt-ctr256", incomeData, genEncryptKey.privKey);
console.log(`Encrypt: ${encrypt.data.toString("hex")}`);
//=> 'b34dd30531982655ab'
var createToken = crypto.CreateToken(
genEncryptKey.privKey,
genPrivateKey.pubKey
);
console.log(`CreateToken: ${createToken.token.toString("hex")}`);
//=> '36035533f4f5be514abec2b988479b945d7789f3bd0f10ab23e722b457dc945ff93a39a9bc5605cc7d96ef1f67f1d8e6f58b687d9166bbe7df434ea715e2beb5b34df1719a2f59f8663b13db157f32c4'
// DecodeToken + Decrypt
var decodeToken = crypto.DecodeToken(
createToken.token,
genPrivateKey.privKey,
"12345678"
);
console.log(`DecodeToken: ${decodeToken.privKey.toString("hex")}`);
//=> '6cc3769390b36ee80dee04809ed5a0cd8be9c0da5df92079070390631f17eedf7'
var decrypta = crypto.Decrypt("belt-ctr256", encrypt.data, decodeToken.privKey);
console.log(`Decrypt: ${decrypt.data.toString()}`);
//=> 'some data'EncryptData - DecryptData
var encryptData = crypto.EncryptData(
"belt-ctr256",
incomeData,
genPrivateKey.pubKey
);
console.log(`EncryptData: ${encryptData.data.toString("hex")}`);
console.log(`EncryptData: ${encryptData.token.toString("hex")}`);
//=> '57cbd4dcccaaab3d2e'
//=> '8710303c75969f6a44024fdd75e3f18048f6f6b52e2f6e486e7880d8e82289510b0f2c9eabc837928ce106167f09188616b72b08272c6c61b5badeea9275dadfbddca50d0afd955b35c8ebd7916bc036'
var decryptData = crypto.DecryptData(
"belt-ctr256",
encryptData.data,
encryptData.token,
genPrivateKey.privKey,
"12345678"
);
console.log(`DecryptData: ${decryptData.data.toString()}`);
//=> 'some data'CreateSign - VerifySign
var createSign = crypto.CreateSign(
incomeData,
genPrivateKey.privKey,
"12345678"
);
console.log(`${createSign.sign.toString("hex")}`);
//=> 'f55974f0dc08c7357d05e120be4ac6bd09c171edf54fdf38f48642e974e604a785f0384a44c0ee12c758ad0d8ccf3f8b'
var verifySign = crypto.VerifySign(
incomeData,
genPrivateKey.pubKey,
createSign.sign
);
console.log(`VerifySign ... ${verifySign.status}`);
//=> '0'Configuration File
Readme config.mdRequestINFO
commonName = 2.5.4.3;
surname = 2.5.4.4;
serialNumber = 2.5.4.5;
countryName = 2.5.4.6;
localityName = 2.5.4.7;
stateOrProvinceName = 2.5.4.8;
streetAddress = 2.5.4.9;
organizationName = 2.5.4.10;
organizationalUnitName = 2.5.4.11;
title = 2.5.4.12;
description = 2.5.4.13;
searchGuide = 2.5.4.14;
businessCategory = 2.5.4.15;
postalAddress = 2.5.4.16;
postalCode = 2.5.4.17;
postOfficeBox = 2.5.4.18;
physicalDeliveryOfficeName = 2.5.4.19;
telephoneNumber = 2.5.4.20;
telexNumber = 2.5.4.21;
teletexTerminalIdentifier = 2.5.4.22;
facsimileTelephoneNumber = 2.5.4.23;
x121Address = 2.5.4.24;
internationaliSDNNumber = 2.5.4.25;
registeredAddress = 2.5.4.26;
destinationIndicator = 2.5.4.27;
preferredDeliveryMethod = 2.5.4.28;
presentationAddress = 2.5.4.29;
supportedApplicationContext = 2.5.4.30;
roleOccupant = 2.5.4.33;
seeAlso = 2.5.4.34;
userPassword = 2.5.4.35;
userCertificate = 2.5.4.36;
cACertificate = 2.5.4.37;
authorityRevocationList = 2.5.4.38;
certificateRevocationList = 2.5.4.39;
crossCertificatePair = 2.5.4.40;
name = 2.5.4.41;
givenName = 2.5.4.42;
initials = 2.5.4.43;
generationQualifier = 2.5.4.44;
x500UniqueIdentifier = 2.5.4.45;
dnQualifier = 2.5.4.46;
enhancedSearchGuide = 2.5.4.47;
protocolInformation = 2.5.4.48;
distinguishedName = 2.5.4.49;
uniqueMember = 2.5.4.50;
houseIdentifier = 2.5.4.51
supportedAlgorithms = 2.5.4.52;
deltaRevocationList = 2.5.4.53;
pseudonym = 2.5.4.65;
role = 2.5.4.72;
organizationIdentifier = 2.5.4.97
countryCode3c = 2.5.4.98;
countryCode3n = 2.5.4.99;
dnsName = 2.5.4.100;GenRequest + VerifyRequest + GetRequestInfo
var INFO = new crypto.RequestINFO();
INFO.organizationIdentifier = "OrganizationIndentifier";
INFO.houseIdentifier = "houseIdentifier";
var genRequest = crypto.GenRequest(
genPrivateKey.privKey,
"12345678",
INFO,
null
);
console.log(`GenRequest: ${genRequest.data.toString()}`);
/*=>
-----BEGIN CERTIFICATE REQUEST-----
MIIBRjCCAQACAQIwSTELMAkGA1UEBhMCQlkxGDAWBgNVBDMMD2hvdXNlSWRlbnRp
ZmllcjEgMB4GA1UEYQwXT3JnYW5pemF0aW9uSW5kZW50aWZpZXIwXTAYBgoqcAAC
ACJlLQIBBgoqcAACACJlLQMBA0EA5qlUY94Gak/WKobNPOfN8klWHhtSWjwwNe0M
anxGaM+bKBnxHupTbLbkRjOMbGuoOxd79xfHMvpwG1eNzZbxPKBRME8GCSqGSIb3
DQEJDjFCMEAwCwYDVR0PBAQDAgSwMDEGA1UdJQQqMCgGCCsGAQUFBwMBBggrBgEF
BQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEMA0GCSpwAAIAImUtDAUAAzEAW3jYaIQW
UCgG92Fjwri3SxYlWy7+Ckm+mRRBIc4pUY7krT4J2ZitbBuzLxml2UNx
-----END CERTIFICATE REQUEST-----
*/
var verifyRequest = crypto.VerifyRequest(genRequest.data);
console.log(`VerifyRequest ... ${verifyRequest.status}`);
// => '0'
var ReqInfo = crypto.GetRequestInfo(genRequest.data);
console.log(`GetRequestInfo ... ${ReqInfo.status}`);
console.log(`${ReqInfo.data.toString()}`);
/*=>
C=BY
houseIdentifier=houseIdentifier
organizationIdentifier=OrganizationIndentifier
*/