Files
tlsn-js/test/e2e/simple-verify.spec.ts
2025-02-19 21:50:08 +08:00

44 lines
16 KiB
TypeScript

import { Presentation as _Presentation } from '../../src/lib';
// import { assert } from '../utils';
import * as Comlink from 'comlink';
import { Transcript } from '../../src/lib';
import { assert } from '../utils';
const { init, Presentation }: any = Comlink.wrap(
// @ts-ignore
new Worker(new URL('../worker.ts', import.meta.url)),
);
(async function verify_simple() {
try {
await init({ loggingLevel: 'Debug' });
console.time('verify');
const proofHex = `0140000000000000006fc791bed8890ebd4cbd29f8fd287184b661c00228e186f22ef088140aace3b570a7c245416a3a3b2e5fbc8ccb50a684171c47967a60332e48e0583a4ee199bb64b8f97758c1f0925dd44faea0b63fa600000000022000000000000000c7f6333371a728b7231b604add3bca949c8a02aaace708167c50259128d567ea00000000012100000000000000025e4ab64016ba29daecc3238795ff16dfa586ca7900280bbe1576080c2372c81801000000d783fd66000000000000000088000000d503000002000000000000004100000000000000043354e3d9e521512a92d94475e3f933dddf3c932b991763523fbff4465e611b44227c822638922db85f4dcca15d35669a5df867f5dc1aacaaecc17c6cb2a1565303000000022000000000000000f7213d0c1cf1f8c2d5ede7d1e765ca8bd53df5f442490a472127211800d151b90104000000022000000000000000c473cdb7f7a47048a743f9013652fba94f3430354708321988190d6719f94b36200000000000000033a2301c7a8914fdcfbc8294a5fddd58f6ea021ab1223b9b5ef54a2d2727f6b60000000000000000020500000000000000000000000000000001090000000000000073776170692e6465760200000000000000e504000000000000308204e1308203c9a0030201020212040e6bddc9c867581bd1fe861e51effc6741300d06092a864886f70d01010b05003033310b300906035504061302555331163014060355040a130d4c6574277320456e6372797074310c300a06035504031303523130301e170d3234303732353138313030325a170d3234313032333138313030315a3014311230100603550403130973776170692e64657630820122300d06092a864886f70d01010105000382010f003082010a0282010100ab14ab8a1c5d57666595d89614a985463bcb64057e324b5f747da1fc3ad527b0c3582849971c07e8815bed09414e5e18bde5e353bf8d9df4662c858dc39614cd2c2f688c413ebe38738db4e812b9505149e777ff2f694a3318ffe04f62f7052c7442b73515f2058b9c6db5f94daea900eba8c1c8dd0db05f7467996f73cb7ffc7ce930e0f2e95d6c420dba923412065003ea8ba716a0232f2dfd16368f6274fb23663b7561b8f38d3b061c49e5b5d35bba2b03f428af683074b38b33d6fcde4a9722a800ad4d4fba2cdf22b0b1444dc744c322c597fee0edc698fdd3c7cfaaa8fa63c23529b6995863552636dbadb358281bdf16ab7c5236a4eeb9ae2352aee10203010001a382020c30820208300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff04023000301d0603551d0e041604145b2712a1f0716bc6a81589f49af7ba123c7bfdac301f0603551d23041830168014bbbcc347a5e4bca9c6c3a4720c108da235e1c8e8305706082b06010505070101044b3049302206082b060105050730018616687474703a2f2f7231302e6f2e6c656e63722e6f7267302306082b060105050730028617687474703a2f2f7231302e692e6c656e63722e6f72672f30140603551d11040d300b820973776170692e64657630130603551d20040c300a3008060667810c01020130820103060a2b06010401d6790204020481f40481f100ef0075003f174b4fd7224758941d651c84be0d12ed90377f1f856aebc1bf2885ecf8646e00000190eb4ce2b30000040300463044022002dc6df6010b672341044a043bd0f226a8e7d82a91ec625b538caecc86e7a128022011f0a85da14142642ead5e2a9d48fd44914940df2044942500097f313693a1e100760048b0e36bdaa647340fe56a02fa9d30eb1c5201cb56dd2c81d9bbbfab39d8847300000190eb4ce2aa00000403004730450220720519eda2def160c991ea840ccc032f42f7f1ff32a200d9a2699c62366b7fbb022100de0aa1bff38efdef5c4e4ee8ae42eb02831a95d8c5a5df32a94c01672efc70e7300d06092a864886f70d01010b050003820101001386e3aa6c1e17247420870f89615f903c5020df62fa842e24a950516e6c7c82002befe448326db8b1baecdd7484c41b5256fc64b0f727e96e57189e45dbb6b7d9b8fcb4600154b1620738781643129a763c4761bb5e8781a11157654fc3fafad14c654e5dc8c3b131e61023ea03b9285bc651ff209f31a8d617b42524644731233ed88a5722a4ed5406ff6c877c20ed55fce6eb377d3d4018dbba99ba680932772cf1bb07d7e8e48cb1b210d1780ce168738e4d78bcf1da5a619c07d645629b5b0a3d0dca55aef13f24dc592266cf39fb1cdccca25a93f270c56c581776ba87a52cc7291496cd5feac433dffb986c7484643233232e11fa893634d0c7fc3bd9090500000000000030820505308202eda00302010202104ba85293f79a2fa273064ba8048d75d0300d06092a864886f70d01010b0500304f310b300906035504061302555331293027060355040a1320496e7465726e65742053656375726974792052657365617263682047726f7570311530130603550403130c4953524720526f6f74205831301e170d3234303331333030303030305a170d3237303331323233353935395a3033310b300906035504061302555331163014060355040a130d4c6574277320456e6372797074310c300a0603550403130352313030820122300d06092a864886f70d01010105000382010f003082010a0282010100cf57e5e6c45412edb447fec92758764650288c1d3e88df059dd5b51829bdddb55abffaf6cea3beaf00214b625a5a3c012fc55803f689ff8e1143ebc1b5e01407968f6f1fd7e7ba8139097565b7c2af185b372628e7a3f4072b6d1affab58bc95ae40ffe9cb57c4b55b7f780d1861bc17e754c6bb4991cd6e18d18085eea66536bc74eabc504ceafc21f338169394bab0d36b3806cd16127aca5275c8ad76b2c29c5d98455c6f617bc62dee3c13528601d957e6381cdf8db51f92919ae74a1ccc45a87255f0b0e6a307ecfda71b669e3f488b71847158c93afaef5ef25b442b3c74e78fb247c1076acd9ab70d96f712812651540aec61f6f7f5e2f28ac8950d8d0203010001a381f83081f5300e0603551d0f0101ff040403020186301d0603551d250416301406082b0601050507030206082b0601050507030130120603551d130101ff040830060101ff020100301d0603551d0e04160414bbbcc347a5e4bca9c6c3a4720c108da235e1c8e8301f0603551d2304183016801479b459e67bb6e5e40173800888c81a58f6e99b6e303206082b0601050507010104263024302206082b060105050730028616687474703a2f2f78312e692e6c656e63722e6f72672f30130603551d20040c300a3008060667810c01020130270603551d1f0420301e301ca01aa0188616687474703a2f2f78312e632e6c656e63722e6f72672f300d06092a864886f70d01010b0500038202010092b1e74137eb799d81e6cde225e13a20e9904495a3815ccfc35dfdbda070d5b19628220bd2f228cf0ce7d4e6438c24221dc14292d109af9f4bf4c8704f2016b15add01f61ff81f616b1427b0728d63aeeee2ce4bcf37ddbba3d4cde7ad50adbdbfe3ec3e6236709931a7e88dddea62e212aef59cd43d2c0caad09c79beea3d5c446e9631635a7dd67e4f24a04b057f5e6fd2d4ea5f334b13d657b6cade51b85da3098274fdc7789eb3b9ac16da4a2b96c3b68b628ff97419a29e03dee96f9bb00fd2a05af6855cc204b7c8d54e32c4bf045dbc29f6f7818f0c5d3c53c940908bfbb60865b9a421d509e51384843782ce1028fc76c206257a46524dda5372a4273f6270acbe694800fb670fdb5ba1e8d703212dd7c9f69942398343df770a1208f125d6ba9419541888a5c58ee11a9993796bec1cf93140b0cc3200df9f5ee7b492ab9082918d0de01e95ba593b2e4b5fc2b74635523906c0bdaaac52c122a0449799f70ca021a7a16c714716170168c0caa62665047cb3aec9e79455c26f9b3c1ca9f92ec5201af076e0beec18d64fd825fb7611e8bfe6210fe8e8ccb5b6a7d5b8f79f41cf6122466a83b668972e7cea4e95db23eb2ec82b2884a460e949f4442e3bf9ca625701e25d9016f9c9fc7a23488ea6d58172f128fa5dcefbed4e738f942ed241949899dba7af705ff5befb0220bf66276cb4adfa75120b2b3ece039e060000000001000000000000137f007ee1b2fb66a61529c05fc92ab6ce55df32863578f367d71673c1d97db0fbda30336e4d6d9c7d825d5c7ae82a02e623dabecfa73edc4be676d1d82492816383042a776934ba5dd7d35f31ede99188d7885e082e8d2d93219c7e79395ff9ee72d87b6bb0bf1458b13b745aa79d2c85058323d1c87b1312196afd4e8067b5f605b27e99dc94613d98754b4b6f5eaa980b8c3e806947cb2e4bc11b2cb7b11f958769fb93f1ef62c8a5bf08021d9258333cc46e44553fdca1498b679e6d379ecb60ee68c91b1b6b7128103eb49911130d772eaad13b7473b5e37505bfe6f2dfe491d78e742032df4a058ccefc220dab8fa1eed9abf18fcc3e3ffd86023380320000000040a0f7fcaa227f66d09b2aeca31deff2536d5212607f8958b9c084f7cf67b4f93cd14e86ddfb7a5d09d81a40cdd5eff07d66d00dc8ee98baaa9c803f6fecf54f000000004100000000000000043354e3d9e521512a92d94475e3f933dddf3c932b991763523fbff4465e611b44227c822638922db85f4dcca15d35669a5df867f5dc1aacaaecc17c6cb2a156538eff86b9bca06876def9d45706cacf800101023e0000000000000000000000000000003e0000000000000039000000000000000100000001000000000000006b000000000000006c0000000000000001000000000000000a7a753949b9443f9ee27e805a444fd18f3c000000000000000000000001000000000000002b000000000000002c0000000000000001000000000000000deb0fa3adc42e9b50083f875365ffe6102d000000000000000000000001000000000000008400000000000000850000000000000001000000000000000d9ae9f249f1cd16d1bb955e7bd06b8c8d1b000000000000000100000001000000000000007b010000000000008f01000000000000140000000000000022686169725f636f6c6f72223a22626c6f6e6422a2c1c9b682e3e093f0d6548cccec96e101000000000000000100000001000000000000006c0000000000000086000000000000001a000000000000005472616e736665722d456e636f64696e673a206368756e6b65647ecd7c99bc8fbe222a8137c8db756da52600000000000000010000000100000000000000b100000000000000cc000000000000001b00000000000000582d4672616d652d4f7074696f6e733a2053414d454f524947494eca39c0263fe6e15533a7ad541a55a5180d000000000000000100000001000000000000003f01000000000000400100000000000001000000000000000a5dcc3981b92090b1fdb13ae0c2aaf8f01c0000000000000001000000010000000000000027000000000000004a000000000000002300000000000000446174653a205765642c203032204f637420323032342031373a33333a313420474d5426a6867001645b3fccf3dd2e868feba73700000000000000010000000100000000000000b000000000000000b10000000000000001000000000000000a6a6a3bc110ef18f987f97b0fa8505a5216000000000000000100000001000000000000001000000000000000110000000000000001000000000000000af1d2248953de6d323ef18b076e65feb51f000000000000000000000001000000000000007300000000000000740000000000000001000000000000000d8028110e867bee617f0b1146c95cbca304000000000000000100000001000000000000001201000000000000130100000000000001000000000000000ac32a74ceed0802cbeb0ffb5adde101fa34000000000000000000000001000000000000008500000000000000860000000000000001000000000000000ad67cca5f58136050d3c6912b2f31270f0a000000000000000100000001000000000000002600000000000000270000000000000001000000000000000a30cae9cc6e4fd44689df5bea7037bb370c000000000000000000000001000000000000002c000000000000002d0000000000000001000000000000000ad5aeb98e9939416f5e54877b1d8efbba32000000000000000100000001000000000000009001000000000000a301000000000000130000000000000022736b696e5f636f6c6f72223a22666169722219f1c2acf37d9be984ca9be1448b19f935000000000000000100000001000000000000008700000000000000880000000000000001000000000000000a7f115d78bcc95b61861e66c41b89556e2c000000000000000000000001000000000000008600000000000000870000000000000001000000000000000d368fb0c6e4f5706d419888eab3fba6e524000000000000000100000001000000000000004c000000000000006a000000000000001e00000000000000436f6e74656e742d547970653a206170706c69636174696f6e2f6a736f6e4356bbab753b3dda9cc1b51a8f6174b02300000000000000010000000100000000000000d403000000000000d50300000000000001000000000000000a40fdf500e590bf3413b9fecbe74dba333a000000000000000100000001000000000000002500000000000000260000000000000001000000000000000dc4143150b97ec34410aa73b8bf02146313000000000000000100000001000000000000004a000000000000004b0000000000000001000000000000000da57e6c497ffb70c109acebf88fc7368617000000000000000100000001000000000000003e010000000000003f0100000000000001000000000000000dd566a5780bad2e8df962f916e304c7c929000000000000000000000001000000000000005300000000000000540000000000000001000000000000000db6cbf15febaa7839d1c1f63a3cacc0ee03000000000000000000000001000000000000003f00000000000000400000000000000001000000000000000a057f288460c4e5a6e651a77236a01ee819000000000000000100000001000000000000009b00000000000000af000000000000001400000000000000566172793a204163636570742c20436f6f6b696531f94c648e53c141e0d1dd3167d58efe10000000000000000100000001000000000000004601000000000000470100000000000001000000000000000ac1c5e8ddfbec3ebe8b5bec451c7262ee2100000000000000010000000100000000000000d203000000000000d30300000000000001000000000000000a7600e3808998aff33d406f1e8ae53f1a080000000000000001000000010000000000000000000000000000000f000000000000000f00000000000000485454502f312e3120323030204f4bc864c9476d6e63ce7a362abe5dc2c9090e00000000000000010000000100000000000000ce03000000000000cf0300000000000001000000000000000daf8dbc7edd61062259bcdd2ea0ba3e632e000000000000000000000001000000000000007400000000000000750000000000000001000000000000000abbbce1a4af83251caab8ebfae4d085bb07000000000000000000000001000000000000003e000000000000003f0000000000000001000000000000000d089bae464de8060a04a8241daf3dc03831000000000000000000000001000000000000008700000000000000880000000000000001000000000000000afe7a54c18469ffd1af02a1defeeac68b38000000000000000100000001000000000000004001000000000000410100000000000001000000000000000d9c5665e50ace48b41c7bd79c2feeab1d0500000000000000000000000100000000000000550000000000000073000000000000001e00000000000000636f6e74656e742d747970653a206170706c69636174696f6e2f6a736f6e9ebeb53c186e4e90056ee931863c1f890b00000000000000010000000100000000000000f700000000000000f80000000000000001000000000000000a5a2e2c5b508d76a6fbceec6e1638fa2b25000000000000000100000001000000000000009a000000000000009b0000000000000001000000000000000a405afc8933e87a6a801313359f46edce33000000000000000100000001000000000000004b000000000000004c0000000000000001000000000000000aa044e9f61e634b6e2eb4dbac390450673b000000000000000100000001000000000000008600000000000000870000000000000001000000000000000dcc1ece7320ab37e643e38dd1471004c00f00000000000000010000000100000000000000880000000000000099000000000000001100000000000000436f6e6e656374696f6e3a20636c6f736569908408f7ece775d122cd24e6e79cf73000000000000000010000000100000000000000cf03000000000000d00300000000000001000000000000000a9fa9647df018591990aac7ab11074ccb20000000000000000000000001000000000000002d000000000000003e000000000000001100000000000000636f6e6e656374696f6e3a20636c6f7365947f00fd6bdd0bfee762b744997f52c627000000000000000100000001000000000000004101000000000000420100000000000001000000000000000ab9e6b68732ca81ee282bd593d6e2140a36000000000000000100000001000000000000006a000000000000006b0000000000000001000000000000000d88251da7b7f32b8ff979c405732ef864020000000000000000000000010000000000000000000000000000002b000000000000002b000000000000004745542068747470733a2f2f73776170692e6465762f6170692f70656f706c652f3120485454502f312e31b9929bd72121fe040e030931b9d3b00d000000000000000001000000010000000000000099000000000000009a0000000000000001000000000000000d95389900e6d4d69c962cdead254595021100000000000000000000000100000000000000750000000000000084000000000000000f00000000000000686f73743a2073776170692e6465762af79505c11ab17dc2d534930505223906000000000000000000000001000000000000005400000000000000550000000000000001000000000000000a9b3d0feedd36d5fc4316271c577adfde22000000000000000100000001000000000000001100000000000000250000000000000014000000000000005365727665723a206e67696e782f312e31362e315af87fcd1beac2830e856bce46158df90900000000000000010000000100000000000000ce00000000000000f6000000000000002800000000000000455461673a2022656533393836313034333563333238663464306134653162306432663762626322cd1b2d0db47a0b6eaa529c01e07b03992f00000000000000010000000100000000000000f80000000000000011010000000000001900000000000000416c6c6f773a204745542c20484541442c204f5054494f4e53202100f13b2317755b69cff087b14c0f2800000000000000010000000100000000000000cc00000000000000cd0000000000000001000000000000000d6a7c393b3818b5147f6caa4bbd77c7871400000000000000010000000100000000000000d103000000000000d20300000000000001000000000000000d1441a9a86816e09085d61dcafe03c4d42a0000000000000001000000010000000000000013010000000000003e010000000000002b000000000000005374726963742d5472616e73706f72742d53656375726974793a206d61782d6167653d3135373638303030451a838845603cc53053b695fdd7d65c1d00000000000000010000000100000000000000af00000000000000b00000000000000001000000000000000d485d147b2b6bc1dfd6216387178222cb15000000000000000100000001000000000000000f00000000000000100000000000000001000000000000000dd8771ab2181202d2fe12af56ec7956c5120000000000000001000000010000000000000048010000000000005f010000000000001700000000000000226e616d65223a224c756b6520536b7977616c6b657222a073addf10e5816040ae84dab8c66bc018000000000000000100000001000000000000001101000000000000120100000000000001000000000000000d2f8c548343540551574ac8b2528995051e00000000000000010000000100000000000000f600000000000000f70000000000000001000000000000000da37dd4c0e226d7429486ecbeda715d272b00000000000000010000000100000000000000d303000000000000d40300000000000001000000000000000d79aa1713a51fcd2566afda4c7f16d9603d00000000000000010000000100000000000000cd00000000000000ce0000000000000001000000000000000a227bcf0ab01b18227b5f1ba4bb1b534f1a000000000000000100000001000000000000004501000000000000460100000000000001000000000000000ddef8cd55716eaab75abe930809c24e550000000000000000`;
const proof = (await new Presentation(proofHex)) as _Presentation;
const result = await proof.verify();
console.timeEnd('verify');
const transcript = new Transcript({
sent: result.transcript.sent,
recv: result.transcript.recv,
});
const sent = transcript.sent();
const recv = transcript.recv();
assert(sent.includes('host: swapi.dev'));
assert(!sent.includes('secret: test_secret'));
assert(recv.includes('"name":"Luke Skywalker"'));
assert(recv.includes('"hair_color":"blond"'));
assert(recv.includes('"skin_color":"fair"'));
// @ts-ignore
document.getElementById('simple-verify').textContent = 'OK';
} catch (err) {
console.log('caught error from wasm');
console.error(err);
// @ts-ignore
document.getElementById('simple-verify').textContent = err.message;
}
})();