Upload Kmake

This commit is contained in:
Gorochu
2026-05-26 23:36:42 -07:00
parent ba051b2f74
commit 555ec72358
41615 changed files with 13344630 additions and 1 deletions

144
test/fixtures/crypto/aes_cbc.js vendored Normal file
View File

@ -0,0 +1,144 @@
'use strict';
module.exports = function() {
const kPlaintext =
Buffer.from('546869732073706563696669636174696f6e206465736372696265' +
'732061204a6176615363726970742041504920666f722070657266' +
'6f726d696e672062617369632063727970746f6772617068696320' +
'6f7065726174696f6e7320696e20776562206170706c6963617469' +
'6f6e732c20737563682061732068617368696e672c207369676e61' +
'747572652067656e65726174696f6e20616e642076657269666963' +
'6174696f6e2c20616e6420656e6372797074696f6e20616e642064' +
'656372797074696f6e2e204164646974696f6e616c6c792c206974' +
'2064657363726962657320616e2041504920666f72206170706c69' +
'636174696f6e7320746f2067656e657261746520616e642f6f7220' +
'6d616e61676520746865206b6579696e67206d6174657269616c20' +
'6e656365737361727920746f20706572666f726d20746865736520' +
'6f7065726174696f6e732e205573657320666f7220746869732041' +
'50492072616e67652066726f6d2075736572206f72207365727669' +
'63652061757468656e7469636174696f6e2c20646f63756d656e74' +
'206f7220636f6465207369676e696e672c20616e64207468652063' +
'6f6e666964656e7469616c69747920616e6420696e746567726974' +
'79206f6620636f6d6d756e69636174696f6e732e', 'hex');
const kKeyBytes = {
'128': Buffer.from('dec0d4fcbf3c4741c892dabd1cd4c04e', 'hex'),
'256': Buffer.from('67693823fb1d58073f91ece9cc3af910e5532616a4d27b1' +
'3eb7b74d8000bbf30', 'hex')
}
const iv = Buffer.from('55aaf89ba89413d54ea727a76c27a284', 'hex');
const kCipherText = {
'128': Buffer.from(
'237f03fee70872e78faec148ddbd01bd77cb96e3381ef4ece2afea17a7afd37' +
'ccbe461df9c4d58aea6bbbae1b05cfab1e129877cd756c6867c319a3ce05da5' +
'0cbef5f1a4f7dce345f269d06cdec1df00e2d927a04e93bf2699e8ceddfe19b' +
'9f907b5d76862a3c2a167a1eda70af2255002ffad60146aaa6e5026887f1055' +
'f44eac386a0373823aba81ecfffbb270189f52fc01b2845c287d12877440b21' +
'fae577272da4e6f00effc4f3f773a764e37f92482e1cd0d4c61d6faaee84367' +
'd3b2ce2081bcf364473f9a9fc87d228a2749824b61cbcc6ff44bbab52bcfaf9' +
'262cf1b175a90a113ebc75d62ee48869ddccf42a7ec5e390003cafa371aa314' +
'85bf43143f96cb57d82c39bcec40506f441a0c0aa35203bf1347bac4b154f40' +
'74e29accb1be1e76cce8dddfdccdc8614823671517fc51b65799fdfc173be0c' +
'99aee7c45c8e9c3dbd031299cebe3aff9a7342176b5edc9cdce4f14206b82ce' +
'ef933f06d8ed0bd0b7546aad9aad842e712af79dd101d8b37675bef6f1d6c5e' +
'b38a8649821d45b6c0f996a54f2f5bcbe23f57343cacbfbeb3ab9bcd58ac6f3' +
'b28c6fad194b173c8282ba5a74374409ff051fdeb898431dfd6ac35072fb8df' +
'783b33217c93dd1b3c10fe187373d64b496188d6d1b16a47fed35e3968aaa82' +
'3255dcbc7261c54', 'hex'),
'256': Buffer.from(
'29d5798cb5e3c86164853ae36a73193f4d331a39ee8c633f47d38054731aec3' +
'46751910e65a1b53a87c138a7d6dc053455deb71b6586569b40947cd4dbfb41' +
'2a202c80023280dd16ee38bd531c7a799dd7879780e9c141be5694bf8cc4780' +
'8ac64a6fe29f54b3806a6f4b26fea17046b061684bbe61147ac71ee4904b45a' +
'674d2533767081eec707de7aad1ee8b2e9ea90620eea704d443e3e9fe665622' +
'b02cc459c566880228007ad5a7821683b2dfb5d33f0e83c5ebd865a14b87a1d' +
'e155d526749f50456aa8ecc9458c62f02da085e16a2df5d4a0b0801b7299b69' +
'091d648c48ab7573df59638529ee032727d7aaca181ea463ff5881e880980dc' +
'e59ddec395bd46084728c35d1b07eaa4af66c99573f8b37d427ac21a3ddac6b' +
'5988cc730941f0ef1c5034680ef20560fd756f5be5f8d296f00e81c984357c5' +
'ff760dfb475416e786bcaf738a25c705eec70263cb4b3ee71596ef5ec9b9db3' +
'ad2e497834c94683c4a5206a831fbb603e8add2c91365a6075e0bc2d392e54b' +
'f10f32bb24af4ee362e0035fd15d7e70b21d126cf1e84fd22902eed0beab869' +
'3bcbfe57a20d1a67681df82d6c359435eda9bb90090ff84d5193b53f2394594' +
'6d853da31ed6fe36a903d94d427bc1ccc76d7b31badfe508e6a4abc491e10a6' +
'ff86fa4d836e1fd', 'hex')
};
const kBadPadding = {
'128': {
zeroPadChar: Buffer.from('ee1bf8a9da8aa456cf6624df06a64d0e', 'hex'),
bigPadChar: Buffer.from('5b437768fceeaf90114b0ca3d4342e33', 'hex'),
inconsistentPadChars:
Buffer.from('876570d0036ae21419db4f5e3ad4f2c0', 'hex')
},
'256': {
zeroPadChar: Buffer.from('01fd8dd61ec1fe448cc89d6ec859b181', 'hex'),
bigPadChar: Buffer.from('58076edd4a22616d6319bdde5e5a1b3c', 'hex'),
inconsistentPadChars:
Buffer.from('98363c943b88c1154d8caa43784a6a3e', 'hex')
}
};
const kKeyLengths = [128, 256];
const passing = [];
kKeyLengths.forEach((keyLength) => {
passing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: { name: 'AES-CBC', iv },
plaintext: kPlaintext,
result: kCipherText[keyLength]
});
});
const failing = [];
kKeyLengths.forEach((keyLength) => {
failing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: {
name: 'AES-CBC',
iv: iv.slice(0, 8)
},
plaintext: kPlaintext,
result: kCipherText[keyLength]
});
const longIv = new Uint8Array(24);
longIv.set(iv, 0);
longIv.set(iv.slice(0, 8), 16);
failing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: { name: 'AES-CBC', iv: longIv },
plaintext: kPlaintext,
result: kCipherText[keyLength]
});
});
// Scenarios that should fail decryption because of bad padding
const decryptionFailing = [];
kKeyLengths.forEach(function(keyLength) {
[
'zeroPadChar',
'bigPadChar',
'inconsistentPadChars'
].forEach((paddingProblem) => {
const badCiphertext =
new Uint8Array(kCipherText[keyLength].byteLength);
badCiphertext.set(
kCipherText[keyLength]
.slice(0, kCipherText[keyLength].byteLength - 16));
badCiphertext.set(kBadPadding[keyLength][paddingProblem]);
decryptionFailing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: { name: 'AES-CBC', iv },
plaintext: kPlaintext,
result: badCiphertext
});
});
});
return { passing, failing, decryptionFailing };
};

99
test/fixtures/crypto/aes_ctr.js vendored Normal file
View File

@ -0,0 +1,99 @@
'use strict';
module.exports = function() {
const kPlaintext =
Buffer.from('546869732073706563696669636174696f6e206465736372696265' +
'732061204a6176615363726970742041504920666f722070657266' +
'6f726d696e672062617369632063727970746f6772617068696320' +
'6f7065726174696f6e7320696e20776562206170706c6963617469' +
'6f6e732c20737563682061732068617368696e672c207369676e61' +
'747572652067656e65726174696f6e20616e642076657269666963' +
'6174696f6e2c20616e6420656e6372797074696f6e20616e642064' +
'656372797074696f6e2e204164646974696f6e616c6c792c206974' +
'2064657363726962657320616e2041504920666f72206170706c69' +
'636174696f6e7320746f2067656e657261746520616e642f6f7220' +
'6d616e61676520746865206b6579696e67206d6174657269616c20' +
'6e656365737361727920746f20706572666f726d20746865736520' +
'6f7065726174696f6e732e205573657320666f7220746869732041' +
'50492072616e67652066726f6d2075736572206f72207365727669' +
'63652061757468656e7469636174696f6e2c20646f63756d656e74' +
'206f7220636f6465207369676e696e672c20616e64207468652063' +
'6f6e666964656e7469616c69747920616e6420696e746567726974' +
'79206f6620636f6d6d756e69636174696f6e732e', 'hex');
const kKeyBytes = {
'128': Buffer.from('dec0d4fcbf3c4741c892dabd1cd4c04e', 'hex'),
'256': Buffer.from('67693823fb1d58073f91ece9cc3af910e5532616a4d27b1' +
'3eb7b74d8000bbf30', 'hex')
}
const counter = Buffer.from('55aaf89ba89413d54ea727a76c27a284', 'hex');
const kCiphertext = {
'128': Buffer.from(
'e91175fda4f5ea57c52b0d000bbe98af68c0a59058aeed8ab5b7063503a1ce4' +
'70d79dad174f90aaafaa5449d848dc8b2c557d1e7fa4b9a41a2fb1e9fea1414' +
'b593dab40c04f14b4f81400fe43c93990181b096a15561169aea177f100416e' +
'20b6810b00ee1b04fef67f3bede28baf4d41d397daf1511e9020d7766e9e604' +
'10de38e1432dbffa0f992dc1f0d4756544e8c765af7df706f90e009db9384c3' +
'3e44dea543c2a77bbd52022de41e7d71a498de7feb9760eb47e503366c88dcc' +
'2d1a387788de2d8f78e72c2bdd8815bc8a54e8d0eee275683ca5041290f031a' +
'd5a4454efa17cc4907718f3ef4b75fedbd13583254f441a15a8a3323b12f40b' +
'8fbebc816cf9b468d8d7a5a0fb548498c39a6ed84615f894929838aef8e3016' +
'60f76b632493f23709fedfd5e107f78267f331b60a38c146f9710484a4acdef' +
'f110b3b7745ff83aa8cb5de9e15b11e20a785572041f2852a1981156edcf07e' +
'46eb64144449cce74b9cc94163a6fda8ae19219721d60b757b5b5ec718dabd5' +
'0954b6e6a393f656f6346f40229d0c50e01c15701f2a4fe5d25a174edf9b90e' +
'e0c0ebf9e06b5fe00558638a1ea3781403b0c9206d9e814d6a79fb7a56060e1' +
'c7176af36c6a1ad635981a9bfd8007d8cf6d9f93f0e8e22b93a9a2ccd7090ab' +
'1df63cea3f040', 'hex'),
'256': Buffer.from(
'37529a432f50ba4e53385f8266ec3deccceceade7ae29395e9291076c95bb9a' +
'24f4792fcdd6ea5894b815edb5d5e4022fabe055a06b1a7e01979555b579838' +
'64bf23019cb1b37ffdadb057f728cfb2af0a33d146344cfba0accb4dbf613a7' +
'bee523ca6d6860e474a9c0f4d068d4c0acd94cc55cbf21e4285ca15116c9702' +
'0f2c33b4585008f8fe97c9e29c0627c5d47c48d94be88b9b16c7f2df740a8d2' +
'a07556305b82b919f7a87ca2ed19db27262c277c213f2a7eca25e5a6adbea43' +
'0ba2e1061198171054285aff9e0869c638dcd524cbf1f255da675acad6d7867' +
'9a9958b7a8f9bb21dd9c580ad196f9a0e4c6a6500d7bb21df74cd5934ce3c4d' +
'8d1f39d34a2adb58d224c48097887cde9d3be146a3ea3bade4c6864cf9e445b' +
'5c4c2b3ef4e2b8f5eea0ab1c0b9abe7a4fe5b2c0b1d94df6b12953d3273260e' +
'80bd094dec97a3177a9cec0b5042be1804040c9439403b8f72f7426fa756ad6' +
'266cf2c8659e740329dd0d24f9f85497662cad739f71d6174011c77f8f31fb4' +
'4226288dfb86817ef17116321c71bb9ed97db6e990f62058580f006683431f2' +
'29662f1d5e3cdaffe0335467ca72635688c939ec8b32d6465f651a635f73c0a' +
'4e7f0aadb0e81f5bcbfaec2671ac97fdc2fd32f24c941775c37a6810d4b171b' +
'c8aba90a86603', 'hex')
};
const kKeyLengths = [128, 256];
const passing = [];
kKeyLengths.forEach((keyLength) => {
passing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: {name: 'AES-CTR', counter, length: 64},
plaintext: kPlaintext,
result: kCiphertext[keyLength]
});
});
const failing = [];
kKeyLengths.forEach((keyLength) => {
failing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: {name: 'AES-CTR', counter, length: 0},
plaintext: kPlaintext,
result: kCiphertext[keyLength]
});
failing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: {name: 'AES-CTR', counter, length: 129},
plaintext: kPlaintext,
result: kCiphertext[keyLength]
});
});
return { passing, failing, decryptionFailing: [] };
};

134
test/fixtures/crypto/aes_gcm.js vendored Normal file
View File

@ -0,0 +1,134 @@
'use strict';
module.exports = function() {
const kPlaintext =
Buffer.from('546869732073706563696669636174696f6e206465736372696265' +
'732061204a6176615363726970742041504920666f722070657266' +
'6f726d696e672062617369632063727970746f6772617068696320' +
'6f7065726174696f6e7320696e20776562206170706c6963617469' +
'6f6e732c20737563682061732068617368696e672c207369676e61' +
'747572652067656e65726174696f6e20616e642076657269666963' +
'6174696f6e2c20616e6420656e6372797074696f6e20616e642064' +
'656372797074696f6e2e204164646974696f6e616c6c792c206974' +
'2064657363726962657320616e2041504920666f72206170706c69' +
'636174696f6e7320746f2067656e657261746520616e642f6f7220' +
'6d616e61676520746865206b6579696e67206d6174657269616c20' +
'6e656365737361727920746f20706572666f726d20746865736520' +
'6f7065726174696f6e732e205573657320666f7220746869732041' +
'50492072616e67652066726f6d2075736572206f72207365727669' +
'63652061757468656e7469636174696f6e2c20646f63756d656e74' +
'206f7220636f6465207369676e696e672c20616e64207468652063' +
'6f6e666964656e7469616c69747920616e6420696e746567726974' +
'79206f6620636f6d6d756e69636174696f6e732e', 'hex');
const kKeyBytes = {
'128': Buffer.from('dec0d4fcbf3c4741c892dabd1cd4c04e', 'hex'),
'256': Buffer.from('67693823fb1d58073f91ece9cc3af910e5532616a4d27b1' +
'3eb7b74d8000bbf30', 'hex')
}
const iv = Buffer.from('3a92732aa6ea39bf3986e0c73fa920002' +
'02175385ef8adeac2c87335eb928dd4', 'hex');
const additionalData = Buffer.from(
'5468657265206172652037206675727468657220656469746f72696' +
'16c206e6f74657320696e2074686520646f63756d656e742e', 'hex');
const tag = {
'128': Buffer.from('c2e2c6fdef1cc5f07bd8b097efc8b8b7', 'hex'),
'256': Buffer.from('bceff1309f15d500f12a554cc21c313c', 'hex')
};
const tag_with_empty_ad = {
'128': Buffer.from('de330b1724defaf81b621e519623dcc6', 'hex'),
'256': Buffer.from('f4ba56cb9a25bff8f6398b82e02fd9ee', 'hex')
};
// AES-GCM produces ciphertext and a tag.
const kCiphertext = {
'128': Buffer.from(
'b4f128b7693493eee0afafeca8f4f17909cae1ed38d8fdfeba666fcfe4be82b19ff6' +
'0635f971e4fe517efdbf642bfb936b5ba6e7c9f1b4d6702f7ba4ba86364116b5c952' +
'ec3b348bac2729597b3e66a75296fa5d60a98759f5ffa4c0a99f19108b914c049083' +
'94c5cc2e176ec1e47f78f21836f0b5a262f4f944867a7e97266c7444966d26c2159f' +
'8ccdb7236197ba789116eb16d2dfbb8fa2b75dc468336035eafab84ced9d25cbe257' +
'de4bf05fdade4051a54bc9d8be0d74d945422fa144f74afd9db5a27935205b7ce669' +
'e011bb323d4d674f4739a374ea951b69181f9f0380822a5e7dc88efb94c91195e854' +
'321112cbbae2a4e3ca4c4110a3e084341f658148ab9f2ab1fd6256c95f753e0ccd4e' +
'247ec47959b925a142b575ba477c846e781bf6a3120d5ac87f52d1f1aa49f78960f4' +
'fefb77479c1b6b35212d16009030200b74157df6d9ab9ee08eea8df2a8599a42e3a1' +
'b66001584e0c07ef1ece1f596f6b2a25f194e80108fb7592b70930275e3b46e61aa5' +
'619c8c8d1f3e0ace3730cf00c5cac56c85af5004109adfff04c4bcb2f01d0d7805e1' +
'ca0323e19e5c9849cd6b9de0f563c2ab9cf5f7b7a5283ec86e1d97ce64af5824f25a' +
'045249fa8cf5d9099923f2ce4ec579730f508065bff05b97f93e3ef412031187ded2' +
'5d957b', 'hex'),
'256': Buffer.from(
'0861eb7146208783d2d17ca0ffb6091d7dc11bf0812e0289a98e3d079136aacf9f6f' +
'275f573fa21b0612dbd774225a3972f4669143063398f7a5f27464dbb148b1116e43' +
'5ddb64d914cf599a2d25695343a28ceb8128b1caae3694379cc1e8f986a3c3337274' +
'4126496360f9e0451177babcb52b4e9c4c8ae23f05f8095e1a0102eb27ae4a2fb716' +
'282f2f0d64770c43b2b838a7ee8f0d2cd0b9976c0611347ab6d2cf2adb254a5e7e24' +
'f9252004da2cee4538db1f4dad2ebb672470d5fc2857a4f0a39f20817db26c2f1c1f' +
'242a73240e91c39cbf2ea3f9b51f5a491e4839df3f3c4f8c0e751f91de9c79ed2091' +
'8f600cfe2315153ba8ab9ad9003bcaaf67d6c0af1a122b36b0de4b16077afde0913d' +
'2ad049ed548dd1d5e42ef43b0944062358bd0a3e09551c2c521399a0b2f038a0f4c9' +
'ad4d3d14e31eb4a71069b9c15fcf2917864ec6b65d1859f7e74be9c289f272c2be82' +
'8aee5e89c1c27389becfa9539b0ed2a081c3a1eaddff7243620c5d2941b7f467f765' +
'52f67d577d4e15ba66cd142820c9ae0f34f0d9b4a26c06d3291287e8b812bca99dbe' +
'4ca64bb07f27fb16cb995031f17c89977bcc2b9fbeb1c41275a92e98fb2d19a41b91' +
'd6e4370f0283d850ffccaf643b910f6728212dffc8feac8a143a57b6c094db2958e6' +
'e546f9', 'hex')
};
const kKeyLengths = [128, 256];
const kTagLengths = [32, 64, 96, 104, 112, 120, 128];
const passing = [];
kKeyLengths.forEach((keyLength) => {
kTagLengths.forEach((tagLength) => {
const byteCount = tagLength / 8;
const result =
new Uint8Array(kCiphertext[keyLength].byteLength + byteCount);
result.set(kCiphertext[keyLength], 0);
result.set(tag[keyLength].slice(0, byteCount),
kCiphertext[keyLength].byteLength);
passing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: { name: 'AES-GCM', iv, additionalData, tagLength },
plaintext: kPlaintext,
result
});
const noadresult =
new Uint8Array(kCiphertext[keyLength].byteLength + byteCount);
noadresult.set(kCiphertext[keyLength], 0);
noadresult.set(tag_with_empty_ad[keyLength].slice(0, byteCount),
kCiphertext[keyLength].byteLength);
passing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: { name: 'AES-GCM', iv, tagLength },
plaintext: kPlaintext,
result: noadresult
});
});
});
const failing = [];
kKeyLengths.forEach((keyLength) => {
[24, 48, 72, 95, 129].forEach((badTagLength) => {
failing.push({
keyBuffer: kKeyBytes[keyLength],
algorithm: {
name: 'AES-GCM',
iv,
additionalData,
tagLength: badTagLength
},
plaintext: kPlaintext,
result: kCiphertext[keyLength]
});
});
});
return { passing, failing, decryptionFailing: [] };
};

113
test/fixtures/crypto/ecdsa.js vendored Normal file
View File

@ -0,0 +1,113 @@
'use strict';
module.exports = function() {
const pkcs8 = {
'P-384': Buffer.from(
'3081b6020100301006072a8648ce3d020106052b8104002204819e30819b02010104' +
'3002a9a0d899efa87e7564110907e9d82c21bd6265a37abd9a6fdb0f80ec844dd3a1' +
'425320d67ddc30f5db74efb9a2e661a164036200041d319d692dca5f5754ba7b32c1' +
'1642c6d8d2b4fb8249c3f214d71e90b5252966d97f7beb1faab1e4f3e2605549c2ee' +
'db520329b3bea6b5e55624a15150a16966635f1916ef04dd758e69409d0633cb4b25' +
'994179b22a769c743436910e799951', 'hex'),
'P-521': Buffer.from(
'3081ee020100301006072a8648ce3d020106052b810400230481d63081d302010104' +
'4201533e618f98ead1b513ec8878c8820d377a36d8f03f2ba046c931825a3d358730' +
'c0b26033dbb7f7e4a3d4434a035e24b707f9124766176e1af0b85df22eaaba9c25a1' +
'8189038186000400a6deecfb489117f1e41cc4a064073d8673086e51db25086e8db7' +
'64d4eff60aad6358fdcf967ac68459275e2a804f8eeeb7e4c4284b1451c0a5ea76fe' +
'7007ac054701c5eddaf9a89e7c4fdcc924c737d8f585da9703a954c23be7c14aafa6' +
'6654b256770a938e7f26e700c603931c7bd0bdb5d0632c7d1eab466f09d976c24a32' +
'3e1b7c', 'hex')
}
const spki = {
'P-384': Buffer.from(
'3076301006072a8648ce3d020106052b81040022036200041d319d692dca5f5754ba' +
'7b32c11642c6d8d2b4fb8249c3f214d71e90b5252966d97f7beb1faab1e4f3e26055' +
'49c2eedb520329b3bea6b5e55624a15150a16966635f1916ef04dd758e69409d0633' +
'cb4b25994179b22a769c743436910e799951', 'hex'),
'P-521': Buffer.from(
'30819b301006072a8648ce3d020106052b81040023038186000400a6deecfb489117' +
'f1e41cc4a064073d8673086e51db25086e8db764d4eff60aad6358fdcf967ac68459' +
'275e2a804f8eeeb7e4c4284b1451c0a5ea76fe7007ac054701c5eddaf9a89e7c4fdc' +
'c924c737d8f585da9703a954c23be7c14aafa66654b256770a938e7f26e700c60393' +
'1c7bd0bdb5d0632c7d1eab466f09d976c24a323e1b7c', 'hex')
}
const plaintext = Buffer.from(
'5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac421779df9d55d' +
'180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b3c0e81fc47cacf8315a2af66' +
'324113c3b66230c34608c4f4593634ce02b267362277f0a840ca74bc3d1a6236952c5e' +
'd7aaf8a8fecbddfa7584e6978cea5d2a5b9fb7f1b48c8b0be58a305202754d83761073' +
'74793cf026aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d910ea3' +
'80984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c248028af3726cc9' +
'3463882ea8c02aab', 'hex');
// For verification tests.
const signatures = {
'P-384': {
'SHA-1': Buffer.from(
'65fe070ec3eac35250d00b9ee6db4d2dadd5f3bbb9c495c8671d2a0d2b99149fb2' +
'4f88af074e0b903268b3d0ed5f0e14685796b28fe34b2d8edcdf10845b24cf79b3' +
'3627d8bd2c81621cb51e030c21a43abb0a8740fac26f8522e683c367ac96', 'hex'),
'SHA-256': Buffer.from(
'4bc2dfea3bcda4fbb4fd927b030f9b80b1f5d2ad9bb7aa06293869577120b2b1d0' +
'ef11ccd9fed0714aab36bef63928f784f53c7e09df93e9b3e5b0c883cf720951b4' +
'fe2382c7842edcfcd45d956a72d29a4030a038a900e6f7dd857a5650d3e8', 'hex'),
'SHA-384': Buffer.from(
'0dd9c2c7f0b6f4d9328254a902e87374b3c092195e6be21aa1a6dcd8eba60f7b0b' +
'38c4006dfa2146d4e9fd23dc336179974017493a1f4f74eecfe455be3da9ed9964' +
'1d81610dfeb468b607da941d5714e7b51aee2c45aa0e9c4da021b2370090', 'hex'),
'SHA-512': Buffer.from(
'72fbdb369fd34c1c54264d07f4facd69b02e4206f8a8bb259b882a305c56fde2d3' +
'5107e493c53cd6b4af0b31306f4d03fd43cfc762a1030e17a3d775453a1212b142' +
'9f7b3d93066a5f42a10b138cd177dc09616e827d598822d78d4627b754e6', 'hex')
},
'P-521': {
'SHA-1': Buffer.from(
'01781a17a60e43126960fd396e1210916c2115ca4428d968389c4b46c1553674ce' +
'937b8e21700ce60932ae0f575ca187dd597720db839eb1f20c7e3394787559dcd5' +
'00207e570df5c7e4ad9fc0a5f72065e9ce1c9e3d12ca5e6dd9f44fe128561b75f4' +
'226c4fadf23d83536cc669ea4098e373b6cb919c8b5cfc0505a67d96b276a46a3d',
'hex'),
'SHA-256': Buffer.from(
'0174dba77b14d73f66f5716786a3e5a8d7c931445e6d320a9229d961d8a1b3efd1' +
'1a5ea33c79495ac599bbb68a641a849d58d83ef854cc265fa6c917dff6ee435a67' +
'01b3d5527dac20fb0a7033c3fe79744eacef7b3ffc27b64dc863f86f42982cb222' +
'9245fe9de48aa59eb653d4497086d911a5bd270e95c51e7e98f7a5863fc7fb065c',
'hex'),
'SHA-384': Buffer.from(
'01f77db1e51378e117c5b8bec8a03f9657d244c54e837908bf7101255f4151525d' +
'9e89cf7f54631b3368919d3824ff9f7f78fe81239a1a9fde2b7a83e95ca6a0ca11' +
'01b98b1da4ed00ec769367e9958b8047d47f92ab8bff96f1330bf948c92209011b' +
'8cdbb496d464dbb916720eb702bdad928c99b980b76504e0ad1c12b4a85731c70c',
'hex'),
'SHA-512': Buffer.from(
'00b2caaf6798519a9d36dbfafe786b2fba1cc2acb99593c177b36e3a1ceeb70227' +
'5ae23cfcca0aad78f6b6dee6b4718b95d0d1a715aa3378470e50b516c18e0f3305' +
'01f0071e6a32867fa70f695cd39c4e87e142b9e4134d38740bd6fee354a575167e' +
'13524e94832637910fe11e53a85fb21b91adb81bb1779c4e2b8bc87c717dc35084',
'hex')
}
}
const curves = ['P-384', 'P-521'];
const hashes = ['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512'];
const vectors = [];
curves.forEach((namedCurve) => {
hashes.forEach((hash) => {
vectors.push({
publicKeyBuffer: spki[namedCurve],
privateKeyBuffer: pkcs8[namedCurve],
name: 'ECDSA',
namedCurve,
hash,
plaintext,
signature: signatures[namedCurve][hash]
});
})
});
return vectors;
}

51
test/fixtures/crypto/eddsa.js vendored Normal file
View File

@ -0,0 +1,51 @@
'use strict';
module.exports = function() {
const pkcs8 = {
'Ed25519': Buffer.from(
'302e020100300506032b657004220420f3c8f4c48df878146e8cd3bf6df4e50e389b' +
'a7074e15c2352dcd5d308d4ca81f', 'hex'),
'Ed448': Buffer.from(
'3047020100300506032b6571043b04390eff03458c28e0179c521de312c969b78343' +
'48ecab991a60e3b2e9a79e4cd9e480ef291712d2c83d047272d5c9f428664f696d26' +
'70458f1d2e', 'hex')
}
const spki = {
'Ed25519': Buffer.from(
'302a300506032b6570032100d8e18963d809d487d9549accaec6742e7eeba24d8a0d' +
'3b14b7e3caea06893dcc', 'hex'),
'Ed448': Buffer.from(
'3043300506032b6571033a00ab4bb885fd7d2c5af24e83710cffa0c74a57e274801d' +
'b2057b0bdc5ea032b6fe6bc78b8045365aeb26e86e1f14fd349d07c48495f5a46a5a' +
'80', 'hex')
}
const data = Buffer.from(
'2b7ed0bc7795694ab4acd35903fe8cd7d80f6a1c8688a6c3414409457514a1457855bb' +
'b219e30a1beea8fe869082d99fc8282f9050d024e59eaf0730ba9db70a', 'hex');
// For verification tests.
const signatures = {
'Ed25519': Buffer.from(
'3d90de5e5743dfc28225bfadb341b116cbf8a3f1ceedbf4adc350ef5d3471843a418' +
'614dcb6e614862614cf7af1496f9340b3c844ea4dceab1d3d155eb7ecc00', 'hex'),
'Ed448': Buffer.from(
'76897e8c50ac6b1132735c09c55f506c0149d2677c75664f8bc10b826fbd9df0a03c' +
'd986bce8339e64c7d1720ea9361784dc73837765ac2980c0dac0814a8bc187d1c9c9' +
'07c5dcc07956f85b70930fe42de764177217cb2d52bab7c1debe0ca89ccecbcd63f7' +
'025a2a5a572b9d23b0642f00', 'hex')
}
const algorithms = ['Ed25519', 'Ed448'];
const vectors = algorithms.map((algorithm) => ({
publicKeyBuffer: spki[algorithm],
privateKeyBuffer: pkcs8[algorithm],
name: algorithm,
data,
signature: signatures[algorithm],
}));
return vectors;
}

52
test/fixtures/crypto/hmac.js vendored Normal file
View File

@ -0,0 +1,52 @@
'use strict';
module.exports = function () {
const plaintext = Buffer.from(
'5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac421779df9d55d' +
'180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b3c0e81fc47cacf8315a2af66' +
'324113c3b66230c34608c4f4593634ce02b267362277f0a840ca74bc3d1a6236952c5e' +
'd7aaf8a8fecbddfa7584e6978cea5d2a5b9fb7f1b48c8b0be58a305202754d83761073' +
'74793cf026aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d910ea3' +
'80984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c248028af3726cc9' +
'3463882ea8c02aab', 'hex');
const raw = {
'SHA-1': Buffer.from('47a20746d17179db65e0a79dedffc7fdf181081b', 'hex'),
'SHA-256': Buffer.from(
'e588ec0811463d767241df1074b47ae4071b51f2ce36537ba69ccdc3fdc2b7a8',
'hex'),
'SHA-384': Buffer.from(
'6b1da28eab1f582ad9718effe05e23d5fd2c9877a2d9443f90bec093bece2ea7' +
'd2354cd0bdc5e147d2e9009373494488', 'hex'),
'SHA-512': Buffer.from(
'5dcc359443aaf652fa1375d6b3e61fdcf29bb4a28bd5d3dcfa40f82f906bb280' +
'0455db03b5d31fb972a15a6d0103a24e56d156a119c0e5a1e92a44c3c5657cf9',
'hex')
}
const signatures = {
'SHA-1': Buffer.from('0533902a99f8524ee50af01d38dedce133d98ca0', 'hex'),
'SHA-256': Buffer.from(
'85a40cea2e078c2827a3953ffb66c27b291a472b0d70a0000b45d823803eeb54',
'hex'),
'SHA-384': Buffer.from(
'217c3d50f0ba9a6d6eae1efdd7a518fe2e3880b582a40d061e9099c1e026ef58' +
'82548b5d5cecdd5598d99b6b6f3057ff', 'hex'),
'SHA-512': Buffer.from(
'61fb278c3ffb0cce2bf1cf723ddfd8ef1f931c0c618c25907324605939e3f9a2' +
'c6f4af690bda3407dc2f5770f6a0a44b954d64a332e3ee0821abf82b7f3e99c1',
'hex')
}
const vectors = [];
Object.keys(raw).forEach((hash) => {
vectors.push({
hash,
keyBuffer: raw[hash],
plaintext,
signature: signatures[hash]
});
});
return vectors;
};

330
test/fixtures/crypto/rsa.js vendored Normal file
View File

@ -0,0 +1,330 @@
'use strict';
module.exports = function() {
const pkcs8 = Buffer.from(
'308204bf020100300d06092a864886f70d0101010500048204a930820' +
'4a50201000282010100d3576092e62957364544e7e4233b7bdb293db2' +
'085122c479328546f9f0f712f657c4b17868c930908cc594f7ed00c01' +
'442c1af04c2f678a48ba2c80fd1713e30b5ac50787ac3516589f17196' +
'7f6386ada34900a6bb04eecea42bf043ced9a0f94d0cc09e919b9d716' +
'6c08ab6ce204640aea4c4920db6d86eb916d0dcc0f4341a10380429e7' +
'e1032144ea949de8f6c0ccbf95fa8e928d70d8a38ce168db45f6f1346' +
'63d6f656f5ceabc725da8c02aabeaaa13ac36a75cc0bae135df3114b6' +
'6589c7ed3cb61559ae5a384f162bfa80dbe4617f86c3f1d010c94fe2c' +
'9bf019a6e63b3efc028d43cee611c85ec263c906c463772c6911b19ee' +
'c096ca76ec5e31e1e3020301000102820101008b375ccb87c825c5ff3' +
'd53d009916e9641057e18527227a07ab226be1088813a3b38bb7b48f3' +
'77055165fa2a9339d24dc667d5c5ba3427e6a481176eac15ffd490683' +
'11e1c283b9f3a8e0cb809b4630c50aa8f3e45a60b359e19bf8cbb5eca' +
'd64e761f1095743ff36aaf5cf0ecb97fedaddda60b5bf35d811a75b82' +
'2230cfaa0192fad40547e275448aa3316bf8e2b4ce0854fc7708b537b' +
'a22d13210b09aec37a2759efc082a1531b23a91730037dde4ef26b5f9' +
'6efdcc39fd34c345ad51cbbe44fe58b8a3b4ec997866c086dff1b8831' +
'ef0a1fea263cf7dacd03c04cbcc2b279e57fa5b953996bfb1dd68817a' +
'f7fb42cdef7a5294a57fac2b8ad739f1b029902818100fbf833c2c631' +
'c970240c8e7485f06a3ea2a84822511a8627dd464ef8afaf7148d1a42' +
'5b6b8657ddd5246832b8e533020c5bbb568855a6aec3e4221d793f1dc' +
'5b2f2584e2415e48e9a2bd292b134031f99c8eb42fc0bcd0449bf22ce' +
'6dec97014efe5ac93ebe835877656252cbbb16c415b67b184d2284568' +
'a277d59335585cfd02818100d6b8ce27c7295d5d16fc3570ed64c8da9' +
'303fad29488c1a65e9ad711f90370187dbbfd81316d69648bc88cc5c8' +
'3551afff45debacfb61105f709e4c30809b90031ebd686244496c6f69' +
'e692ebdc814f64239f4ad15756ecb78c5a5b09931db183077c546a38c' +
'4c743889ad3d3ed079b5622ed0120fa0e1f93b593db7d852e05f02818' +
'038874b9d83f78178ce2d9efc175c83897fd67f306bbfa69f64ee3423' +
'68ced47c80c3f1ce177a758d64bafb0c9786a44285fa01cdec3507cde' +
'e7dc9b7e2b21d3cbbcc100eee9967843b057329fdcca62998ed0f11b3' +
'8ce8b0abc7de39017c71cfd0ae57546c559144cdd0afd0645f7ea8ff0' +
'7b974d1ed44fd1f8e00f560bf6d45028181008529ef9073cf8f7b5ff9' +
'e21abadf3a4173d3900670dfaf59426abcdf0493c13d2f1d1b46b824a' +
'6ac1894b3d925250c181e3472c16078056eb19a8d28f71f3080927534' +
'81d49444fdf78c9ea6c24407dc018e77d3afef385b2ff7439e9623794' +
'1332dd446cebeffdb4404fe4f71595161d016402c334d0f57c61abe4f' +
'f9f4cbf90281810087d87708d46763e4ccbeb2d1e9712e5bf0216d70d' +
'e9420a5b2069b7459b99f5d9f7f2fad7cd79aaee67a7f9a34437e3c79' +
'a84af0cd8de9dff268eb0c4793f501f988d540f6d3475c2079b8227a2' +
'3d968dec4e3c66503187193459630472bfdb6ba1de786c797fa6f4ea6' +
'5a2a8419262f29678856cb73c9bd4bc89b5e041b2277', 'hex');
const spki = Buffer.from(
'30820122300d06092a864886f70d01010105000382010f003082010a0' +
'282010100d3576092e62957364544e7e4233b7bdb293db2085122c479' +
'328546f9f0f712f657c4b17868c930908cc594f7ed00c01442c1af04c' +
'2f678a48ba2c80fd1713e30b5ac50787ac3516589f171967f6386ada3' +
'4900a6bb04eecea42bf043ced9a0f94d0cc09e919b9d7166c08ab6ce2' +
'04640aea4c4920db6d86eb916d0dcc0f4341a10380429e7e1032144ea' +
'949de8f6c0ccbf95fa8e928d70d8a38ce168db45f6f134663d6f656f5' +
'ceabc725da8c02aabeaaa13ac36a75cc0bae135df3114b66589c7ed3c' +
'b61559ae5a384f162bfa80dbe4617f86c3f1d010c94fe2c9bf019a6e6' +
'3b3efc028d43cee611c85ec263c906c463772c6911b19eec096ca76ec' +
'5e31e1e30203010001', 'hex');
const label = Buffer.from(
'5468657265206172652037206675727468657220656469746f7269616' +
'c206e6f74657320696e2074686520646f63756d656e742e', 'hex');
// overlong plaintext for RSA-OAEP
const plaintext = Buffer.from(
'5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac4' +
'21779df9d55d180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b' +
'3c0e81fc47cacf8315a2af66324113c3b66230c34608c4f4593634ce02' +
'b267362277f0a840ca74bc3d1a6236952c5ed7aaf8a8fecbddfa7584e6' +
'978cea5d2a5b9fb7f1b48c8b0be58a305202754d8376107374793cf026' +
'aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d910e' +
'a380984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c2' +
'48028af3726cc93463882ea8c02aab', 'hex');
const ciphertext = {
'sha-1, no label': Buffer.from(
'901ef09cbbfe9a4939b9a9c43ccf22339e1575f7c74324494075c192' +
'c40b68996eb0e04d7b151774fff7c00b66174a249fc3d1a6123c70a6' +
'6fd61b67cb54f683fe01049e4a44a5937e35cae1b73dce12aea09cd0' +
'1c4c48900fafdd753ac401566076b9b863807cf141a63044865e0cbc' +
'42b995fb639fe9994e94c0e381404ae1b554cdb27515f09798dc5a07' +
'a60b162bf12f8cef7ce166314d942d80fe43d0df1fb0d7e9514ef729' +
'dc6c845583f74ab2c36d9684d43b71962a18ff0e2b13ce74f537fb3a' +
'0b00ede329e77c11900a070e20f86dc07cacb56f7821d0249234106c' +
'6e0b4dda82e0febdb202ef0c7b10d560f0bafdc78f0624185783b522' +
'83ca14a1', 'hex'),
'sha-256, no label': Buffer.from(
'0531eaeb4b8cef8eb77dd736d096b6dce840d164e9751f86a8d5ced0' +
'9999506ffaf000eb6153f7456f311ae99e47f1207150eb97f2982db7' +
'73be9e990e8a12985a5f115af906ef0c870eef3c9fca1c5b4d5e9904' +
'99b67d0094adaf8debdf9a5d72335b54b3d1ca26ea0957d63e064ce9' +
'69d52e53bd605c8fa9320d9eabe239eef47099555c194d1bb8dfeffe' +
'ad6b4fd7f8f28990355cc8ee22a36c4867f0acead7f4a5025f1517f7' +
'52a7e8c093533d0cd659ad60a7dc05044220019887016437dcc94c6f' +
'9e8202b03bc955eb2c790d3fb7c7e77e2612ffa521daf467f640a749' +
'e9e1191574be76e2d55c3cfe7a93551a7c28ddb2ba6b26c33a30c237' +
'1cd8974d', 'hex'),
'sha-384, no label': Buffer.from(
'0c2392e30f92f1f4e4acd1b4a6fd99f983c61dcaf39bddde47b29ead' +
'3add104a7a86df1f7099f3683c65affe329d2bcab95035ec96c13dab' +
'9a0cb4b95960fee08aa5835566a1b57ddf545ac950509134ced00273' +
'9ea6ff3e3de4841f9fa9061660ecf10533e9f50ca5164f324944cc7b' +
'8e3aec6998a366f90cfaee7977651a0d1e8d194bcd1c2a008729aa01' +
'1a9d0d8ca271f98e015bf466bcd99cd97686b592f66fb1369f54a358' +
'937abcf917df6f39badc6f5ff630c7ac73b92fadbadd0c29fce04ca7' +
'd62aab52b264e5a282bcbf02721c119e28e9426cd996b3791973d8a2' +
'acf43a2c2f67ff884c1a77b83fc3268c640cab414336c31f7a6977e4' +
'951031d4', 'hex'),
'sha-512, no label': Buffer.from(
'0626d346d5253113ddc0f8ced1918d88ebf00869f880af89c5e67bb3' +
'794bb58a9bf619e5a55909418f6c7e14a858a0c530427502db7afe60' +
'2493aa6f7ba83997198b0ae97ddb8d3a7dae5926dc190f0587452105' +
'0a311cfd94fbd535df08b840b95ef9d3403583882002a33d4c09a2bd' +
'50476ded93090b933dfe01b9d0e42cdb11a3efb8d4c5e5d223ec0475' +
'25bba91af85fa0a5fc1566fd4973917c588f7980ec469065b536b340' +
'39e899489e60f14fff5a43106e2bea9914394b5317b8d819d73409f1' +
'7215dfb8b1f742620d0fafcc5251cd160f5c1c63baeaf12125d20f08' +
'c51ed061072a33add5ab3b9a47354e58f4329d216f8fb93d5b76edf5' +
'5d5b9c24', 'hex'),
'sha-1, with label': Buffer.from(
'450c932bdb5f223d1d40dabe85457d230849499a57c25bc9826ff356' +
'5a7cfe82bb859e209fea96625bf678a639e96207a03a7d71354f02ca' +
'd0687bc31b54fa6208a953cf5e1f611f5100f799d06340b9f4d5c23e' +
'c8ab4ef50a3e90b0ce5e68ac2d3972c4f3a6224389294d0620e109ea' +
'b72026281a5de6bf1bc0b743e09c40bd241bd8393aa430a44adaa7c4' +
'd0dd4f6676177b1ae335b9c40ee99a068ce9cc996da3a4e2aacf4f7b' +
'1abc817c6252ff5f8e471a05d7c681b36e82fbde8cd2e225c87564ac' +
'1a8a610b57a168d244752e574afa9856c22a757afeebca96f93f6e6d' +
'17c520515927d99ca34eedfd19bce31f23aebe159da0253c27c10b5c' +
'0ffb7d97', 'hex'),
'sha-256, with label': Buffer.from(
'b4d46d087682180560797166729d951fea055f8ab80a10f9314e55de' +
'e12fac6c2124ce2fd39fcaf134acdd1c6301b0335292be89a3cad44a' +
'96cc3a1a2b36875bf6c93b6ab5090a76bf6a7a66af7202b692a9377c' +
'54bbfeede1fc20c54f61dbfa3651347992c20dc458d40792ede81f71' +
'd7c82a9eefb43398d6916a0b73a01547abbe2d19e51382d2343a0e37' +
'52fad7c16eb28f65a33f95d8b0a39142ef3eccc3660e9d029b72e6e1' +
'3779a7acb6bb4b9531d56890cae66f7d77ecd59b837a2b37f5b73c8c' +
'67582d549df743f3a966b0e1c0b59afc5a5f11a17060c4696837065c' +
'd4127f55be0c697bdb6e826fb320b751f6f0873b05d2ad0f66d7575f' +
'8888ee0c', 'hex'),
'sha-384, with label': Buffer.from(
'cc3cbc830f7256f6be9bce3e44f9623fb29001f42af82f09fd088bba' +
'd7b4bf5cf71392f241c369d38854e1ec4bcaf394c54473338741b43e' +
'7b5b1b43850eb7413101065e72f94224fabd49da9bd5ccf067b9cebd' +
'503cf9017fbe1cc4a7437bdecb7ccd99fbf24d97d5d7a2bd1f1cf401' +
'a73a03a95d8f1b28a756e1553b5db052d1e0901523fcb66173c84675' +
'6df0af66d0647ce6b4e89f4db04b8b3a39fe0db7191bf6b633abc5e2' +
'1a0769e1ee933d446661f79527084446d7dccd4ac3b770985b467aa3' +
'1e423334beccd1df6f432c120e6c9c3ea5dd06f694e99432d9f82c63' +
'e976ebf84e2dca3dd3dcc14a06e5cbd47274f2d655a5c7727d350557' +
'eed091b8', 'hex'),
'sha-512, with label': Buffer.from(
'8697b55eef5b0d5311398a15f2ce1856b8efee39e774718b0c806864' +
'9339e4b7a7e129b4f7858d0079c1eba8b8f86b2222e961d7f7f014f5' +
'0e00a711ebcc5161345109885b3b7ac8f94a3f440a12a2f30abe763c' +
'184ae75c62b3dd9605424e5dc8d41d4c32f6be5407f5b09461051016' +
'deada5c8a95d3a087be57cdc427b22453121196b20fa623d29de6c70' +
'252ab2a3519d1ca00379580af9191916420024bbb0c79a7a8a2b48d9' +
'5a2b7732d2a6ca0279ac18ac334aa12d6b96bb590959b7e9a9954e91' +
'e49c8ad7e8db2121e0b2ae100648b9d622cc9fa19a0b978e27f44a4b' +
'f3bf7be7203676eb0c13c8a5fca1572e6333f892b47a2cd267eda932' +
'1cd27988', 'hex')
};
const passing = [
{
name: 'RSA-OAEP with SHA-1 and no label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP' },
hash: 'SHA-1',
plaintext: plaintext.slice(0, 214),
ciphertext: ciphertext['sha-1, no label']
},
{
name: 'RSA-OAEP with SHA-256 and no label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP' },
hash: 'SHA-256',
plaintext: plaintext.slice(0, 190),
ciphertext: ciphertext['sha-256, no label']
},
{
name: 'RSA-OAEP with SHA-384 and no label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP' },
hash: 'SHA-384',
plaintext: plaintext.slice(0, 158),
ciphertext: ciphertext['sha-384, no label']
},
{
name: 'RSA-OAEP with SHA-512 and no label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP' },
hash: 'SHA-512',
plaintext: plaintext.slice(0, 126),
ciphertext: ciphertext['sha-512, no label']
},
{
name: 'RSA-OAEP with SHA-1 and empty label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label: new Uint8Array([]) },
hash: 'SHA-1',
plaintext: plaintext.slice(0, 214),
ciphertext: ciphertext['sha-1, no label']
},
{
name: 'RSA-OAEP with SHA-256 and empty label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label: new Uint8Array([]) },
hash: 'SHA-256',
plaintext: plaintext.slice(0, 190),
ciphertext: ciphertext['sha-256, no label']
},
{
name: 'RSA-OAEP with SHA-384 and empty label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label: new Uint8Array([]) },
hash: 'SHA-384',
plaintext: plaintext.slice(0, 158),
ciphertext: ciphertext['sha-384, no label']
},
{
name: 'RSA-OAEP with SHA-512 and empty label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label: new Uint8Array([]) },
hash: 'SHA-512',
plaintext: plaintext.slice(0, 126),
ciphertext: ciphertext['sha-512, no label']
},
{
name: 'RSA-OAEP with SHA-1 and a label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label },
hash: 'SHA-1',
plaintext: plaintext.slice(0, 214),
ciphertext: ciphertext['sha-1, with label']
},
{
name: 'RSA-OAEP with SHA-256 and a label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label },
hash: 'SHA-256',
plaintext: plaintext.slice(0, 190),
ciphertext: ciphertext['sha-256, with label']
},
{
name: 'RSA-OAEP with SHA-384 and a label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label },
hash: 'SHA-384',
plaintext: plaintext.slice(0, 158),
ciphertext: ciphertext['sha-384, with label']
},
{
name: 'RSA-OAEP with SHA-512 and a label',
publicKeyBuffer: spki,
publicKeyFormat: 'spki',
privateKey: null,
privateKeyBuffer: pkcs8,
privateKeyFormat: 'pkcs8',
publicKey: null,
algorithm: { name: 'RSA-OAEP', label },
hash: 'SHA-512',
plaintext: plaintext.slice(0, 126),
ciphertext: ciphertext['sha-512, with label']
}
];
const failing = [];
return { passing, failing };
};

138
test/fixtures/crypto/rsa_pkcs.js vendored Normal file
View File

@ -0,0 +1,138 @@
'use strict';
module.exports = function () {
const pkcs8 = Buffer.from(
'308204bf020100300d06092a864886f70d0101010500048204a9308204a50201000282' +
'010100d3576092e62957364544e7e4233b7bdb293db2085122c479328546f9f0f712f6' +
'57c4b17868c930908cc594f7ed00c01442c1af04c2f678a48ba2c80fd1713e30b5ac50' +
'787ac3516589f171967f6386ada34900a6bb04eecea42bf043ced9a0f94d0cc09e919b' +
'9d7166c08ab6ce204640aea4c4920db6d86eb916d0dcc0f4341a10380429e7e1032144' +
'ea949de8f6c0ccbf95fa8e928d70d8a38ce168db45f6f134663d6f656f5ceabc725da8' +
'c02aabeaaa13ac36a75cc0bae135df3114b66589c7ed3cb61559ae5a384f162bfa80db' +
'e4617f86c3f1d010c94fe2c9bf019a6e63b3efc028d43cee611c85ec263c906c463772' +
'c6911b19eec096ca76ec5e31e1e3020301000102820101008b375ccb87c825c5ff3d53' +
'd009916e9641057e18527227a07ab226be1088813a3b38bb7b48f377055165fa2a9339' +
'd24dc667d5c5ba3427e6a481176eac15ffd49068311e1c283b9f3a8e0cb809b4630c50' +
'aa8f3e45a60b359e19bf8cbb5ecad64e761f1095743ff36aaf5cf0ecb97fedaddda60b' +
'5bf35d811a75b822230cfaa0192fad40547e275448aa3316bf8e2b4ce0854fc7708b53' +
'7ba22d13210b09aec37a2759efc082a1531b23a91730037dde4ef26b5f96efdcc39fd3' +
'4c345ad51cbbe44fe58b8a3b4ec997866c086dff1b8831ef0a1fea263cf7dacd03c04c' +
'bcc2b279e57fa5b953996bfb1dd68817af7fb42cdef7a5294a57fac2b8ad739f1b0299' +
'02818100fbf833c2c631c970240c8e7485f06a3ea2a84822511a8627dd464ef8afaf71' +
'48d1a425b6b8657ddd5246832b8e533020c5bbb568855a6aec3e4221d793f1dc5b2f25' +
'84e2415e48e9a2bd292b134031f99c8eb42fc0bcd0449bf22ce6dec97014efe5ac93eb' +
'e835877656252cbbb16c415b67b184d2284568a277d59335585cfd02818100d6b8ce27' +
'c7295d5d16fc3570ed64c8da9303fad29488c1a65e9ad711f90370187dbbfd81316d69' +
'648bc88cc5c83551afff45debacfb61105f709e4c30809b90031ebd686244496c6f69e' +
'692ebdc814f64239f4ad15756ecb78c5a5b09931db183077c546a38c4c743889ad3d3e' +
'd079b5622ed0120fa0e1f93b593db7d852e05f02818038874b9d83f78178ce2d9efc17' +
'5c83897fd67f306bbfa69f64ee342368ced47c80c3f1ce177a758d64bafb0c9786a442' +
'85fa01cdec3507cdee7dc9b7e2b21d3cbbcc100eee9967843b057329fdcca62998ed0f' +
'11b38ce8b0abc7de39017c71cfd0ae57546c559144cdd0afd0645f7ea8ff07b974d1ed' +
'44fd1f8e00f560bf6d45028181008529ef9073cf8f7b5ff9e21abadf3a4173d3900670' +
'dfaf59426abcdf0493c13d2f1d1b46b824a6ac1894b3d925250c181e3472c16078056e' +
'b19a8d28f71f308092753481d49444fdf78c9ea6c24407dc018e77d3afef385b2ff743' +
'9e96237941332dd446cebeffdb4404fe4f71595161d016402c334d0f57c61abe4ff9f4' +
'cbf90281810087d87708d46763e4ccbeb2d1e9712e5bf0216d70de9420a5b2069b7459' +
'b99f5d9f7f2fad7cd79aaee67a7f9a34437e3c79a84af0cd8de9dff268eb0c4793f501' +
'f988d540f6d3475c2079b8227a23d968dec4e3c66503187193459630472bfdb6ba1de7' +
'86c797fa6f4ea65a2a8419262f29678856cb73c9bd4bc89b5e041b2277', 'hex');
const spki = Buffer.from(
'30820122300d06092a864886f70d01010105000382010f003082010a0282010100d357' +
'6092e62957364544e7e4233b7bdb293db2085122c479328546f9f0f712f657c4b17868' +
'c930908cc594f7ed00c01442c1af04c2f678a48ba2c80fd1713e30b5ac50787ac35165' +
'89f171967f6386ada34900a6bb04eecea42bf043ced9a0f94d0cc09e919b9d7166c08a' +
'b6ce204640aea4c4920db6d86eb916d0dcc0f4341a10380429e7e1032144ea949de8f6' +
'c0ccbf95fa8e928d70d8a38ce168db45f6f134663d6f656f5ceabc725da8c02aabeaaa' +
'13ac36a75cc0bae135df3114b66589c7ed3cb61559ae5a384f162bfa80dbe4617f86c3' +
'f1d010c94fe2c9bf019a6e63b3efc028d43cee611c85ec263c906c463772c6911b19ee' +
'c096ca76ec5e31e1e30203010001', 'hex');
// plaintext
const plaintext = Buffer.from(
'5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac421779df9d55d' +
'180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b3c0e81fc47cacf8315a2af66' +
'324113c3b66230c34608c4f4593634ce02b267362277f0a840ca74bc3d1a6236952c5e' +
'd7aaf8a8fecbddfa7584e6978cea5d2a5b9fb7f1b48c8b0be58a305202754d83761073' +
'74793cf026aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d910ea3' +
'80984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c248028af3726cc9' +
'3463882ea8c02aab', 'hex');
// For verification tests.
const signatures = {
'sha-1': Buffer.from(
'532e2f1b69cc2ee8472ef28f7f36a81a24cde4ee83858a7d17054ac3602c98dd432' +
'e3b3690440935072bb7c031e680701d19b97cb5510d86c9bedbe7d1c06839ceed8a' +
'3b6ac9564131c4512bbbabde237b4daa29fa0d3c97487b48a8fee9d63b50569dc6b' +
'7d10850c8320559343b8537b61214a7e4543a714d65e21c4e478294eb4246cea668' +
'e351fce0b4e118c758be4fdc46c7b3226bbf40b5b3950d62b8bdaa4f6bb76a30222' +
'ba32734ed5df4ac8d4fffa7557105087a6acfba5b48516163bb916864e82cb861eb' +
'910dcf6f1adbad5399afd497fb7afb7f75da83c80592ea1ade3e3803b4bb6831b93' +
'3297c0fccc36937e46018797fca85947d29c6a27a81', 'hex'),
'sha-256': Buffer.from(
'13306aba251dee526459c28352a429cdd85554c7e4a6790a2c6e44b45ebbc4a00a0' +
'a55244d62a60ddf0ed7d42d7714f12f783ac6709d0e2702db2692aeaacc5a5cdbbe' +
'c173198caab0d14fe885d0a8da1f166a965c9e25d48470b4884d5c92a4d84417440' +
'5568f4ac0340df6c410fc44cf7ee6d59ba634f9c6240c96b59a06fceeff4dd29622' +
'e7f983aebf00ecf241f1c912cfd5dc6eeeb94f9d916113e843a98555c24257f8c3e' +
'dab1f27839f8cc9a963e8b85465a56ec1d876225ae001fbd4244701e2e47d81b557' +
'847e3827e33b36f3f5e8fedfa49a0d34d01dbdaf84fa5c752f0202a8cab2c4cc2cb' +
'5076f6537d9c22d353738e9b39c97026b059ce95d89', 'hex'),
'sha-384': Buffer.from(
'354fcd1c62e2362d4e8bcedf5150f7b27bec33ab32a27975345a4c8cfeb234669bc' +
'4abaf81e719ddf4c1afae45432cb7aeb9133cbd878de766e872628178a33ac20a02' +
'8a7d8c2b641a5c523b16bbe65eb20bab331c983a961bae6de64e6b9077aa89c846b' +
'8d69dcf7101478d10751a3b87b2a5de2ca6ce71a0bfed7f587a216e053a1e53c4a2' +
'ace93c261b440fecd4330dd7cbd792b8398502b2a20845a4c2918d872aacf50b302' +
'71357019a58ae18819e75c48e9ef80810860fa04964776ca04b200329674dca5320' +
'b400f517864e71e087b68b81df613ee24bac34dcf2e64595e12c799070f3f719d93' +
'd7843b69592346cfc20c6bbf93107f279d6207ec657', 'hex'),
'sha-512': Buffer.from(
'6229b70897f8620b635487cd4aa996269831ff2931d28714f01e58b165f1082c319' +
'8b8f451788cfd3ed59a78f834d11ce285d1051c42a5cea0227fdefe293444c2518e' +
'be5cb0055bea4b5806f0eba1b665022a63be44c088fe9ad26325d79f7c41ed97f90' +
'9cd4ca28328e4c4a9de8da67c35dc1c85b71ed6ffaaf99d74b2b88e9f5f05a732f6' +
'688c993b58a0ed35e8f0a106d4e8b1b360e334415c742e94675823db0fd25e22cff' +
'7a6335c70e193235dcda48add6858626bd96311e60f7e5ea4491b6c1e6248afe12b' +
'bbd54f8869b043a5b0444562813f0a98b300356f306e6b783a29f3bec97ca40ea20' +
'062cab8926ec5d96aa387cc84821a6d72b8ea126e7d', 'hex')
}
const vectors = [
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSASSA-PKCS1-v1_5' },
hash: 'SHA-1',
plaintext,
signature: signatures['sha-1']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSASSA-PKCS1-v1_5' },
hash: 'SHA-256',
plaintext,
signature: signatures['sha-256']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSASSA-PKCS1-v1_5' },
hash: 'SHA-384',
plaintext,
signature: signatures['sha-384']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSASSA-PKCS1-v1_5' },
hash: 'SHA-512',
plaintext,
signature: signatures['sha-512']
}
];
return vectors;
}

149
test/fixtures/crypto/rsa_pss.js vendored Normal file
View File

@ -0,0 +1,149 @@
'use strict';
module.exports = function() {
const pkcs8 = Buffer.from(
'308204bf020100300d06092a864886f70d0101010500048204a9308204a5020100028' +
'2010100d3576092e62957364544e7e4233b7bdb293db2085122c479328546f9f0f712' +
'f657c4b17868c930908cc594f7ed00c01442c1af04c2f678a48ba2c80fd1713e30b5a' +
'c50787ac3516589f171967f6386ada34900a6bb04eecea42bf043ced9a0f94d0cc09e' +
'919b9d7166c08ab6ce204640aea4c4920db6d86eb916d0dcc0f4341a10380429e7e10' +
'32144ea949de8f6c0ccbf95fa8e928d70d8a38ce168db45f6f134663d6f656f5ceabc' +
'725da8c02aabeaaa13ac36a75cc0bae135df3114b66589c7ed3cb61559ae5a384f162' +
'bfa80dbe4617f86c3f1d010c94fe2c9bf019a6e63b3efc028d43cee611c85ec263c90' +
'6c463772c6911b19eec096ca76ec5e31e1e3020301000102820101008b375ccb87c82' +
'5c5ff3d53d009916e9641057e18527227a07ab226be1088813a3b38bb7b48f3770551' +
'65fa2a9339d24dc667d5c5ba3427e6a481176eac15ffd49068311e1c283b9f3a8e0cb' +
'809b4630c50aa8f3e45a60b359e19bf8cbb5ecad64e761f1095743ff36aaf5cf0ecb9' +
'7fedaddda60b5bf35d811a75b822230cfaa0192fad40547e275448aa3316bf8e2b4ce' +
'0854fc7708b537ba22d13210b09aec37a2759efc082a1531b23a91730037dde4ef26b' +
'5f96efdcc39fd34c345ad51cbbe44fe58b8a3b4ec997866c086dff1b8831ef0a1fea2' +
'63cf7dacd03c04cbcc2b279e57fa5b953996bfb1dd68817af7fb42cdef7a5294a57fa' +
'c2b8ad739f1b029902818100fbf833c2c631c970240c8e7485f06a3ea2a84822511a8' +
'627dd464ef8afaf7148d1a425b6b8657ddd5246832b8e533020c5bbb568855a6aec3e' +
'4221d793f1dc5b2f2584e2415e48e9a2bd292b134031f99c8eb42fc0bcd0449bf22ce' +
'6dec97014efe5ac93ebe835877656252cbbb16c415b67b184d2284568a277d5933558' +
'5cfd02818100d6b8ce27c7295d5d16fc3570ed64c8da9303fad29488c1a65e9ad711f' +
'90370187dbbfd81316d69648bc88cc5c83551afff45debacfb61105f709e4c30809b9' +
'0031ebd686244496c6f69e692ebdc814f64239f4ad15756ecb78c5a5b09931db18307' +
'7c546a38c4c743889ad3d3ed079b5622ed0120fa0e1f93b593db7d852e05f02818038' +
'874b9d83f78178ce2d9efc175c83897fd67f306bbfa69f64ee342368ced47c80c3f1c' +
'e177a758d64bafb0c9786a44285fa01cdec3507cdee7dc9b7e2b21d3cbbcc100eee99' +
'67843b057329fdcca62998ed0f11b38ce8b0abc7de39017c71cfd0ae57546c559144c' +
'dd0afd0645f7ea8ff07b974d1ed44fd1f8e00f560bf6d45028181008529ef9073cf8f' +
'7b5ff9e21abadf3a4173d3900670dfaf59426abcdf0493c13d2f1d1b46b824a6ac189' +
'4b3d925250c181e3472c16078056eb19a8d28f71f308092753481d49444fdf78c9ea6' +
'c24407dc018e77d3afef385b2ff7439e96237941332dd446cebeffdb4404fe4f71595' +
'161d016402c334d0f57c61abe4ff9f4cbf90281810087d87708d46763e4ccbeb2d1e9' +
'712e5bf0216d70de9420a5b2069b7459b99f5d9f7f2fad7cd79aaee67a7f9a34437e3' +
'c79a84af0cd8de9dff268eb0c4793f501f988d540f6d3475c2079b8227a23d968dec4' +
'e3c66503187193459630472bfdb6ba1de786c797fa6f4ea65a2a8419262f29678856c' +
'b73c9bd4bc89b5e041b2277', 'hex');
const spki = Buffer.from(
'30820122300d06092a864886f70d01010105000382010f003082010a0282010100d35' +
'76092e62957364544e7e4233b7bdb293db2085122c479328546f9f0f712f657c4b178' +
'68c930908cc594f7ed00c01442c1af04c2f678a48ba2c80fd1713e30b5ac50787ac35' +
'16589f171967f6386ada34900a6bb04eecea42bf043ced9a0f94d0cc09e919b9d7166' +
'c08ab6ce204640aea4c4920db6d86eb916d0dcc0f4341a10380429e7e1032144ea949' +
'de8f6c0ccbf95fa8e928d70d8a38ce168db45f6f134663d6f656f5ceabc725da8c02a' +
'abeaaa13ac36a75cc0bae135df3114b66589c7ed3cb61559ae5a384f162bfa80dbe46' +
'17f86c3f1d010c94fe2c9bf019a6e63b3efc028d43cee611c85ec263c906c463772c6' +
'911b19eec096ca76ec5e31e1e30203010001', 'hex');
const plaintext = Buffer.from(
'5f4dba4f320c0ce876725afce5fbd25bf83e5a7125a08cafe73c3ebac421779df9d55' +
'd180c3ae9942645e1d82fee8c9d294b3cb1a08a9931201b3c0e81fc47cacf8315a2af' +
'66324113c3b66230c34608c4f4593634ce02b267362277f0a840ca74bc3d1a6236952' +
'c5ed7aaf8a8fecbddfa7584e6978cea5d2a5b9fb7f1b48c8b0be58a305202754d8376' +
'107374793cf026aaee5300727d836cd71e71b345ddb2e44446ffc5b901635413890d9' +
'10ea380984a90191031323f16dbcc9d6be168b84885384ca03e12600ac1c248028af3' +
'726cc93463882ea8c02aab', 'hex');
const signatures = {
'sha-1, no salt': Buffer.from(
'1f1cd81ecb3bb31df2e5f0f64c5c0a310c7cf88d19eb512a5078e156d823727af88' + '68a12e5dfbfa976386784ba982c39928789b134952a4a28c6241177bcf2248f2adb' + '60077f545dd17e4f809b3b859fd430d1681e8047126d77369519eed5b618f3297a5' + '75085f0c931ed248cf60bbd7efffa0a8c2b874ba7f81ecd6bf391d01f1e881d827a' + '7b95df874d9adabb7b07f131ab33142a8b0b6d5ca9685671d49b982b67651909eaa' + '17b96b393e04fb36d972f9b258f1b79123df212d39924a4deaec506cf640f1dedd0' + '2d28845f3548d8488652788e2e2146f3ce8a86a556d84b4578f10da29abdb176a68' + '718cc1b2270b0735c2e5ca6c6bb0afac23a5bfa817a', 'hex'),
'sha-256, no salt': Buffer.from(
'6157d668ed655d978b4c158c8419eb80718dfdfc7d4b34357f9917e9e116b6f3b65' + '040c9d16155c081d6887abcb3ba4ffa0191e4807ee206681aa1d4809ea20de5186b' + '77e3caced07fc9b3d71b9df0ac81b5c3273ff3f74f32a7ad34c65062a31540ced30' + '527efa4b7aa2d27ff7f80535f3e65ce352eb9e18b5054416de959354a4dcccb2542' + 'e33a8358eda620a8653dd6458f56ab94fee1dc01ef42fb8958aa134810e4d8fe1dd' + '4feee6af04742f80da5793875a78a2a4cc08d4e0a68ab03f1c022a0e8a7d3096089' + '92d24ecdd7e8f1895e3e5cd36e49906b531932d9ff958618b1a50f98455f515e0c6' + '3103d2e4e1651afc566eb9cad1e7efae1a9750c3880', 'hex'),
'sha-384, no salt': Buffer.from(
'7b95aab6b34c0962d228409e30df9b043c1b0baada08e73d887422552b8f1522e2e' + '42bf2b9ff2c6c9aa3eb0cd2370618e8f1a36873595e00bde75a9ce062ec32b5f639' + '4f2267a3f5c11840ff92e6e15bf31cc53e917ca8efc0895fb112c2ef8f681cbb6a4' + '10152f6e930caff1f260e31f983542e68cd15dea17ed3139cac735106fb05fc163b' + '2ed05a0ded939059a10c5cd7619e21b2d206907994274b34a4daefa1ce59b6b319f' + '73955a0918a5e237e1bbfdadb45c907a50083577e7192818845995b4a6d3ff1978e' + '0f9a42695853282e35c3b78133b3e0c624125aff14a1873d198f6304ffec7fc1cf2' + 'adecc6cd14b1f89b1a637f72ed1ff5de7c6b4d96599', 'hex'),
'sha-512, no salt': Buffer.from(
'af1bc07fa70add19f3ce1f1bef8dfc6e24af43671cfb97e6b869e86b7ef03550a65' + '81318fff6449afa8b67e73e2a6a14e20677d8b067145a84422574ae0cfd2a5dff70' + 'c6d7e97f6a0e166505079eb4264a43c493f2eb3fb06facc01be60774c277646a280' + '81247679622b220227e9249754867aa8fe1804015c4f98700982eda40e84d0ba033' + '6cf44f582fb8781374804e8fb43eb9d577acf4723587a39a2b4a9e168b767632b7a' + '554f77bc5272821c938c0994b162f7482636f7ffac564a19bd733f4877801dc324d' + 'c47196ef12ca9a8f4921a5496cd6737935ca555b73466ddd817eaff03feda0eb2d6' + '12e3cdb59b1989eeffdc18101d46e56b9ff5c91f95d', 'hex'),
'sha-1, salted': Buffer.from(
'1f608a71d1884cfe2183b49037aa8555b0139a8a1267a5c5b9cce20701f2ad4bbd5' + 'b329740bff31accc34bf9afd1439a0536bb32b6d427d26968dbc9e9c80d2111d948' + 'c481cb1731778acd3110463241c4f23b3e13b855d162cb153851290fd95f781519e' + '2cef93745a413cfeec8e94fba7822b725d4744318458cf6b4a917b65b15ee6f54b9' + 'c391f6064a9e031f7009f592449c0b46d5457a2799cb0ebd78a102a055ee0470b26' + '0c2b3d8ffbdee0fd47644822090ec55ae6233be1062f441c432ed3c275e74d62013' + '2681ec2e801e9b5b6acc1ad71f8935388f7e2c03370d12e944e3418c2ab63bb42ab' + 'e1bb9e69530f02458ba28400b36806ff78da5791ace', 'hex'),
'sha-256, salted': Buffer.from(
'8c3d03bde8c42d9453631b0baac89e6296da20543713c004df35bc1a6fae205ab2b' + 'f585369689073cdee345ad6e2783b2dda187b4979ea0457463758156e103eedd0ef' + '1834d35bd6ad540d9b8b225fd1770e514ea0af35f707f2e7a0382be6f5ed9d6b591' + 'd536ce1215b17ef3eeb450bb48a0017497c67be0240470addd2891a81a8f1cf6e80' + 'e3f837fe42376292df555b8b05931b69530597fae36dcd01b1c81767d4ecd4caf06' + 'befc035224bdd2a5e6b89d51539235ac95570e757dbd70fdc15040001b07b937bf0' + '148ccc005f4c272acf5f8fc096a37d26208e96ac341c2d1d212c44d6d5156c934f6' + '6ef42fdbac77a208681550b048b466e32c76c7a7b07', 'hex'),
'sha-384, salted': Buffer.from(
'79f7284bb4216de68429854edb4218ef78ad1740848567377315db8867a15733c70' + '42e8bf90762e673c90c0e2c58c6c5cef497568bd92a6d219612c4756c55fac45507' + 'f81608bc2720da4eedd5b23e1f3c8740c6b4cd7e4cf0e04342b184c1110199e6508' + '0d73b985e611d66f8e97990816e4917badbb0425dd94383892e2aa96de4db0de093' + '6aee84d5482a3da31b27319f43830fc48703cc7d4eaedb20fd30323dbf3f22608db' + '51637d3b305b3197962658d80935c266d33ccfb297590621f4a967c7245e92b0158' + 'c0dcea943e2ace719ebdb196a9bae7df3ed9cc62765e27b63571743e28a0538db08' + '25cad2539eb5de5e6a320a88b573ec1972c26401530', 'hex'),
'sha-512, salted': Buffer.from(
'b74f3099d80787118b1f9de79fc207893e0d2d75c4110f4b159b85ba07d63a0256f' + 'c3cd0f66ce8d9a2e3cf7a3d5a7b9c0befac6638894a3e36ce75e649ee069dd8dd98' + 'aa8b602474c98b14bb03492de551a9e8e77934ef9b684583934f218d9576be240b5' + 'c4f362eaf5e0140c8ea92639085a6269653505dcfa004226db9f63277653a64a182' + '6e4babb17ab54dd8543dcf1ce809706d6816e6a75ff846a3d4c18d11bdeb1f31b10' + 'd55a3795b6496319e6e751504d86a4e7bb6535b9f0415e815d8c789c5b1e387f2a8' + 'c00fef6e327462cb7e525b8f945be5b17248e0e0a4d855d397e22d067ce4539373d' + 'fba46d1799250afc70f535006cacd2766f5ddcf8f91', 'hex')
}
const vectors = [
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 0 },
hash: 'SHA-1',
plaintext,
signature: signatures['sha-1, no salt']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 0 },
hash: 'SHA-256',
plaintext,
signature: signatures['sha-256, no salt']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 0 },
hash: 'SHA-384',
plaintext,
signature: signatures['sha-384, no salt']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 0 },
hash: 'SHA-512',
plaintext,
signature: signatures['sha-512, no salt']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 20 },
hash: 'SHA-1',
plaintext,
signature: signatures['sha-1, salted']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 32 },
hash: 'SHA-256',
plaintext,
signature: signatures['sha-256, salted']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 48 },
hash: 'SHA-384',
plaintext,
signature: signatures['sha-384, salted']
},
{
publicKeyBuffer: spki,
privateKeyBuffer: pkcs8,
algorithm: { name: 'RSA-PSS', saltLength: 64 },
hash: 'SHA-512',
plaintext,
signature: signatures['sha-512, salted']
}
];
return vectors;
};