Welsib — криптографическая библиотека для создания и проверки цифровых подписей по ГОСТ 34.10-2018. Доступна для Node.js, PHP и Python. Основные возможности:
Версия для Node.js (signature)
Пример приложения с демонстрацией проверки подписи (linux, GTK4, Rust) (signature)
/**
* Пример использования библиотеки Welsib для создания и проверки цифровой подписи
* @requires esig-shared
*/
// Импорт библиотеки
const esig = require('esig-shared');
/**
* Создание и проверка цифровой подписи для строки
* @param {string} message - Сообщение для подписи
* @param {Uint8Array} secretKey - Секретный ключ для подписи
* @param {Uint8Array} publicKey - Публичный ключ для проверки
* @returns {Object} Результат с подписью и статусом проверки
*/
function signAndVerify(message, secretKey, publicKey) {
// Преобразование строки в массив байт
const bytes = Buffer.from(message, 'utf8');
// Создание хеша от данных
const hash = esig.digest(bytes);
// Создание цифровой подписи
const signature = esig.sign(hash, secretKey);
// Проверка цифровой подписи
const isVerified = esig.verify(hash, signature, publicKey);
// Конвертация подписи в различные форматы
return {
signature: {
base64: Buffer.from(signature).toString('base64'),
base64url: Buffer.from(signature).toString('base64url'),
hex: Buffer.from(signature).toString('hex')
},
verified: isVerified
};
}
// Пример использования
const message = "Hello, World!";
const result = signAndVerify(message, certified_secret_key, certified_public_key);
console.log("Цифровая подпись:", result.signature.hex);
console.log("Подпись проверена:", result.verified);
Получите тестовый лицензионный ключ, чтобы начать работу с библиотекой. Платный ключ можно приобрести у наших продавцов, а также вы можете стать продавцом, запросив квоту через чат с владельцем ресурса.
{{ code }}
Библиотеку можно скачать здесь.
Вернуться к перечню товаров. При этом информация хранимая браузером о ключе будет удалена
Проверка цифровых подписей осуществляется с использованием публичного ключа. Подлинность подписи гарантируется только при надежном хранении секретного ключа и криптостойкостью ГОСТ 34.10-2018.
/**
* @param {Uint8Array} license_key_bytes
* @param {string} request_init_json
* @param {Uint8Array} multi_signature_bytes
* @param {Uint8Array} client_private_key_bytes
*/
export function activate(license_key_bytes: Uint8Array, request_init_json: string, multi_signature_bytes: Uint8Array, client_private_key_bytes: Uint8Array): void;
/**
* @param {Uint8Array} signature_bytes
* @returns {boolean}
*/
export function is_not_test_signature_proof(signature_bytes: Uint8Array): boolean;
/**
* @param {string} request_init_json
* @param {Uint8Array} multi_signature_bytes
* @returns {boolean}
*/
export function activation_proof(request_init_json: string, multi_signature_bytes: Uint8Array): boolean;
/**
* @returns {boolean}
*/
export function is_activated(): boolean;
/**
* @returns {boolean}
*/
export function is_test_mode(): boolean;
/**
* @param {Uint8Array} data
* @returns {Uint8Array}
*/
export function digest(data: Uint8Array): Uint8Array;
/**
*/
export function digest_init(): void;
/**
* @param {Uint8Array} bytes
*/
export function digest_update(bytes: Uint8Array): void;
/**
* @returns {Uint8Array}
*/
export function digest_finalize(): Uint8Array;
/**
* @returns {Uint8Array}
*/
export function make_signing_key(): Uint8Array;
/**
* @param {Uint8Array} signing_key
* @returns {Uint8Array | undefined}
*/
export function make_verifying_key(signing_key: Uint8Array): Uint8Array | undefined;
/**
* @returns {Uint8Array}
*/
export function make_keypair(): Uint8Array;
/**
* @param {Uint8Array} hash
* @param {Uint8Array} signing_key
* @returns {Uint8Array}
*/
export function sign(hash: Uint8Array, signing_key: Uint8Array): Uint8Array;
/**
* @param {Uint8Array} hash
* @param {Uint8Array} secret_key
* @param {Uint8Array} agg_sign_public
* @param {Uint8Array} sign_secret
* @returns {Uint8Array | undefined}
*/
export function agg_sign(hash: Uint8Array, secret_key: Uint8Array, agg_sign_public: Uint8Array, sign_secret: Uint8Array): Uint8Array | undefined;
/**
* @param {Uint8Array} public_keys
* @returns {Uint8Array | undefined}
*/
export function agg_public_keys(public_keys: Uint8Array): Uint8Array | undefined;
/**
* @param {Uint8Array} signatures
* @returns {Uint8Array}
*/
export function agg_signatures(signatures: Uint8Array): Uint8Array;
/**
* @param {Uint8Array} hash
* @param {Uint8Array} signature
* @param {Uint8Array} verifying_key
* @returns {boolean}
*/
export function verify(hash: Uint8Array, signature: Uint8Array, verifying_key: Uint8Array): boolean;
/**
* @param {Uint8Array} license_key_bytes
* @param {string} rustore_token_bytes
* @returns {string}
*/
export function activate_init(license_key_bytes: Uint8Array, rustore_token_bytes: string): string;
/**
* @param {string} response_init_json
* @returns {string}
*/
export function activate_run(response_init_json: string): string;
/**
* @param {string} response_run_json
* @returns {string}
*/
export function activate_done(response_run_json: string): string;
/**
* @returns {string}
*/
export function make_talon(): string;
/**
* @param {string} digital_convert
* @param {string} talon_public
* @param {string} talon_secret
* @returns {string}
*/
export function extract_digital_convert(digital_convert: string, talon_public: string, talon_secret: string): string;
/**
* @param {Uint8Array} hash
* @param {Uint8Array} signature
* @returns {boolean}
*/
export function verify_digital_convert(hash: Uint8Array, signature: Uint8Array): boolean;
Для связи с автором и обсуждения покупки ключей, пожалуйста, используйте всплывающий чат jivosite на сайте https://welsib.ru.
Не упустите возможность улучшить безопасность своих данных с библиотекой esig! Оставьте свои отзывы и предложения, чтобы мы могли сделать продукт еще лучше.