Я работаю над модулем шифрования узла, который будет подписывать/проверять. Я управлял проверочным модулем:
'использовать строгий';
константное крипто = требуется ('крипто');
const fs = требуется ('fs');
постоянный путь = требуется ('путь');
const publicKey = fs.readFileSync(path.join(__dirname, 'key.pub'));
const encryptDataPath = path.join(__dirname, 'encryptData.txt');
let encryptData = fs.readFileSync(encryptDataPath).toString();
//console.log(encryptData);
// начинаем декодирование
const plainEncryptData = Buffer.from(encryptData, 'base64').toString();
const [signatureb64, contentb64] = plainEncryptData.split('\n');
константная подпись = Buffer.from(signatureb64, 'base64');
константное содержимое = Buffer.from(contentb64, 'base64').toString();
const verifier = crypto.createVerify('RSA-SHA256');
верификатор.обновление(содержание);
верификатор.конец();
const isValid = verifier.verify (publicKey, подпись);
если (! Действительно) {
console.log('недействительно');
} еще {
console.log(содержимое);
}
Вот открытый ключ (pub.key):
-----НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApuI1XlPkYos3WsSeVPtS
l1Q2k8GnLEO5vFZ4EuSghMbqI+yE0tWVEaiptdV3KgeraALRXmH+IFrHqvSRjKQC
1ORUarBU5ntWbNER713R3K0BPOzz9OOoWHdk+Wmr4ViOTk0iD1u4bw/97RpyMoBm
+pXeBLHbEESK2kelk+LEmKUoY5nXp6KzZV5wxgD5QweZheU7mjXL5WMpIBJva8kp
RZMYXEF+USZIep0q5FHEo2AazGUMAU3GjY/dpXisLmtleOa1xlKZmkvaXl/D2Mhb
BBqPbDMa72ToZg2J8K5UP9zXUP41FHr7o9rwSJ2uOkuZPg5nhDXeoVbrJwxP/U1M
нКИДАКАБ
-----КОНЕЦ ОТКРЫТОГО КЛЮЧА-----
Вот encryptData.txt (зашифровать данные)
ZmZzeUNhcmU2Q1pTRHo2M0VrT0tGeGJUWitDMGJydnF0dzRWZDc5STJIUTJuWndPZzVoaE8rbU5keEhIMHBEak0xVUxHRGNYQ0w1Wk5maVN4M096dDJXZEowSmk4R1pGZTZOc0s1dm05SDJHd1hUR3Q0VHl1ejFkbGlqbjRwcTBSM0xLSDl6SThWT1RLNTdySWlGeVZQa0pxQzJJMkowaW1LYTZxbWpGU0hsVTVQU3BrVk9YYUxGMVJNQjBsWm5ncDcwMEJXT1k4V3FlSHlvS0pKY0NXTkpJRGRDWEw1ZWpuTXFpY0VUTzZWV25BMThkVitRQUZRS2k5SG5SR1VuVGhlYUI2QU9jcWRzMGZzWVlvM0xZZlQwbDZELzJHd0dJZXZ3LzlxMmoxVmJKcFNBUTBldTJYUlJ4Z2VFZmFlQys0MUZIZ0haNHc4UXBmb09leW1WSkN3PT0KZXlKMGVYQmxJam9pWW5KdmJucGxJaXdpWTNWemRHOXRaWEpKWkNJNklqRTJRMDlXVWxOak9YZ3lNV1pEU0c1Rklpd2laWGh3YVhKbFFYUWlPakUyTWpZMU56WXpOakl3TURBc0ltbHpWSEpwWVd3aU9uUnlkV1VzSW14cFkyVnVjMlZMWlhraU9pSmpPVEk1TldJMk9TMWlaV1UyTFRRek1XRXRPR1EzWkMwd1lqYzBNR1l3TVdOaE1tUWlMQ0pqY21WaGRHVmtRWFFpT2pFMk1qVXpOalkzTmprMU16Rjk=
Теперь я пытаюсь создать свой модуль подписи, который будет создавать данные шифрования так же, как encryptData.txt:
'использовать строгий';
константное крипто = требуется ('крипто');
const fs = требуется ('fs');
постоянный путь = требуется ('путь');
const publicKey = fs.readFileSync(path.join(__dirname, 'key.pub'));
пусть содержание = {}
content.type = "бронза";
content.customerId = "16COVRSc9x21fCHnE";
content.expireAt = 1626576362000;
content.isTrial = истина;
content.licenseKey = "c9295b69-bee6-431a-8d7d-0b740f01ca2d";
content.createdAt = 1625366769531;
const encryptDataPath = path.join(__dirname, 'encryptData.txt');
пусть a = fs.readFileSync(encryptDataPath).toString();
// подпись
const signer = crypto.createSign('RSA-SHA256');
подписывающий.обновление(содержание);
подписывающий.конец();
константная подпись = signer.sign (publicKey, 'base64');
console.log('знак:', подпись);
Но когда я запускаю этот модуль шифрования, он выдает эту ошибку:
внутренний/крипто/util.js:97
выдать новый ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: Аргумент «данные» должен быть одним из следующих типов: string, Buffer, TypedArray или DataView. Объект полученного типа
в Sign.update (внутренний/crypto/sig.js:49:10)
в Object.<anonymous> (/home/ubuntu/www/node-encrpt/encode.js:23:8)
в Module._compile (внутренний/модули/cjs/loader.js:959:30)
в Object.Module._extensions..js (внутренние/модули/cjs/loader.js:995:10)
в Module.load (внутренний/модули/cjs/loader.js:815:32)
в Function.Module._load (internal/modules/cjs/loader.js:727:14)
в Function.Module.runMain (внутренний/модули/cjs/loader.js:1047:10)
во внутреннем/основном/run_main_module.js:17:11 {
код: "ERR_INVALID_ARG_TYPE"
}
Я не могу понять, почему это происходит.
Как я могу завершить модуль шифрования?