1.0.6 • Published 2 years ago
avcryptmail v1.0.6
NODEjs addon AvCryptMail
Компилируется под каждую требуемую версию nodeJS или Electron
Разрядность NODEjs зависит от разрядности используемой библиотеки AvcryptMail.dll (только x86)
Installation
$ npm install avcryptmail
$ yarn add avcryptmail
Usage
const avcrypt = require('avcryptmail');
Functions
AvCmInit
AvCmLogin
AvCmLogout
AvCmSign
AvCmImport
Используемые флаги
AvCmInit: {
AVCMF_STARTUP: 'Флаг для первоначальной инициализации библиотеки',
AVCMF_SHUTDOWN:
'Флаг для освобождения ресурсов библиотеки перед ее выгрузкой из адресного пространства процесса'
},
AvCmLogin: {
AVCMF_NO_AUTH: 'Флаг для подключение без атентификации пользователя',
AVCMF_FORCE_TOKEN_CONTROL: 'Флаг для контроля наличия вставленного носителя с личным ключом при авторизации',
AVCMF_DENY_TOKEN_CONTROL:
'Флаг для запрета контроля наличия вставленного носителя с личным ключом при авторизации',
AVCMF_IGNORE_CRL_ABSENCE: 'Флаг для игнорирования отсутствия требуемого СОС',
AVCMF_IGNORE_CRL_EXPIRE: 'Флаг для игнорирования истекшего срока действия требуемого СОС'
},
AvCmSign: {
AVCMF_REPEAT_AUTHENTICATION: 'Флаг для повторного ввода пароля к контейнеру личных ключей перед выработкой ЭЦП',
AVCMF_ADD_ALL_CERT: 'Флаг для включения всех необходимых сертификатов и СОС',
AVCMF_ADD_SIGN_CERT: 'Флаг для включения только сертификата подписанта',
AVCMF_ADD_ONLY_CERT: 'Флаг для включения только сертификатов',
AVCMF_DETACHED: 'Флаг для для использования открепленной подписи'
},
AvCmImport: {
AVCM_CERTIFICATE: 'DER-представление сертификата',
AVCM_CRL: 'DER-представление списка отозванных сертификатов',
AVCM_PKCS10_REQUEST: 'DER-представление запроса на сертификат в формате PKCS#10',
AVCM_PKCS7_REQUEST: 'DER-представление подписанной заявки на сертификат в формате PKCS#7 SignedData',
AVCM_ANY_FILE: 'Флаг для импорта сертификатов и/или СОС из файла'
}
Пример использования для подписи
console.log('Проверка AvCmInit');
console.log(avcrypt.AvCmInit(avcrypt.Flags.AvCmInit.AVCMF_STARTUP));
console.log('Проверка AvCmLogin');
console.log(aveavcryptst.AvCmLogin(avcrypt.Flags.AvCmLogin.AVCMF_IGNORE_CRL_ABSENCE));
let b64string =
'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8UnF4UG9zdEluIHNjcmlwdE5hbWU9ImNvbS5DaGFuY2VEQi5FeHBvcnQgVXNlcnNEYXRhIi8+';
let buf = Buffer.from(b64string, 'base64');
console.log(buf);
console.log('Проверка подписи');
let result = avcrypt.AvCmSign(buf, avcrypt.Flags.AvCmSign.AVCMF_DETACHED | avcrypt.Flags.AvCmSign.AVCMF_ADD_SIGN_CERT);
console.log(result.status);
console.log(JSON.stringify(result));
console.log('Проверка AvCmLogout');
console.log(avcrypt.AvCmLogout());
console.log('Очистили AvCmInit');
console.log(avcrypt.AvCmInit(avcrypt.Flags.AvCmInit.AVCMF_SHUTDOWN));
Пример использования для загрузки СОС
console.log('Проверка AvCmInit');
console.log(avcrypt.AvCmInit(avcrypt.Flags.AvCmInit.AVCMF_STARTUP));
console.log('Проверка AvCmLogin');
console.log(avcrypt.AvCmLogin(avcrypt.Flags.AvCmLogin.AVCMF_NO_AUTH));
console.log('Проверка загрузки СОС');
const crl = fs.readFileSync("$name");
console.log(avcrypt.AvCmImport(avcrypt.Flags.AvCmImport.AVCM_CRL, crl));
console.log('Проверка AvCmLogout');
console.log(avcrypt.AvCmLogout());
console.log('Очистили AvCmInit');
console.log(avcrypt.AvCmInit(avcrypt.Flags.AvCmInit.AVCMF_SHUTDOWN));