From 6382787f267b67fcdf3d294948219200a4bf5367 Mon Sep 17 00:00:00 2001 From: Oleg Bespalov Date: Fri, 19 Apr 2024 12:38:21 +0200 Subject: [PATCH] examples: move large byte array to end of file --- examples/import_export/import-ecdh-key.js | 76 ++++++++++--------- examples/import_export/import-ecdsa-keys.js | 38 +++++----- .../sign_verify/verify-spki-ecdsa-invalid.js | 76 +++++++++---------- .../sign_verify/verify-spki-ecdsa-valid.js | 67 ++++++++-------- 4 files changed, 131 insertions(+), 126 deletions(-) diff --git a/examples/import_export/import-ecdh-key.js b/examples/import_export/import-ecdh-key.js index ad56878..808e2b5 100644 --- a/examples/import_export/import-ecdh-key.js +++ b/examples/import_export/import-ecdh-key.js @@ -2,44 +2,11 @@ import { crypto } from "k6/x/webcrypto"; export default async function () { const aliceKeyPair = await importKeys( - new Uint8Array([ - 4, 8, 249, 89, 225, 84, 28, 108, 246, 144, 7, 182, 109, 32, 155, 16, 102, - 22, 66, 253, 148, 220, 48, 6, 106, 21, 123, 98, 229, 191, 20, 200, 35, 5, - 208, 131, 136, 154, 125, 18, 20, 202, 231, 168, 184, 127, 53, 186, 6, 136, - 114, 101, 127, 109, 179, 44, 96, 108, 193, 126, 217, 131, 163, 131, 135, - ]), - new Uint8Array([ - 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, - 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 194, 150, 86, - 186, 233, 47, 132, 192, 213, 56, 60, 179, 112, 7, 89, 65, 116, 88, 8, 158, - 228, 172, 190, 234, 143, 152, 33, 175, 47, 0, 39, 79, 161, 68, 3, 66, 0, - 4, 8, 249, 89, 225, 84, 28, 108, 246, 144, 7, 182, 109, 32, 155, 16, 102, - 22, 66, 253, 148, 220, 48, 6, 106, 21, 123, 98, 229, 191, 20, 200, 35, 5, - 208, 131, 136, 154, 125, 18, 20, 202, 231, 168, 184, 127, 53, 186, 6, 136, - 114, 101, 127, 109, 179, 44, 96, 108, 193, 126, 217, 131, 163, 131, 135, - ]) + alicePublicKeyData, + alicePrivateKeyData ); - const bobKeyPair = await importKeys( - new Uint8Array([ - 4, 218, 134, 37, 137, 90, 68, 101, 112, 234, 68, 87, 110, 182, 85, 178, - 161, 106, 223, 50, 150, 9, 155, 68, 191, 51, 138, 185, 186, 226, 211, 25, - 203, 96, 193, 213, 68, 7, 181, 238, 52, 154, 113, 56, 76, 86, 44, 245, - 128, 194, 103, 14, 81, 229, 124, 189, 13, 252, 138, 98, 196, 218, 39, 34, - 42, - ]), - new Uint8Array([ - 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, - 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 59, 168, 213, - 160, 115, 123, 19, 203, 62, 86, 50, 152, 17, 210, 42, 35, 174, 230, 191, - 11, 65, 239, 223, 130, 73, 53, 161, 46, 9, 210, 50, 4, 161, 68, 3, 66, 0, - 4, 218, 134, 37, 137, 90, 68, 101, 112, 234, 68, 87, 110, 182, 85, 178, - 161, 106, 223, 50, 150, 9, 155, 68, 191, 51, 138, 185, 186, 226, 211, 25, - 203, 96, 193, 213, 68, 7, 181, 238, 52, 154, 113, 56, 76, 86, 44, 245, - 128, 194, 103, 14, 81, 229, 124, 189, 13, 252, 138, 98, 196, 218, 39, 34, - 42, - ]) - ); + const bobKeyPair = await importKeys(bobPublicKeyData, bobPrivateKeyData); console.log("alice: ", JSON.stringify(aliceKeyPair)); console.log("bob: ", JSON.stringify(bobKeyPair)); @@ -79,7 +46,6 @@ const importKeys = async (publicKeyData, privateKeyData) => { return { publicKey: publicKey, privateKey: privateKey }; }; - async function deriveSharedSecret(privateKey, publicKey) { return crypto.subtle.deriveBits( { @@ -95,3 +61,39 @@ const printArrayBuffer = (buffer) => { let view = new Uint8Array(buffer); return Array.from(view); }; + +const alicePublicKeyData = new Uint8Array([ + 4, 8, 249, 89, 225, 84, 28, 108, 246, 144, 7, 182, 109, 32, 155, 16, 102, 22, + 66, 253, 148, 220, 48, 6, 106, 21, 123, 98, 229, 191, 20, 200, 35, 5, 208, + 131, 136, 154, 125, 18, 20, 202, 231, 168, 184, 127, 53, 186, 6, 136, 114, + 101, 127, 109, 179, 44, 96, 108, 193, 126, 217, 131, 163, 131, 135, +]); + +const alicePrivateKeyData = new Uint8Array([ + 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, + 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 194, 150, 86, 186, + 233, 47, 132, 192, 213, 56, 60, 179, 112, 7, 89, 65, 116, 88, 8, 158, 228, + 172, 190, 234, 143, 152, 33, 175, 47, 0, 39, 79, 161, 68, 3, 66, 0, 4, 8, 249, + 89, 225, 84, 28, 108, 246, 144, 7, 182, 109, 32, 155, 16, 102, 22, 66, 253, + 148, 220, 48, 6, 106, 21, 123, 98, 229, 191, 20, 200, 35, 5, 208, 131, 136, + 154, 125, 18, 20, 202, 231, 168, 184, 127, 53, 186, 6, 136, 114, 101, 127, + 109, 179, 44, 96, 108, 193, 126, 217, 131, 163, 131, 135, +]); + +const bobPublicKeyData = new Uint8Array([ + 4, 218, 134, 37, 137, 90, 68, 101, 112, 234, 68, 87, 110, 182, 85, 178, 161, + 106, 223, 50, 150, 9, 155, 68, 191, 51, 138, 185, 186, 226, 211, 25, 203, 96, + 193, 213, 68, 7, 181, 238, 52, 154, 113, 56, 76, 86, 44, 245, 128, 194, 103, + 14, 81, 229, 124, 189, 13, 252, 138, 98, 196, 218, 39, 34, 42, +]); + +const bobPrivateKeyData = new Uint8Array([ + 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, + 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 59, 168, 213, 160, + 115, 123, 19, 203, 62, 86, 50, 152, 17, 210, 42, 35, 174, 230, 191, 11, 65, + 239, 223, 130, 73, 53, 161, 46, 9, 210, 50, 4, 161, 68, 3, 66, 0, 4, 218, 134, + 37, 137, 90, 68, 101, 112, 234, 68, 87, 110, 182, 85, 178, 161, 106, 223, 50, + 150, 9, 155, 68, 191, 51, 138, 185, 186, 226, 211, 25, 203, 96, 193, 213, 68, + 7, 181, 238, 52, 154, 113, 56, 76, 86, 44, 245, 128, 194, 103, 14, 81, 229, + 124, 189, 13, 252, 138, 98, 196, 218, 39, 34, 42, +]); diff --git a/examples/import_export/import-ecdsa-keys.js b/examples/import_export/import-ecdsa-keys.js index c2443f2..6c22ead 100644 --- a/examples/import_export/import-ecdsa-keys.js +++ b/examples/import_export/import-ecdsa-keys.js @@ -2,24 +2,8 @@ import { crypto } from "k6/x/webcrypto"; export default async function () { const aliceKeyPair = await importKeys( - new Uint8Array([ - 4, 106, 149, 34, 76, 184, 103, 101, 35, 234, 57, 76, 231, 21, 188, 244, - 15, 179, 101, 113, 24, 6, 17, 21, 195, 60, 181, 73, 154, 170, 206, 21, - 244, 102, 50, 21, 235, 66, 107, 55, 97, 177, 160, 21, 167, 210, 15, 233, - 76, 31, 135, 131, 215, 123, 149, 171, 153, 231, 152, 197, 87, 176, 32, 39, - 137, - ]), - new Uint8Array([ - 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, - 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 41, 167, 202, - 58, 174, 179, 236, 224, 240, 214, 91, 12, 207, 12, 10, 4, 200, 252, 81, - 163, 175, 76, 120, 60, 102, 201, 132, 40, 177, 74, 244, 226, 161, 68, 3, - 66, 0, 4, 106, 149, 34, 76, 184, 103, 101, 35, 234, 57, 76, 231, 21, 188, - 244, 15, 179, 101, 113, 24, 6, 17, 21, 195, 60, 181, 73, 154, 170, 206, - 21, 244, 102, 50, 21, 235, 66, 107, 55, 97, 177, 160, 21, 167, 210, 15, - 233, 76, 31, 135, 131, 215, 123, 149, 171, 153, 231, 152, 197, 87, 176, - 32, 39, 137, - ]) + alicePublicKeyData, + alicePrivateKeyData ); console.log("alice: ", JSON.stringify(aliceKeyPair)); @@ -44,3 +28,21 @@ const importKeys = async (publicKeyData, privateKeyData) => { return { publicKey: publicKey, privateKey: privateKey }; }; + +const alicePublicKeyData = new Uint8Array([ + 4, 106, 149, 34, 76, 184, 103, 101, 35, 234, 57, 76, 231, 21, 188, 244, 15, + 179, 101, 113, 24, 6, 17, 21, 195, 60, 181, 73, 154, 170, 206, 21, 244, 102, + 50, 21, 235, 66, 107, 55, 97, 177, 160, 21, 167, 210, 15, 233, 76, 31, 135, + 131, 215, 123, 149, 171, 153, 231, 152, 197, 87, 176, 32, 39, 137, +]); + +const alicePrivateKeyData = new Uint8Array([ + 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, + 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 41, 167, 202, 58, + 174, 179, 236, 224, 240, 214, 91, 12, 207, 12, 10, 4, 200, 252, 81, 163, 175, + 76, 120, 60, 102, 201, 132, 40, 177, 74, 244, 226, 161, 68, 3, 66, 0, 4, 106, + 149, 34, 76, 184, 103, 101, 35, 234, 57, 76, 231, 21, 188, 244, 15, 179, 101, + 113, 24, 6, 17, 21, 195, 60, 181, 73, 154, 170, 206, 21, 244, 102, 50, 21, + 235, 66, 107, 55, 97, 177, 160, 21, 167, 210, 15, 233, 76, 31, 135, 131, 215, + 123, 149, 171, 153, 231, 152, 197, 87, 176, 32, 39, 137, +]); diff --git a/examples/sign_verify/verify-spki-ecdsa-invalid.js b/examples/sign_verify/verify-spki-ecdsa-invalid.js index 1b64431..60c7f32 100644 --- a/examples/sign_verify/verify-spki-ecdsa-invalid.js +++ b/examples/sign_verify/verify-spki-ecdsa-invalid.js @@ -3,47 +3,12 @@ import { crypto } from "k6/x/webcrypto"; export default async function () { const publicKey = await crypto.subtle.importKey( "spki", - new Uint8Array([ - 48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, - 34, 3, 98, 0, 4, 29, 49, 157, 105, 45, 202, 95, 87, 84, 186, 123, 50, 193, - 22, 66, 198, 216, 210, 180, 251, 130, 73, 195, 242, 20, 215, 30, 144, 181, - 37, 41, 102, 217, 127, 123, 235, 31, 170, 177, 228, 243, 226, 96, 85, 73, - 194, 238, 219, 82, 3, 41, 179, 190, 166, 181, 229, 86, 36, 161, 81, 80, - 161, 105, 102, 99, 95, 25, 22, 239, 4, 221, 117, 142, 105, 64, 157, 6, 51, - 203, 75, 37, 153, 65, 121, 178, 42, 118, 156, 116, 52, 54, 145, 14, 121, - 153, 81, - ]), + spkiPublicKeyData, { name: "ECDSA", namedCurve: "P-384" }, true, ["verify"] ); - let plaintText = new Uint8Array([ - 95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, - 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, - 213, 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, - 60, 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, - 162, 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, - 52, 206, 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, - 54, 149, 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, - 140, 234, 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, - 117, 77, 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, - 125, 131, 108, 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, - 1, 99, 84, 19, 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, - 22, 219, 204, 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, - 193, 194, 72, 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, - 171, - ]); - - let signature1 = new Uint8Array([ - 13, 217, 194, 199, 240, 182, 244, 217, 50, 130, 84, 169, 2, 232, 115, 116, - 179, 192, 146, 25, 94, 107, 226, 26, 161, 166, 220, 216, 235, 166, 15, 123, - 11, 56, 196, 0, 109, 250, 33, 70, 212, 233, 253, 35, 220, 51, 97, 121, 151, - 64, 23, 73, 58, 31, 79, 116, 238, 207, 228, 85, 190, 61, 169, 237, 153, 100, - 29, 129, 97, 13, 254, 180, 104, 182, 7, 218, 148, 29, 87, 20, 231, 181, 26, - 238, 44, 69, 170, 14, 156, 77, 160, 33, 178, 55, 0, - ]); - //Verifies the signature of the encoded data with the provided key const verified = await crypto.subtle.verify( { @@ -51,9 +16,44 @@ export default async function () { hash: "SHA-384", }, publicKey, - signature1, - plaintText + invalidSignature, + plainText ); console.log("verified: ", verified); } + +const spkiPublicKeyData = new Uint8Array([ + 48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, + 98, 0, 4, 29, 49, 157, 105, 45, 202, 95, 87, 84, 186, 123, 50, 193, 22, 66, + 198, 216, 210, 180, 251, 130, 73, 195, 242, 20, 215, 30, 144, 181, 37, 41, + 102, 217, 127, 123, 235, 31, 170, 177, 228, 243, 226, 96, 85, 73, 194, 238, + 219, 82, 3, 41, 179, 190, 166, 181, 229, 86, 36, 161, 81, 80, 161, 105, 102, + 99, 95, 25, 22, 239, 4, 221, 117, 142, 105, 64, 157, 6, 51, 203, 75, 37, 153, + 65, 121, 178, 42, 118, 156, 116, 52, 54, 145, 14, 121, 153, 81, +]); + +const plainText = new Uint8Array([ + 95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, + 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, 213, + 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, 60, + 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, 162, + 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, 52, 206, + 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, 54, 149, + 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, 140, 234, + 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, 117, 77, + 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, 125, 131, 108, + 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, 1, 99, 84, 19, + 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, 22, 219, 204, + 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, 193, 194, 72, + 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, 171, +]); + +const invalidSignature = new Uint8Array([ + 13, 217, 194, 199, 240, 182, 244, 217, 50, 130, 84, 169, 2, 232, 115, 116, + 179, 192, 146, 25, 94, 107, 226, 26, 161, 166, 220, 216, 235, 166, 15, 123, + 11, 56, 196, 0, 109, 250, 33, 70, 212, 233, 253, 35, 220, 51, 97, 121, 151, + 64, 23, 73, 58, 31, 79, 116, 238, 207, 228, 85, 190, 61, 169, 237, 153, 100, + 29, 129, 97, 13, 254, 180, 104, 182, 7, 218, 148, 29, 87, 20, 231, 181, 26, + 238, 44, 69, 170, 14, 156, 77, 160, 33, 178, 55, 0, +]); diff --git a/examples/sign_verify/verify-spki-ecdsa-valid.js b/examples/sign_verify/verify-spki-ecdsa-valid.js index d8c9a27..4bc26ac 100644 --- a/examples/sign_verify/verify-spki-ecdsa-valid.js +++ b/examples/sign_verify/verify-spki-ecdsa-valid.js @@ -3,43 +3,12 @@ import { crypto } from "k6/x/webcrypto"; export default async function () { const publicKey = await crypto.subtle.importKey( "spki", - new Uint8Array([ - 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, - 61, 3, 1, 7, 3, 66, 0, 4, 10, 5, 30, 56, 111, 103, 196, 166, 225, 229, - 203, 238, 125, 55, 116, 91, 88, 142, 190, 114, 15, 117, 89, 22, 40, 111, - 150, 41, 105, 122, 57, 23, 17, 216, 106, 234, 201, 103, 8, 210, 58, 38, - 35, 216, 198, 237, 187, 84, 217, 164, 63, 100, 6, 105, 49, 128, 15, 53, - 29, 158, 117, 235, 238, 30, - ]), + spkiPublicKeyData, { name: "ECDSA", namedCurve: "P-256" }, true, ["verify"] ); - let plaintText = new Uint8Array([ - 95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, - 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, - 213, 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, - 60, 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, - 162, 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, - 52, 206, 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, - 54, 149, 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, - 140, 234, 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, - 117, 77, 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, - 125, 131, 108, 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, - 1, 99, 84, 19, 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, - 22, 219, 204, 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, - 193, 194, 72, 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, - 171, - ]); - - let signature1 = new Uint8Array([ - 83, 223, 63, 226, 42, 29, 106, 105, 225, 145, 197, 180, 118, 154, 109, 110, - 66, 67, 47, 251, 53, 190, 203, 65, 207, 36, 19, 57, 49, 122, 124, 118, 59, - 74, 222, 134, 42, 235, 180, 229, 134, 24, 205, 81, 171, 156, 100, 218, 127, - 242, 126, 53, 27, 77, 249, 101, 157, 132, 244, 30, 67, 30, 64, 12, - ]); - //Verifies the signature of the encoded data with the provided key const verified = await crypto.subtle.verify( { @@ -47,9 +16,41 @@ export default async function () { hash: "SHA-256", }, publicKey, - signature1, + signature, plaintText ); console.log("verified: ", verified); } + +const spkiPublicKeyData = new Uint8Array([ + 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, + 3, 1, 7, 3, 66, 0, 4, 10, 5, 30, 56, 111, 103, 196, 166, 225, 229, 203, 238, + 125, 55, 116, 91, 88, 142, 190, 114, 15, 117, 89, 22, 40, 111, 150, 41, 105, + 122, 57, 23, 17, 216, 106, 234, 201, 103, 8, 210, 58, 38, 35, 216, 198, 237, + 187, 84, 217, 164, 63, 100, 6, 105, 49, 128, 15, 53, 29, 158, 117, 235, 238, + 30, +]); + +const plaintText = new Uint8Array([ + 95, 77, 186, 79, 50, 12, 12, 232, 118, 114, 90, 252, 229, 251, 210, 91, 248, + 62, 90, 113, 37, 160, 140, 175, 231, 60, 62, 186, 196, 33, 119, 157, 249, 213, + 93, 24, 12, 58, 233, 148, 38, 69, 225, 216, 47, 238, 140, 157, 41, 75, 60, + 177, 160, 138, 153, 49, 32, 27, 60, 14, 129, 252, 71, 202, 207, 131, 21, 162, + 175, 102, 50, 65, 19, 195, 182, 98, 48, 195, 70, 8, 196, 244, 89, 54, 52, 206, + 2, 178, 103, 54, 34, 119, 240, 168, 64, 202, 116, 188, 61, 26, 98, 54, 149, + 44, 94, 215, 170, 248, 168, 254, 203, 221, 250, 117, 132, 230, 151, 140, 234, + 93, 42, 91, 159, 183, 241, 180, 140, 139, 11, 229, 138, 48, 82, 2, 117, 77, + 131, 118, 16, 115, 116, 121, 60, 240, 38, 170, 238, 83, 0, 114, 125, 131, 108, + 215, 30, 113, 179, 69, 221, 178, 228, 68, 70, 255, 197, 185, 1, 99, 84, 19, + 137, 13, 145, 14, 163, 128, 152, 74, 144, 25, 16, 49, 50, 63, 22, 219, 204, + 157, 107, 225, 104, 184, 72, 133, 56, 76, 160, 62, 18, 96, 10, 193, 194, 72, + 2, 138, 243, 114, 108, 201, 52, 99, 136, 46, 168, 192, 42, 171, +]); + +const signature = new Uint8Array([ + 83, 223, 63, 226, 42, 29, 106, 105, 225, 145, 197, 180, 118, 154, 109, 110, + 66, 67, 47, 251, 53, 190, 203, 65, 207, 36, 19, 57, 49, 122, 124, 118, 59, 74, + 222, 134, 42, 235, 180, 229, 134, 24, 205, 81, 171, 156, 100, 218, 127, 242, + 126, 53, 27, 77, 249, 101, 157, 132, 244, 30, 67, 30, 64, 12, +]);