import { describe, expect, it } from "vitest"; import { Uint8ArrayToHex } from "./../encoding"; import { SigsumProof } from "./../proof"; describe("SigsumProof", () => { it("parses a full version 1 proof with cosignatures and inclusion proof", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; const proof = await SigsumProof.fromAscii(text); expect(proof.version).toBe(1); expect(proof.inclusion.LeafIndex).toBe(898); expect(proof.inclusion.Path).toHaveLength(4); expect( Uint8ArrayToHex(proof.treeHead.SignedTreeHead.TreeHead.RootHash.bytes), ).toBe("22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235"); expect(proof.treeHead.Cosignatures.size).toBe(5); }); it("parses a full version 2 proof with cosignatures and inclusion proof", async () => { const text = ` version=2 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; const proof = await SigsumProof.fromAscii(text); expect(proof.version).toBe(2); expect(proof.inclusion.LeafIndex).toBe(898); expect(proof.inclusion.Path).toHaveLength(4); expect( Uint8ArrayToHex(proof.treeHead.SignedTreeHead.TreeHead.RootHash.bytes), ).toBe("22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235"); expect(proof.treeHead.Cosignatures.size).toBe(5); }); it("fails when version line is missing", async () => { const text = ` log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing version line", ); }); it("fails on unknown proof version", async () => { const text = ` version=5 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "unknown proof version 5", ); }); it("fails on missing log line", async () => { const text = ` version=2 leaf=7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 tree_size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing log line", ); }); it("fails on missing leaf line", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing leaf line", ); }); it("fails on invalid leaf line format for version 1", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "invalid leaf line format", ); }); it("fails if tree head start line is missing", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing tree head start", ); }); it("fails if leaf_index line is missing", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing leaf_index", ); }); it("fails if leaf_index is negative", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=-1 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "invalid leaf_index value", ); }); it("fails if node_hash is not 32 bytes", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27aa `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "node_hash must be 32 bytes", ); }); it("fails if tree head signature is missing", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "missing tree head signature", ); }); it("fails if multiple leaf_index lines are present", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 leaf_index=12 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(() => SigsumProof.fromAscii(text)).rejects.toThrow( "duplicate leaf_index line in inclusion proof", ); }); it("fails when cosignature timestamp is invalid", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 abab 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27`; await expect(SigsumProof.fromAscii(text)).rejects.toThrow( "invalid cosignature timestamp", ); }); it("fails when tree_head is missing required fields", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(SigsumProof.fromAscii(text)).rejects.toThrow( "missing tree_head fields", ); }); it("fails when inclusion proof line is malformed (missing key or value)", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index= node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(SigsumProof.fromAscii(text)).rejects.toThrow( "invalid line in inclusion proof: leaf_index", ); }); it("fails when a cosignature line has an invalid format", async () => { const text = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=899 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(SigsumProof.fromAscii(text)).rejects.toThrow( "invalid cosignature format", ); }); it("fails when tree size is invalid (zero)", async () => { const proofText = ` version=1 log=4e89cc51651f0d95f3c6127c15e1a42e3ddf7046c5b17b752689c402e773bb4d leaf=ecb6 7d3978c978cc37b40126a797f030d7d54b5d9bf4ab90e188f3def35707d17e97 31505539369056e89a6c02f7c829117ac463f5a6e6fb63f8ca2855370189a7deee7e780e89ee9157f951ed071041e8bedc06936248faad56972246e989f42700 size=0 root_hash=22596c882dcdfbfaba693cb69b225c81a8a980e84b3ad5fc1fcd6a256ebdc235 signature=3aecf643c42d15863000576668980107a0569847f1b3f43df70dcbf0705bb580daf6fa64c586f4ef780a1b02085030bab93c845136ed1f9c78ec961393dfc100 cosignature=1c997261f16e6e81d13f420900a2542a4b6a049c2d996324ee5d82a90ca3360c 1748943073 982dfe23af264de276e35567e162139ad2cdbac947b9ff6dc70aee02c3aa798b3a46dc7d289067107e52d10da057129238e07afc33a1610a2833f5fcc3334401 cosignature=70b861a010f25030de6ff6a5267e0b951e70c04b20ba4a3ce41e7fba7b9b7dfc 1748943073 bd94fbf4c5b5ee953b09d4a629ef8676bd3742f19bb1cae04a8f1eb68a6f7d89ac522b6ec9fdeb1d774a6d2eb830941388b9e85af16233fe74bce39d95b7f101 cosignature=49c4cd6124b7c572f3354d854d50b2a4b057a750f786cf03103c09de339c4ea3 1748943073 183f9a001b8bd7c74b0d3efa1718f09ed068286e8e8df1d96ab0991e1b720fe6494f6aa318ad9d17fce8f5c14622954f503ddfb1762a45fdc29add7d0259af0a cosignature=42351ad474b29c04187fd0c8c7670656386f323f02e9a4ef0a0055ec061ecac8 1748943073 1f030dfaca94fd67c57df940793617f6547e5499482eab55cfb46e4a295f65cd34117ea6423658d58d4b1d6de4e0e0843d27c47b3a3f6c500663c9c2930c890a cosignature=e923764535cac36836d1af682a2a3e5352e2636ec29c1d34c00160e1f4946d31 1748943073 d1fa17d4973a1cb2c5c04395144bfce6a9c74bf0c2dafc3383d6c89e9b52b711e04b74463f2a6302027ecb7daf9f70f23efeb5d7f71a6e230a8c59f58d72c202 leaf_index=898 node_hash=3d04592ab6e0b742e8fbc1b4ed797bf1679559d03ccb2990305a82bc4fa0a801 node_hash=abc5352f9af6df2f2c0a06381043393af36555170c01b3004507af7d36fd22a4 node_hash=4e301e7ae4f9abb0c710cae380daa991b95528b0d631ce04a001c28236e4f938 node_hash=b6be547daa4f6b3d42628bb14020e9b2d73a4ee8cf3c4e0a3b88793916926f27 `; await expect(SigsumProof.fromAscii(proofText)).rejects.toThrow( "invalid tree size", ); }); });