3.0.15 • Published 5 months ago

lcryptowrap v3.0.15

Weekly downloads
25
License
-
Repository
-
Last release
5 months ago

Библиотека с криптографией

win, mac, linux (glibc)

Linux with musl work too

Installation

$ npm install lcryptowrap

or

$ 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_final

API

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 - данные
  • CreateMac(data, key) - вычисление mac-значения
  • CreateHmac(data, key) - вычисление hmac-значения
  • 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 (если возможно)
  • GenRandomSystem(size) - генерация случайности системной
  • 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
  • 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 - синхропосылка
  • Decrypt(algorithm, data, key) - расшифрование данных
    • algorithm - REQUIRED - имя алгоритма
      • belt-ctr256, belt-ecb256, belt-cbc256, belt-cfb256
    • data - REQUIRED - данные
    • key - REQUIRED - 32байтовый ключ
    • iv - OPTIONAL - синхропосылка
  • 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
  • VerifySignDigest(algorithm, digest, pubKey, sign) - подпись сообщения
    • algorithm - REQUIRED - имя алгоритма
      • bash256, bash384, bash512, belt-hash
    • digest - REQUIRED - хэш-значение
    • pubKey - REQUIRED - открытый ключ или сертификат отправителя
    • sign - 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 - открый ключ или сертификат получателя
  • 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
  • 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 - открый ключ или сертификат получателя
  • 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 - подпись
  • 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
  • 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 - подписанные данные
  • GenPrivateKey(level, password, format) - генерация токена личного ключа (защищещнного или незащищенного)
    • level - REQUIRED - уровень стойкости ключа с битах
      • 128, 192, 256
    • password - OPTIONAL - пароль к токену личного ключа или null
    • format - OPTIONAL - выходной формат
      • 0 - FORMAT_PEM
      • 1 - FORMAT_ASN1
  • 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
  • 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 - личный ключ
  • *ConvertPublicKey(format, key) - конвертирование открытого ключа
    • format - REQUIRED - вариант выходной кодировки
      • 0 - FORMAT_PEM
      • 1 - FORMAT_ASN1
    • key - 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 - запроса на сертификат
  • 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 - сертификат
  • 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 - список отозванных сертификатов
  • *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 - подписанные данные
  • *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.md

RequestINFO

    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
*/
3.0.15

5 months ago

2.0.7

1 year ago

3.0.14

1 year ago

3.0.13

1 year ago

3.0.12

2 years ago

3.0.10

2 years ago

3.0.11

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.9

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

1.5.0

2 years ago

1.4.8

3 years ago

1.4.7

3 years ago

2.0.6

3 years ago

1.4.6

3 years ago

1.4.5

3 years ago

1.4.4

3 years ago

2.0.5

3 years ago

1.4.3

3 years ago

1.4.2

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

2.0.4

4 years ago

1.3.0-beta

4 years ago

1.2.8

4 years ago

1.2.7

4 years ago

2.0.3

4 years ago

1.2.6

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

2.0.0

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.9

4 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago