import * as WebCrypto from "node-webcrypto-ossl" // @ts-ignore global.crypto = new WebCrypto() import { shamir } from "../icc-x-api/crypto/shamir" import { expect } from "chai" import "mocha" describe("Shamir split", () => { it("should return 5 splits", () => { const data = "308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100ae3b1ec648ab1eaf23a7840d1cab5ade2397c514327df99f20ff9b28d584f5bce0e5af14ae815d3d07752b7a729d18a4769d8886e2119544844e09fb73a4b08eee8e9100def4f7b1b8c571b67a23f0bcc798f689a6f6c9dcd83da18ff1d899dd9919064ef22e2170bd36f197f4d98463842c334048c035c675572c3a6ccb80ba334a108f3c2daeae30403dbd911a40e6221ad359d94c0ef56c4f3a6306de62072915c9255c793f04358d4af784edfe697af3b7d103ca250476d6f8e5784f9f5cb687a36805aaf180e076153ad017de1d60984ca10e644f32bfcdc0951ed23e4926cbbd4088edcbcc82fb5c90be5670ab157b05d8e1a09aac344edab74fe7cb390203010001028201005702ad5ec6c1b6842ea124e04b7603de36164054d2d678c81079b62a115fe23d1e6f761d34fce3ec6b8207619245841df622bc20e85b7199131dc9fc6a874fa941d7aef0a967db1f45304d969caec035f6d41c23285fccf5de8400e05b1e19d141f8ee5e94b196ffaf6ef5fe36483ec658269ebdb6d74ec3baabfb297e55af05fb4d66d6c3f4d2e130ca3cf6be3be5b6398c3d61db59c6cebb992dfea565dfd78c1606074ecf0e751399dbc77f13a9f377d6fa97a82f0f9c6f4e34aa28682bd73db56d9a584c5926c5b080586e6db05ca7f687ec1cef92677f0527dfca526da0d6dcbdce97000ffef547ebf5422e8187eaab2459167026c7ae3e2e116dbe1dd102818100d530d272ad1b4ddf6fff7030be9898706050db8f1e6ba38c41449d8d47783cf2f7be44ab62ac96fc2d3899f4061f6da5c6003a50ea7c7b8e1f3efd594fe2fdcc37fe811e0c664bda4c06dd35d990c9a06a5e75c035691b346a73b8e99d2bbe55784e1ab952a8b0a36d8ed31e31885f0685f3ec0a30e45bb27dcbbfca8499cddd02818100d1378d1047bd7743908165b939a3ccf8a325b3e1d8742a1c40cb6a64ba2d8358122ae0a5655ab2c70a6974945f3ca03e28addb6b717515e262ae1456fc147634756502a8ca5af78d4b0c4fd058f2d3bc8af2c774dc5cdd11b6684c3a80d3cfdb7e23bdccdbe0427102c9192bfb061f4be01b89001c38846733d390d17f5dc30d028181008bf8fb2389de9479705a6139cfd9f6b449b8acff41b4e07394e2cd22d65aee818401abaa6f25ec17f444e667dea141e786a1dda804dce86e7ebb67b1fd0e871e4f614d3b025f23cc570066bb1576c7bb083baeca1d073e7262b64a21302d69514aa4d54cfa25819c3bb17b91a669e8222b4ee49a2851b696f19b15f88ca9430d0281801b52c4f27e5c092a62c1f37608481329d9acbfdc5bf777d46ec5e2243b885c21f165762743a05fbecce64eda5dc1be2fc0024ca8b08d990912d82741e0f40f27f4b8f76af1da8580077019305d9d80f79bb1ef489ccae7f83b394dd34a25df7c8bf1c104f3264ba714b50cbb88b218fe40cb77cdf2e192b123bc9aaa31971e35028180152331e170a193d0731cfda0b3a27c1a5d8e9b0760ad137804f4e28568ee049b0d9a02e2474407e554fa77e25ab82ceb83ab0f046d3d8948ce1094cdf93fd76fcec0b72f611fcfad9629b59335cec3b2f07bec9d0aade92276d81af818bf50d046361a7d196285e872f78f68722275cc530ddceefb9706a37c40554eedd0c704" const result = shamir.share(data, 5, 3) expect(result.length).to.equal(5) }) }) describe("Shamir combine", () => { it("should return combined data from all shares", () => { const data = "308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100ae3b1ec648ab1eaf23a7840d1cab5ade2397c514327df99f20ff9b28d584f5bce0e5af14ae815d3d07752b7a729d18a4769d8886e2119544844e09fb73a4b08eee8e9100def4f7b1b8c571b67a23f0bcc798f689a6f6c9dcd83da18ff1d899dd9919064ef22e2170bd36f197f4d98463842c334048c035c675572c3a6ccb80ba334a108f3c2daeae30403dbd911a40e6221ad359d94c0ef56c4f3a6306de62072915c9255c793f04358d4af784edfe697af3b7d103ca250476d6f8e5784f9f5cb687a36805aaf180e076153ad017de1d60984ca10e644f32bfcdc0951ed23e4926cbbd4088edcbcc82fb5c90be5670ab157b05d8e1a09aac344edab74fe7cb390203010001028201005702ad5ec6c1b6842ea124e04b7603de36164054d2d678c81079b62a115fe23d1e6f761d34fce3ec6b8207619245841df622bc20e85b7199131dc9fc6a874fa941d7aef0a967db1f45304d969caec035f6d41c23285fccf5de8400e05b1e19d141f8ee5e94b196ffaf6ef5fe36483ec658269ebdb6d74ec3baabfb297e55af05fb4d66d6c3f4d2e130ca3cf6be3be5b6398c3d61db59c6cebb992dfea565dfd78c1606074ecf0e751399dbc77f13a9f377d6fa97a82f0f9c6f4e34aa28682bd73db56d9a584c5926c5b080586e6db05ca7f687ec1cef92677f0527dfca526da0d6dcbdce97000ffef547ebf5422e8187eaab2459167026c7ae3e2e116dbe1dd102818100d530d272ad1b4ddf6fff7030be9898706050db8f1e6ba38c41449d8d47783cf2f7be44ab62ac96fc2d3899f4061f6da5c6003a50ea7c7b8e1f3efd594fe2fdcc37fe811e0c664bda4c06dd35d990c9a06a5e75c035691b346a73b8e99d2bbe55784e1ab952a8b0a36d8ed31e31885f0685f3ec0a30e45bb27dcbbfca8499cddd02818100d1378d1047bd7743908165b939a3ccf8a325b3e1d8742a1c40cb6a64ba2d8358122ae0a5655ab2c70a6974945f3ca03e28addb6b717515e262ae1456fc147634756502a8ca5af78d4b0c4fd058f2d3bc8af2c774dc5cdd11b6684c3a80d3cfdb7e23bdccdbe0427102c9192bfb061f4be01b89001c38846733d390d17f5dc30d028181008bf8fb2389de9479705a6139cfd9f6b449b8acff41b4e07394e2cd22d65aee818401abaa6f25ec17f444e667dea141e786a1dda804dce86e7ebb67b1fd0e871e4f614d3b025f23cc570066bb1576c7bb083baeca1d073e7262b64a21302d69514aa4d54cfa25819c3bb17b91a669e8222b4ee49a2851b696f19b15f88ca9430d0281801b52c4f27e5c092a62c1f37608481329d9acbfdc5bf777d46ec5e2243b885c21f165762743a05fbecce64eda5dc1be2fc0024ca8b08d990912d82741e0f40f27f4b8f76af1da8580077019305d9d80f79bb1ef489ccae7f83b394dd34a25df7c8bf1c104f3264ba714b50cbb88b218fe40cb77cdf2e192b123bc9aaa31971e35028180152331e170a193d0731cfda0b3a27c1a5d8e9b0760ad137804f4e28568ee049b0d9a02e2474407e554fa77e25ab82ceb83ab0f046d3d8948ce1094cdf93fd76fcec0b72f611fcfad9629b59335cec3b2f07bec9d0aade92276d81af818bf50d046361a7d196285e872f78f68722275cc530ddceefb9706a37c40554eedd0c704" const shares = [ "8014252b68ad611cc115d14fa118691c977f54ba56eab772889f0aea5dee2468a55ba5d37c950f7faf1cf045f0169d625f6eb7092008bc1e035a5aece2867fb8cc950ce3ce5d35dde29246be654318fdec80c3a9151e382d0ddee81320473062c766998b76dcea9d2b122c8740e177fdfd684732c4cc3df96a86e3f97e7d92ec3051ea8cfff03112efaed3d7937cd708f0fb9afe0ce5a604275f6f3d1ecda6213abe22573df9aa79bbe80b9b1e0668c308fcb6339dea72d1174cc32a56d0bfb646d9fa09e379a630e29b40e463ec4198e20c15dd864bbb0cd72741fedb3ab1a41bf4a48913bb8fc08748ce5698cb6441945a096a1b1d7c6e8991b833f26784089e9d646c26c1558c97bc44d195eff9e55fbc5fc85c683ebe60d96dc6a74d767f58da339a05e47a959b1a2ad3fd6f6b8fafe5ec1d4712052388a133d7cd3fe71662466eeab900e191f6c3c0314cf734ac4494733421a3565566aa351271f37158facfe382c9bbb31ed554bcb8b68558ea6d1f035e8ad32af75321ed5876abf89c6fd6406a23152b1dd2ea26448c63eb304acb8efdff9b4e5eb024888f156c6efaed229b073e836976969ff237cd499c2b8d514f8ce66afe331a1e50036e6c95d0b849d37e5e9b5bf291edc865d16a39a944580a8ae1bec68e739ccaf126ba29037ebc0f26c0eb6d5a7d21e27e5bdfa6dc9d257502992172fa2c4e72aa6c40eeafe1d4a392d5a57454cee2aa76b16dc36cb444f458c72819845467fd1fd556d219a9c609e05aef87349d74ba7afd74733ef8738263b799d714acf5e830d6b28bb1bb3638435d0ee4e00c73f9cfbe286797f185f2fe7901a248e1fea6926153e8d20697575c2a70143d945c4490b23b7518dc2b03fb2de443e27cd1624d27620ccfe70ad59a33a51209cc2b6f329604b121406ea7a9986dec8b43e77cf15f476a3dedaa9de8c7e8860f2a6c837f12b53b761c776c494f07d7801741f96f13804c5c382fe2a3f00b32a4c93d04cd245ccd9238760adc73bd7c93b70828445dc41210b8a05cb364ef294b0f73f2accc780b97c07dd163ce8458973588fbf418bf6a709ed7d6b7bc326ce72b363af1054507ed124028bc300df310e182c34d5cf2d3c4b16688e5bbd2bd6ea43064a655efacfb075d40212b0a6d47d4159f21cf738ef396f0744500ade1bb36eb565bc62ffe86b718588e1f470f44fb67889ffabdf110aefaa59b07b0678baab2fad7cf021cd64533b6964bf62fb503ba78e677f0085f005088edfe17e9e393681aa8eec266e5f8f682ee5cc4663200e29121243d3cebfaf3c68764d37d5e035772f07cb5d257680447b2388dc15001fd1d88fb76e8eab47112ef051d1ee79e7d20f741d8816a4788edb29f9408980c47e6353dba9171f6c91129f7c3d41912db43a7ef5fc193d2c75751a9e06cd53b998ec8aaac03bf7b40c5acad05175adc16036ed7ca7ce2506fa296245a7c9bf8ff913dc1d137b75bdd1845a2062d8fa9dc0b78599cb507784733e9a0bd721b9ffd2ea1cb3c7632b33ee8c3a4182705881c21115ad09b3c25349c8fa255dc4281509d27f63a6741d34cf85ee58c1455cde12b3e14d386d11414aa56603b93c5a50fe973b3da743a86a2d39ff298e5eded651e56c5e045f0981417b2912d8edbf3f78fd7fe364eef1260b06834fc29d88d88ee4da20f3793f07dbfcd0b7093c5c991bd4f09de1f9ef235235", "8021f897266216fa752e3318352d4d74b64a2c90037d7a83c4a85a0c0779bf2be2ef2d30255ed98bc609d66b43e9a236a0cc7c568c684c57598037d10408e5ef47dc1004ff0fcf4ad405af8078b0e6db34d9b3f76e1da166eceda013e2e0ee056f0e528bf37dcb67a18bdddd5bfba9045865f8f9283cf49f63190f103098cbfde3eb462efae54b4cdffde42d466e74487fc01f19abe02facd303da8e14b994604a1b33d5c009fcae1e4ef3368d15291f184e578328ec46e696a19fa0b044242222edb01e7cb0caea2621e6d40ba3910488252b66103132d49eb5e144d6364e71ad6390a713e3469c61adeb0f1fc0ca9ba927b1fb1c40e76ff7ecfe762a91245f911d02a806931f653d7bcc700cbc574486c240724365e1f48514670bc2c6b33a336f5a8cc5097f88cee90d4f87d8ec7fee0f81dacd958447c395a57af9f8e128b6d99b8c3bfb86d2d5714ce4e83e685c945e6610c47c0b362ffac0a0e06f3b0b3328092366186f802738b1677853fb0ef333db53d0cd6968f9d210c5e1accb2886dceebe4ce5eba0fd0816865912ebc83b1264af3e9c3a56d8fab5a230d610271b86e51abf0d045d590c723f6a52cf0d18da8c4e266295141fdfb105ef9b3835d8bce33f79eb2154b662565557df147237692a2cdc9d0179c32379bd7c67ef7d151fe736a78ddcadb30ca226f516ffbfc1050547de0f1589a2cc553f5712d5ff579d4cfef8883ef5495badb3e74eeec58c7609dd6250763cacef1051996124b9231ac51133872b16cd73efb81b46e7ab2c2a898ff7dba89414937c014b8c15996c2fa39adc4c87a15faf4feeaf5be59f37bcf7d0dc0eb7277502788c501f48f953e81ef3df34fbdcf11cd63055dd4cc13ceb272ee9a742021dfed0e182fbca639cf84eb9426ca5181bc3ed7e9c4a7b545097a4700ce7779ee2e6a631842191a270907ee360979cfee5b3a8921b60cc8c941ac01cb790af50306403056c2cb9f30c014efa5784190ff70b0a97090feca0419ecfe94627a2fe63bcca71764b1c6d4a55588ecc23bea0a933d77a9613ce5a9ee5ef9fd1f339941de6c638d60552b6d6d196ea710b7fae61140412438a9e966c7723f24ddc0430390ff111cb78e5dbd5dd0638a252c9f22afe2de2ba1e956966236a90d59b2994c0904a6206d059818d4b81000556ca6e52c3946bbe4468d054a253203d96813226d5d0b1c94c18cc8178eab9b06f075cb894995d804bb8c87165389aaf2e191ca87740f47819c125fe482626d35b910461cc1e3741c8cbb1ff46cb80162569f29b3b9255e8d648a4a3af3631f28a4448c743ccfcad588136607d1e35a446508a1bed98aac0f491168092ae9760a5a15fb746f53f9e744385cdbd13605df7d9703bca95e11826877a878b2e9e5116af5f02f468865fed123fa290ecfc9f0a16f05e5d474ec5ba23571845d188985a6f7b3175cfd2106740de8b3224d9d6b9409c98011640ed0a09234acd971c9eee8b6ba081de3d78e23c7bed0ff90c8b1e6ff135efac52bdcaeec5d6e9d497bdd5f2605d41f2a8887e56a794ba9b79c3b70796a6ef7fb0a3366041099b31b55a59cbdcf54b8dc2b827ba6054a6e52c5b57532110e1df4684f27e012f471b109428efc75a8ec20359e9a8908d0041c4251c29a0cadb0bfcb14af21a0bd018cd969340b51b3cbb466733c684c37255d414b4d7c7721348c89a2b926309a3891", "8035ceb46e84a7c6a438e287f4a78c0ca95a08fa4587dda14c7f70ac299fbb09779498e371ebc6e463f697c2d7758ebe0d98b31f7daa45e4b8e3116ca5a945ce7946e555bc0ab5ccf899b3cf571bebf5082e22e9dc2a48c1a65a9088ac86c733e02c2b9f329b6af26471184a16f59182be81e8d08b52f66dc5e66381d48a358c1e3976bafa08f3c3e9c2a79e3a30415784e8eafed84811eecc1e76870ef8311d17f063415b3ceedc069259a560d19b36f3b6e26b6c179039e3ccf1bf7b005b7b32f0b9b1afa48afab62bfaa23d88436c2971ea14ee34563ede3d9bc71d305d85f1fa5ba057dc30a92d8d5f6f075101c2337ad9c2aa5ce6e0a874c28fc810e4a4247cbacd71bf690d38ab337591dd721d1151aa7314e8b840549aba90eb91ccefa8f184bdb41379aec5d3178c7aa7afd051ef1ded5f6bed7f23767cbf7ac3b15ee97c940287b64a24af338b4ec668490ef31bf3d3840c12ad77964d92e7856e0b8838888a6dad5929ebfd3c0351100b9064b8c577b514d5e21b07ae994e6ef958ea55c395adc24541e0bfd882db74b119eccdf5dc24ee3f110724cbc27a591a5e1ac1fc746a55005f23a82ab7158cb67c65d47714ad64546a2bd2eda54e9c4e5b3b96a882f16dcf3a4b6427a2595f7b868e49e1c65d572b0757ee8ad1e6aa3744f494957fce1c330737ebb4bbe46bdfe1e153ab139e8be3b61cee7c9d3ed4dd8bb383900453ec8458a1cef7972bdf888fe23f904e79911fb80767b930f363d44892a266432cf9cb203c7db62007244f74094923f4504f2c8d9f4c458540c861dfd41272500644664ceb2d509b29b796411eed72ad6a206e8bde4af4d75e8e73a2ca3f28592f188fe2c04e35675f07ca363554dafa18807e0870cf74c8183d06c1a8af022febcf12f68bebd4ddb9086d4e9e60d16271dd1ff40a94f04bd1502372acd9fb8e571745cf0f7c25a8b2f22b4174c5e5c9254750c83728e912aea88e784017a44ffc1cb197f1bc3c01134ea670d82cc98393d17cb5e135c09b21d95bd6de85a2aae1896421a5a2af0becdcd29c00be141d5a18a0444b296b9ce4369d6930d2f099303c9c6471ea91cf31825cb6af2c6dcabe79fa1c253ad0674b47881b43aba24c8b3fc4fd7a7048fc7ff0fa1a270d1788f386b10f2455fd5bd9ab68fda98368ac426c2e7377b43faf132f0ddc2c4e10e025e8c05a0f9f3d80dbe9a9c69524bd7c76a02499745b899e5131ce03eed6c3c2623fdd1fd0d2e8fa7e0d3f6e2da88b39118908e1991553f3d4ba2eeeeb11991dadc724a439ca01a259ffde020d9352ee8f9a82017d0ed89253cfe78f41dbdc9cf5a4886b45984fb60b5251e435569037425d7f2a8f17caffbf2843dd17af352f07dca69571612df6662493c96e5468d5d2ef7ebdfce14fcc156ec84e8c579f67bde2a3b5f4e94bf27119601a1c4e9b529a42d079ed14cd2fc274e433a2e698bb7b2f9278e34d13a018796363d9af934973dac25e7816858e99f5a8f371447d99f48d04c1b8294b59d5efe91435ff24554bfecb72df44eebee36117908ba9c653b90b6ba22d6ed5171a422f565437805b6675f1ad4cead8a9e3534294eb3081c201dc30a26636a2b9d62146e43a18be738abb78dca617268cfe92b45349f86d59b38f6eab93f2160c22fd13749245a5a1c10ecebc009c0b8cea4407901128b6dc2f198aed02f29fb057f0d913269ada0", "80467b62551ade9d479af4d8c0e1dc53e2b04a54eeaf67bd5a127c2f89cf320b868a002b728e1932cf23bc34b13539e2f27a0ecc21a5493ee2e450d92d3bd1c60e86a74c7960bdaed01062ebdf36d237590c4db593ac598a5f0add1f813645a4f62b6332406de6c56222dd6434b068ce46b8c5fcafb222450964be26251928b28102959e85e414376ef424690cbe9d0d3df883b269855eeb5c0d4005d0bdb809609f40201e89c0468e7adfb0ac65021f53e9574ec9165eb0805ee7e1be46a40c1f5de04e70712f8b68e4e40590565f095082fc0c1e25964e07b767343b7267652971a073dd3a3aebd2714c31115b9fda090a6458b870fc990bf1ba795a6ad0b03f65bc26986d4a361e89c6f2fe18dfc4f33eef2a74e80a38950cea064a9bff07c99c8a00885b35687a12fcccfe2feccb2d9da16440ec614345dfe3bc37a2e0b1bd04946667a1d5d84e4751be5802e1135b7c691cae43eff03c2cd432cf988fb6e1e9f75530a33c1d2f19ed940236c7db335b5c5e9101a752741e2c3392a64c35df68288afe7f618f4bdc68539f677f48a4395cb359a66537979dcb51bc70ab8757f43cd1b9c8ba6160dbb88999de4600edc279d70b8c2b5d49356323d540f9b71b57898356de78fe4d7c75387c070028fd2a810af7954745ea07d38f5c8df1d20d8b71279737bc8e41939543532790da05739b217dbcb0b6259c8648e3ade8d79b0ab56d3701bd6824d49822b04a2f68a9cf9fb4f0760e3c1f7c9124dcbda1533cc473883e970d4d827922697962a001b31148621fcd0b32b691d4fbc59ae16614a9d992786b35cd3d64dd9f2d00fffa75f90e40c698488f042d51288d3596c10ee8c72815ca18b7563558bc55fb67704a0d003d5b51f4e3f74a02100d711ffba018d916d3748ab6cc5636e80b4ebf285b86aec38fe03b801a0f737265d90a4b902314be2c3df9710f89f4163162b0628bfb73c2b57ed3fde93ae44aa9b6a963128f8c935a41035129076452c93acd686ae926255b24f526952183aa9f69aca5ac4ad6c29e31bdbfbf1ee07525e191cd5b17be80564c581ec35a0ef252752da2fd01742b8f2d73f0c0d17ad41dcebc8006addcc2d9fdfd71b2af5373bd3dbe73286a3107ecbfdb96a698f0d512b7baa55e946149de96dc35f4ff4ecfc98791dd5712be4a52e215a80c536352fb7b2bc0b626a7a98e4d54ef149d27770b2e5889d1175e119362f1fd2175079c52f5908bd800efe6dc7fb7d0b21067c6e54dd25a02e751729955ce46452038138cc5a8ef45ca9f72a8be7a66a0fe9f824331237c72eb2fe09c53eb2dfbc1b900f3151e22b23439738b0dbd2221abdcc35b8e2be8fad7d29dd3e542a544a9aa763f82ec116b4b2a9cb1d3dae8681013105d9e7c4dd7c5e143857ba7462e7ab67369954867bbfb5b40a40490dcb2bcac69e37a02e00f315ae73c1e3675f19181ef08f1cc36bf79e7ac1125cd45c4f87715fb3b12599f41c545a6ba2933b60ede523141c9a5f69da6d51fe5e101a9e62e25201bbc7a8e2966c092ab9b50e9f2eb044805ebe9a350d0db026a54826b4a16cdf90c77fea5f874c8b46376c88800af98a261d6be735aa1071c6d76dddd84951c6ba9c270b2da71bf3f0f450888c81def823b6e146c80f77fde8b528df49defd978f54a4b40f49fb450670074807645d233ec5e0a4699110533d7b7ba57442de6c90cef209ba23c8", "80524d411dfc6fa1968c2547016b1d2bfda06e3ea855c09fd2c5568fa729362913f1b5f8263b065d6adcfd9d25a9156a5f2ec185d067408d038776648c9a71e7301c521d3a65c728fc8c7ea4f09ddf1965fbdcab219bb02d15bded84cf506c9279091a26818b4750a7d818f379be5048a05cd5d50cdc20b7af9bd2b7c10bd6c37cd0a50a8509acb858cb67da70e0a812c6d076551a2d60a94310ec0ccafc1d743d7410b485bcd23496a6752341a1b036b811e2a68ded886ff53389fe7502db550f40e9e1a3656f9bf8eef873a67d8d61f1d63d7ee020f2a4473f1db7f074749175e86b7499054cde9e51f85109ca548393570c610e6cfd1654698680b8eb104b8a040443ef413c5e1b5939f76379fa9d64ad052b2365538c4482379d63cc80d252025431f941334e7128e60f0350af64927d3d53d212087ba53c3a79b499b0c7e2a19be8dbec192e340596147654c0413c39fcdfee33f66b64405900c872dab65af976fc3b160ab4e3dc60f02b753745a4d0427af4d81bd896cb926f3d647e45b3e105a11f58cf6e566ba6571d01259973e6cdc043d460704843b531f6ffa1fe56b325bf6c90be631a7fe001e6003f7190cc828d808aea237d383f8374478fd9f87dc23ede589690b07a04cf72876fdc440a4ae0765f6d3b7eca20e3c64029ebec00036efea65324c57483de425ab084252535753d3846899bbeafea8a6be0a37f1469979c6507c5cc41c2067cdb4922c7860627ebb767b8b4f43845b6bf51a28d7cd0da21e9ed7b73777bf1650008de9672e219b8598f2b3d4eed7fcede9520ac940858a263d42089e6c2eaabec8c245ca88b3d70b69123af65dd7383a4ad9a973ff182e5e66c896767bbeb5f21e18743b2fde9aa76c8e99a7ba63997b7d359944f95807ad73d585c7e0f4b2e0ca9329571dbd1f2da53eaf27d250830a8b89b4c6a91d31bbd2040e546792c98f057af6b24561727a92c65ee760e5d6b329ee85e996626f1d9abc92fb052c4d37b87b8f35b204f8ed22b6d17a88940c8fbeb1e389a2ce6b39b673eb38f98045f2e8d0bc54c4502dda7c1ce9595a3566046e27d1b021258ce1a903ad02fef096fc67ea0c5f692fa2a58035dae9a72053d02d3b3be1c9573c5d2d699f61695cbd759d5d61fba1c51f88b44ae103af9f616fca0a173da57e615d8f1b52924c89656104ecccecae469963315873dd7ca46198be983c54b09d455add238edba175f838fe64047b314be116e73d3cab5cfc8e3592c11d107fc6d5b8757a3bdf975d719b74db0519dcdef135c3730020f0c75f218b5dadcd74b3fe1432d64418cad6e0d82789b9392fbdadaef65c37fde0bdf9028eb1a4f13ec3df11d9cd07cf895b61edeec49b1590cd3ebf8a50d22bbab07239c68fe3e1aa708068276a4d06f913923169216953c28db86ec25991808a0d557d941ad0b3a103d3e0689772df08312dae268db96ad5bcebcb31fa1bfb472f50e4878190c23c1104b8e60066e9985e1d0565d2d6ad6224060768a312420c92e483ebbab6d3f96026480a2426bf7f712231aaadebc438df178d638b6e0cbbc6a407838e9f854c526884f4cb931a1faf3f9152e4accccc5e946e6155eab53e8e3397afa95a785d4dc219cd2137451f960254072d7a878dbe248181586adb4f229eb42ab25d96122d807fa8e7d9bd6f518be9b9f1e94c3f20d087aea9027a5fa9e04d7a450b49b6f9" ] expect(shamir.combine(shares)).to.equal(data) }) it("should return combined data with some shares", () => { const data = "308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100ae3b1ec648ab1eaf23a7840d1cab5ade2397c514327df99f20ff9b28d584f5bce0e5af14ae815d3d07752b7a729d18a4769d8886e2119544844e09fb73a4b08eee8e9100def4f7b1b8c571b67a23f0bcc798f689a6f6c9dcd83da18ff1d899dd9919064ef22e2170bd36f197f4d98463842c334048c035c675572c3a6ccb80ba334a108f3c2daeae30403dbd911a40e6221ad359d94c0ef56c4f3a6306de62072915c9255c793f04358d4af784edfe697af3b7d103ca250476d6f8e5784f9f5cb687a36805aaf180e076153ad017de1d60984ca10e644f32bfcdc0951ed23e4926cbbd4088edcbcc82fb5c90be5670ab157b05d8e1a09aac344edab74fe7cb390203010001028201005702ad5ec6c1b6842ea124e04b7603de36164054d2d678c81079b62a115fe23d1e6f761d34fce3ec6b8207619245841df622bc20e85b7199131dc9fc6a874fa941d7aef0a967db1f45304d969caec035f6d41c23285fccf5de8400e05b1e19d141f8ee5e94b196ffaf6ef5fe36483ec658269ebdb6d74ec3baabfb297e55af05fb4d66d6c3f4d2e130ca3cf6be3be5b6398c3d61db59c6cebb992dfea565dfd78c1606074ecf0e751399dbc77f13a9f377d6fa97a82f0f9c6f4e34aa28682bd73db56d9a584c5926c5b080586e6db05ca7f687ec1cef92677f0527dfca526da0d6dcbdce97000ffef547ebf5422e8187eaab2459167026c7ae3e2e116dbe1dd102818100d530d272ad1b4ddf6fff7030be9898706050db8f1e6ba38c41449d8d47783cf2f7be44ab62ac96fc2d3899f4061f6da5c6003a50ea7c7b8e1f3efd594fe2fdcc37fe811e0c664bda4c06dd35d990c9a06a5e75c035691b346a73b8e99d2bbe55784e1ab952a8b0a36d8ed31e31885f0685f3ec0a30e45bb27dcbbfca8499cddd02818100d1378d1047bd7743908165b939a3ccf8a325b3e1d8742a1c40cb6a64ba2d8358122ae0a5655ab2c70a6974945f3ca03e28addb6b717515e262ae1456fc147634756502a8ca5af78d4b0c4fd058f2d3bc8af2c774dc5cdd11b6684c3a80d3cfdb7e23bdccdbe0427102c9192bfb061f4be01b89001c38846733d390d17f5dc30d028181008bf8fb2389de9479705a6139cfd9f6b449b8acff41b4e07394e2cd22d65aee818401abaa6f25ec17f444e667dea141e786a1dda804dce86e7ebb67b1fd0e871e4f614d3b025f23cc570066bb1576c7bb083baeca1d073e7262b64a21302d69514aa4d54cfa25819c3bb17b91a669e8222b4ee49a2851b696f19b15f88ca9430d0281801b52c4f27e5c092a62c1f37608481329d9acbfdc5bf777d46ec5e2243b885c21f165762743a05fbecce64eda5dc1be2fc0024ca8b08d990912d82741e0f40f27f4b8f76af1da8580077019305d9d80f79bb1ef489ccae7f83b394dd34a25df7c8bf1c104f3264ba714b50cbb88b218fe40cb77cdf2e192b123bc9aaa31971e35028180152331e170a193d0731cfda0b3a27c1a5d8e9b0760ad137804f4e28568ee049b0d9a02e2474407e554fa77e25ab82ceb83ab0f046d3d8948ce1094cdf93fd76fcec0b72f611fcfad9629b59335cec3b2f07bec9d0aade92276d81af818bf50d046361a7d196285e872f78f68722275cc530ddceefb9706a37c40554eedd0c704" const shares = [ "8014252b68ad611cc115d14fa118691c977f54ba56eab772889f0aea5dee2468a55ba5d37c950f7faf1cf045f0169d625f6eb7092008bc1e035a5aece2867fb8cc950ce3ce5d35dde29246be654318fdec80c3a9151e382d0ddee81320473062c766998b76dcea9d2b122c8740e177fdfd684732c4cc3df96a86e3f97e7d92ec3051ea8cfff03112efaed3d7937cd708f0fb9afe0ce5a604275f6f3d1ecda6213abe22573df9aa79bbe80b9b1e0668c308fcb6339dea72d1174cc32a56d0bfb646d9fa09e379a630e29b40e463ec4198e20c15dd864bbb0cd72741fedb3ab1a41bf4a48913bb8fc08748ce5698cb6441945a096a1b1d7c6e8991b833f26784089e9d646c26c1558c97bc44d195eff9e55fbc5fc85c683ebe60d96dc6a74d767f58da339a05e47a959b1a2ad3fd6f6b8fafe5ec1d4712052388a133d7cd3fe71662466eeab900e191f6c3c0314cf734ac4494733421a3565566aa351271f37158facfe382c9bbb31ed554bcb8b68558ea6d1f035e8ad32af75321ed5876abf89c6fd6406a23152b1dd2ea26448c63eb304acb8efdff9b4e5eb024888f156c6efaed229b073e836976969ff237cd499c2b8d514f8ce66afe331a1e50036e6c95d0b849d37e5e9b5bf291edc865d16a39a944580a8ae1bec68e739ccaf126ba29037ebc0f26c0eb6d5a7d21e27e5bdfa6dc9d257502992172fa2c4e72aa6c40eeafe1d4a392d5a57454cee2aa76b16dc36cb444f458c72819845467fd1fd556d219a9c609e05aef87349d74ba7afd74733ef8738263b799d714acf5e830d6b28bb1bb3638435d0ee4e00c73f9cfbe286797f185f2fe7901a248e1fea6926153e8d20697575c2a70143d945c4490b23b7518dc2b03fb2de443e27cd1624d27620ccfe70ad59a33a51209cc2b6f329604b121406ea7a9986dec8b43e77cf15f476a3dedaa9de8c7e8860f2a6c837f12b53b761c776c494f07d7801741f96f13804c5c382fe2a3f00b32a4c93d04cd245ccd9238760adc73bd7c93b70828445dc41210b8a05cb364ef294b0f73f2accc780b97c07dd163ce8458973588fbf418bf6a709ed7d6b7bc326ce72b363af1054507ed124028bc300df310e182c34d5cf2d3c4b16688e5bbd2bd6ea43064a655efacfb075d40212b0a6d47d4159f21cf738ef396f0744500ade1bb36eb565bc62ffe86b718588e1f470f44fb67889ffabdf110aefaa59b07b0678baab2fad7cf021cd64533b6964bf62fb503ba78e677f0085f005088edfe17e9e393681aa8eec266e5f8f682ee5cc4663200e29121243d3cebfaf3c68764d37d5e035772f07cb5d257680447b2388dc15001fd1d88fb76e8eab47112ef051d1ee79e7d20f741d8816a4788edb29f9408980c47e6353dba9171f6c91129f7c3d41912db43a7ef5fc193d2c75751a9e06cd53b998ec8aaac03bf7b40c5acad05175adc16036ed7ca7ce2506fa296245a7c9bf8ff913dc1d137b75bdd1845a2062d8fa9dc0b78599cb507784733e9a0bd721b9ffd2ea1cb3c7632b33ee8c3a4182705881c21115ad09b3c25349c8fa255dc4281509d27f63a6741d34cf85ee58c1455cde12b3e14d386d11414aa56603b93c5a50fe973b3da743a86a2d39ff298e5eded651e56c5e045f0981417b2912d8edbf3f78fd7fe364eef1260b06834fc29d88d88ee4da20f3793f07dbfcd0b7093c5c991bd4f09de1f9ef235235", "8021f897266216fa752e3318352d4d74b64a2c90037d7a83c4a85a0c0779bf2be2ef2d30255ed98bc609d66b43e9a236a0cc7c568c684c57598037d10408e5ef47dc1004ff0fcf4ad405af8078b0e6db34d9b3f76e1da166eceda013e2e0ee056f0e528bf37dcb67a18bdddd5bfba9045865f8f9283cf49f63190f103098cbfde3eb462efae54b4cdffde42d466e74487fc01f19abe02facd303da8e14b994604a1b33d5c009fcae1e4ef3368d15291f184e578328ec46e696a19fa0b044242222edb01e7cb0caea2621e6d40ba3910488252b66103132d49eb5e144d6364e71ad6390a713e3469c61adeb0f1fc0ca9ba927b1fb1c40e76ff7ecfe762a91245f911d02a806931f653d7bcc700cbc574486c240724365e1f48514670bc2c6b33a336f5a8cc5097f88cee90d4f87d8ec7fee0f81dacd958447c395a57af9f8e128b6d99b8c3bfb86d2d5714ce4e83e685c945e6610c47c0b362ffac0a0e06f3b0b3328092366186f802738b1677853fb0ef333db53d0cd6968f9d210c5e1accb2886dceebe4ce5eba0fd0816865912ebc83b1264af3e9c3a56d8fab5a230d610271b86e51abf0d045d590c723f6a52cf0d18da8c4e266295141fdfb105ef9b3835d8bce33f79eb2154b662565557df147237692a2cdc9d0179c32379bd7c67ef7d151fe736a78ddcadb30ca226f516ffbfc1050547de0f1589a2cc553f5712d5ff579d4cfef8883ef5495badb3e74eeec58c7609dd6250763cacef1051996124b9231ac51133872b16cd73efb81b46e7ab2c2a898ff7dba89414937c014b8c15996c2fa39adc4c87a15faf4feeaf5be59f37bcf7d0dc0eb7277502788c501f48f953e81ef3df34fbdcf11cd63055dd4cc13ceb272ee9a742021dfed0e182fbca639cf84eb9426ca5181bc3ed7e9c4a7b545097a4700ce7779ee2e6a631842191a270907ee360979cfee5b3a8921b60cc8c941ac01cb790af50306403056c2cb9f30c014efa5784190ff70b0a97090feca0419ecfe94627a2fe63bcca71764b1c6d4a55588ecc23bea0a933d77a9613ce5a9ee5ef9fd1f339941de6c638d60552b6d6d196ea710b7fae61140412438a9e966c7723f24ddc0430390ff111cb78e5dbd5dd0638a252c9f22afe2de2ba1e956966236a90d59b2994c0904a6206d059818d4b81000556ca6e52c3946bbe4468d054a253203d96813226d5d0b1c94c18cc8178eab9b06f075cb894995d804bb8c87165389aaf2e191ca87740f47819c125fe482626d35b910461cc1e3741c8cbb1ff46cb80162569f29b3b9255e8d648a4a3af3631f28a4448c743ccfcad588136607d1e35a446508a1bed98aac0f491168092ae9760a5a15fb746f53f9e744385cdbd13605df7d9703bca95e11826877a878b2e9e5116af5f02f468865fed123fa290ecfc9f0a16f05e5d474ec5ba23571845d188985a6f7b3175cfd2106740de8b3224d9d6b9409c98011640ed0a09234acd971c9eee8b6ba081de3d78e23c7bed0ff90c8b1e6ff135efac52bdcaeec5d6e9d497bdd5f2605d41f2a8887e56a794ba9b79c3b70796a6ef7fb0a3366041099b31b55a59cbdcf54b8dc2b827ba6054a6e52c5b57532110e1df4684f27e012f471b109428efc75a8ec20359e9a8908d0041c4251c29a0cadb0bfcb14af21a0bd018cd969340b51b3cbb466733c684c37255d414b4d7c7721348c89a2b926309a3891", "8035ceb46e84a7c6a438e287f4a78c0ca95a08fa4587dda14c7f70ac299fbb09779498e371ebc6e463f697c2d7758ebe0d98b31f7daa45e4b8e3116ca5a945ce7946e555bc0ab5ccf899b3cf571bebf5082e22e9dc2a48c1a65a9088ac86c733e02c2b9f329b6af26471184a16f59182be81e8d08b52f66dc5e66381d48a358c1e3976bafa08f3c3e9c2a79e3a30415784e8eafed84811eecc1e76870ef8311d17f063415b3ceedc069259a560d19b36f3b6e26b6c179039e3ccf1bf7b005b7b32f0b9b1afa48afab62bfaa23d88436c2971ea14ee34563ede3d9bc71d305d85f1fa5ba057dc30a92d8d5f6f075101c2337ad9c2aa5ce6e0a874c28fc810e4a4247cbacd71bf690d38ab337591dd721d1151aa7314e8b840549aba90eb91ccefa8f184bdb41379aec5d3178c7aa7afd051ef1ded5f6bed7f23767cbf7ac3b15ee97c940287b64a24af338b4ec668490ef31bf3d3840c12ad77964d92e7856e0b8838888a6dad5929ebfd3c0351100b9064b8c577b514d5e21b07ae994e6ef958ea55c395adc24541e0bfd882db74b119eccdf5dc24ee3f110724cbc27a591a5e1ac1fc746a55005f23a82ab7158cb67c65d47714ad64546a2bd2eda54e9c4e5b3b96a882f16dcf3a4b6427a2595f7b868e49e1c65d572b0757ee8ad1e6aa3744f494957fce1c330737ebb4bbe46bdfe1e153ab139e8be3b61cee7c9d3ed4dd8bb383900453ec8458a1cef7972bdf888fe23f904e79911fb80767b930f363d44892a266432cf9cb203c7db62007244f74094923f4504f2c8d9f4c458540c861dfd41272500644664ceb2d509b29b796411eed72ad6a206e8bde4af4d75e8e73a2ca3f28592f188fe2c04e35675f07ca363554dafa18807e0870cf74c8183d06c1a8af022febcf12f68bebd4ddb9086d4e9e60d16271dd1ff40a94f04bd1502372acd9fb8e571745cf0f7c25a8b2f22b4174c5e5c9254750c83728e912aea88e784017a44ffc1cb197f1bc3c01134ea670d82cc98393d17cb5e135c09b21d95bd6de85a2aae1896421a5a2af0becdcd29c00be141d5a18a0444b296b9ce4369d6930d2f099303c9c6471ea91cf31825cb6af2c6dcabe79fa1c253ad0674b47881b43aba24c8b3fc4fd7a7048fc7ff0fa1a270d1788f386b10f2455fd5bd9ab68fda98368ac426c2e7377b43faf132f0ddc2c4e10e025e8c05a0f9f3d80dbe9a9c69524bd7c76a02499745b899e5131ce03eed6c3c2623fdd1fd0d2e8fa7e0d3f6e2da88b39118908e1991553f3d4ba2eeeeb11991dadc724a439ca01a259ffde020d9352ee8f9a82017d0ed89253cfe78f41dbdc9cf5a4886b45984fb60b5251e435569037425d7f2a8f17caffbf2843dd17af352f07dca69571612df6662493c96e5468d5d2ef7ebdfce14fcc156ec84e8c579f67bde2a3b5f4e94bf27119601a1c4e9b529a42d079ed14cd2fc274e433a2e698bb7b2f9278e34d13a018796363d9af934973dac25e7816858e99f5a8f371447d99f48d04c1b8294b59d5efe91435ff24554bfecb72df44eebee36117908ba9c653b90b6ba22d6ed5171a422f565437805b6675f1ad4cead8a9e3534294eb3081c201dc30a26636a2b9d62146e43a18be738abb78dca617268cfe92b45349f86d59b38f6eab93f2160c22fd13749245a5a1c10ecebc009c0b8cea4407901128b6dc2f198aed02f29fb057f0d913269ada0", "80467b62551ade9d479af4d8c0e1dc53e2b04a54eeaf67bd5a127c2f89cf320b868a002b728e1932cf23bc34b13539e2f27a0ecc21a5493ee2e450d92d3bd1c60e86a74c7960bdaed01062ebdf36d237590c4db593ac598a5f0add1f813645a4f62b6332406de6c56222dd6434b068ce46b8c5fcafb222450964be26251928b28102959e85e414376ef424690cbe9d0d3df883b269855eeb5c0d4005d0bdb809609f40201e89c0468e7adfb0ac65021f53e9574ec9165eb0805ee7e1be46a40c1f5de04e70712f8b68e4e40590565f095082fc0c1e25964e07b767343b7267652971a073dd3a3aebd2714c31115b9fda090a6458b870fc990bf1ba795a6ad0b03f65bc26986d4a361e89c6f2fe18dfc4f33eef2a74e80a38950cea064a9bff07c99c8a00885b35687a12fcccfe2feccb2d9da16440ec614345dfe3bc37a2e0b1bd04946667a1d5d84e4751be5802e1135b7c691cae43eff03c2cd432cf988fb6e1e9f75530a33c1d2f19ed940236c7db335b5c5e9101a752741e2c3392a64c35df68288afe7f618f4bdc68539f677f48a4395cb359a66537979dcb51bc70ab8757f43cd1b9c8ba6160dbb88999de4600edc279d70b8c2b5d49356323d540f9b71b57898356de78fe4d7c75387c070028fd2a810af7954745ea07d38f5c8df1d20d8b71279737bc8e41939543532790da05739b217dbcb0b6259c8648e3ade8d79b0ab56d3701bd6824d49822b04a2f68a9cf9fb4f0760e3c1f7c9124dcbda1533cc473883e970d4d827922697962a001b31148621fcd0b32b691d4fbc59ae16614a9d992786b35cd3d64dd9f2d00fffa75f90e40c698488f042d51288d3596c10ee8c72815ca18b7563558bc55fb67704a0d003d5b51f4e3f74a02100d711ffba018d916d3748ab6cc5636e80b4ebf285b86aec38fe03b801a0f737265d90a4b902314be2c3df9710f89f4163162b0628bfb73c2b57ed3fde93ae44aa9b6a963128f8c935a41035129076452c93acd686ae926255b24f526952183aa9f69aca5ac4ad6c29e31bdbfbf1ee07525e191cd5b17be80564c581ec35a0ef252752da2fd01742b8f2d73f0c0d17ad41dcebc8006addcc2d9fdfd71b2af5373bd3dbe73286a3107ecbfdb96a698f0d512b7baa55e946149de96dc35f4ff4ecfc98791dd5712be4a52e215a80c536352fb7b2bc0b626a7a98e4d54ef149d27770b2e5889d1175e119362f1fd2175079c52f5908bd800efe6dc7fb7d0b21067c6e54dd25a02e751729955ce46452038138cc5a8ef45ca9f72a8be7a66a0fe9f824331237c72eb2fe09c53eb2dfbc1b900f3151e22b23439738b0dbd2221abdcc35b8e2be8fad7d29dd3e542a544a9aa763f82ec116b4b2a9cb1d3dae8681013105d9e7c4dd7c5e143857ba7462e7ab67369954867bbfb5b40a40490dcb2bcac69e37a02e00f315ae73c1e3675f19181ef08f1cc36bf79e7ac1125cd45c4f87715fb3b12599f41c545a6ba2933b60ede523141c9a5f69da6d51fe5e101a9e62e25201bbc7a8e2966c092ab9b50e9f2eb044805ebe9a350d0db026a54826b4a16cdf90c77fea5f874c8b46376c88800af98a261d6be735aa1071c6d76dddd84951c6ba9c270b2da71bf3f0f450888c81def823b6e146c80f77fde8b528df49defd978f54a4b40f49fb450670074807645d233ec5e0a4699110533d7b7ba57442de6c90cef209ba23c8", "80524d411dfc6fa1968c2547016b1d2bfda06e3ea855c09fd2c5568fa729362913f1b5f8263b065d6adcfd9d25a9156a5f2ec185d067408d038776648c9a71e7301c521d3a65c728fc8c7ea4f09ddf1965fbdcab219bb02d15bded84cf506c9279091a26818b4750a7d818f379be5048a05cd5d50cdc20b7af9bd2b7c10bd6c37cd0a50a8509acb858cb67da70e0a812c6d076551a2d60a94310ec0ccafc1d743d7410b485bcd23496a6752341a1b036b811e2a68ded886ff53389fe7502db550f40e9e1a3656f9bf8eef873a67d8d61f1d63d7ee020f2a4473f1db7f074749175e86b7499054cde9e51f85109ca548393570c610e6cfd1654698680b8eb104b8a040443ef413c5e1b5939f76379fa9d64ad052b2365538c4482379d63cc80d252025431f941334e7128e60f0350af64927d3d53d212087ba53c3a79b499b0c7e2a19be8dbec192e340596147654c0413c39fcdfee33f66b64405900c872dab65af976fc3b160ab4e3dc60f02b753745a4d0427af4d81bd896cb926f3d647e45b3e105a11f58cf6e566ba6571d01259973e6cdc043d460704843b531f6ffa1fe56b325bf6c90be631a7fe001e6003f7190cc828d808aea237d383f8374478fd9f87dc23ede589690b07a04cf72876fdc440a4ae0765f6d3b7eca20e3c64029ebec00036efea65324c57483de425ab084252535753d3846899bbeafea8a6be0a37f1469979c6507c5cc41c2067cdb4922c7860627ebb767b8b4f43845b6bf51a28d7cd0da21e9ed7b73777bf1650008de9672e219b8598f2b3d4eed7fcede9520ac940858a263d42089e6c2eaabec8c245ca88b3d70b69123af65dd7383a4ad9a973ff182e5e66c896767bbeb5f21e18743b2fde9aa76c8e99a7ba63997b7d359944f95807ad73d585c7e0f4b2e0ca9329571dbd1f2da53eaf27d250830a8b89b4c6a91d31bbd2040e546792c98f057af6b24561727a92c65ee760e5d6b329ee85e996626f1d9abc92fb052c4d37b87b8f35b204f8ed22b6d17a88940c8fbeb1e389a2ce6b39b673eb38f98045f2e8d0bc54c4502dda7c1ce9595a3566046e27d1b021258ce1a903ad02fef096fc67ea0c5f692fa2a58035dae9a72053d02d3b3be1c9573c5d2d699f61695cbd759d5d61fba1c51f88b44ae103af9f616fca0a173da57e615d8f1b52924c89656104ecccecae469963315873dd7ca46198be983c54b09d455add238edba175f838fe64047b314be116e73d3cab5cfc8e3592c11d107fc6d5b8757a3bdf975d719b74db0519dcdef135c3730020f0c75f218b5dadcd74b3fe1432d64418cad6e0d82789b9392fbdadaef65c37fde0bdf9028eb1a4f13ec3df11d9cd07cf895b61edeec49b1590cd3ebf8a50d22bbab07239c68fe3e1aa708068276a4d06f913923169216953c28db86ec25991808a0d557d941ad0b3a103d3e0689772df08312dae268db96ad5bcebcb31fa1bfb472f50e4878190c23c1104b8e60066e9985e1d0565d2d6ad6224060768a312420c92e483ebbab6d3f96026480a2426bf7f712231aaadebc438df178d638b6e0cbbc6a407838e9f854c526884f4cb931a1faf3f9152e4accccc5e946e6155eab53e8e3397afa95a785d4dc219cd2137451f960254072d7a878dbe248181586adb4f229eb42ab25d96122d807fa8e7d9bd6f518be9b9f1e94c3f20d087aea9027a5fa9e04d7a450b49b6f9" ] for (let i = 0; i < 4; i++) { for (let j = i + 1; j < 5; j++) { expect(shamir.combine(shares.filter((x, idx) => idx !== i && idx !== j))).to.equal(data) } } }) it("should fail miserably because it has not enough shares", () => { const data = "308204bd020100300d06092a864886f70d0101010500048204a7308204a30201000282010100ae3b1ec648ab1eaf23a7840d1cab5ade2397c514327df99f20ff9b28d584f5bce0e5af14ae815d3d07752b7a729d18a4769d8886e2119544844e09fb73a4b08eee8e9100def4f7b1b8c571b67a23f0bcc798f689a6f6c9dcd83da18ff1d899dd9919064ef22e2170bd36f197f4d98463842c334048c035c675572c3a6ccb80ba334a108f3c2daeae30403dbd911a40e6221ad359d94c0ef56c4f3a6306de62072915c9255c793f04358d4af784edfe697af3b7d103ca250476d6f8e5784f9f5cb687a36805aaf180e076153ad017de1d60984ca10e644f32bfcdc0951ed23e4926cbbd4088edcbcc82fb5c90be5670ab157b05d8e1a09aac344edab74fe7cb390203010001028201005702ad5ec6c1b6842ea124e04b7603de36164054d2d678c81079b62a115fe23d1e6f761d34fce3ec6b8207619245841df622bc20e85b7199131dc9fc6a874fa941d7aef0a967db1f45304d969caec035f6d41c23285fccf5de8400e05b1e19d141f8ee5e94b196ffaf6ef5fe36483ec658269ebdb6d74ec3baabfb297e55af05fb4d66d6c3f4d2e130ca3cf6be3be5b6398c3d61db59c6cebb992dfea565dfd78c1606074ecf0e751399dbc77f13a9f377d6fa97a82f0f9c6f4e34aa28682bd73db56d9a584c5926c5b080586e6db05ca7f687ec1cef92677f0527dfca526da0d6dcbdce97000ffef547ebf5422e8187eaab2459167026c7ae3e2e116dbe1dd102818100d530d272ad1b4ddf6fff7030be9898706050db8f1e6ba38c41449d8d47783cf2f7be44ab62ac96fc2d3899f4061f6da5c6003a50ea7c7b8e1f3efd594fe2fdcc37fe811e0c664bda4c06dd35d990c9a06a5e75c035691b346a73b8e99d2bbe55784e1ab952a8b0a36d8ed31e31885f0685f3ec0a30e45bb27dcbbfca8499cddd02818100d1378d1047bd7743908165b939a3ccf8a325b3e1d8742a1c40cb6a64ba2d8358122ae0a5655ab2c70a6974945f3ca03e28addb6b717515e262ae1456fc147634756502a8ca5af78d4b0c4fd058f2d3bc8af2c774dc5cdd11b6684c3a80d3cfdb7e23bdccdbe0427102c9192bfb061f4be01b89001c38846733d390d17f5dc30d028181008bf8fb2389de9479705a6139cfd9f6b449b8acff41b4e07394e2cd22d65aee818401abaa6f25ec17f444e667dea141e786a1dda804dce86e7ebb67b1fd0e871e4f614d3b025f23cc570066bb1576c7bb083baeca1d073e7262b64a21302d69514aa4d54cfa25819c3bb17b91a669e8222b4ee49a2851b696f19b15f88ca9430d0281801b52c4f27e5c092a62c1f37608481329d9acbfdc5bf777d46ec5e2243b885c21f165762743a05fbecce64eda5dc1be2fc0024ca8b08d990912d82741e0f40f27f4b8f76af1da8580077019305d9d80f79bb1ef489ccae7f83b394dd34a25df7c8bf1c104f3264ba714b50cbb88b218fe40cb77cdf2e192b123bc9aaa31971e35028180152331e170a193d0731cfda0b3a27c1a5d8e9b0760ad137804f4e28568ee049b0d9a02e2474407e554fa77e25ab82ceb83ab0f046d3d8948ce1094cdf93fd76fcec0b72f611fcfad9629b59335cec3b2f07bec9d0aade92276d81af818bf50d046361a7d196285e872f78f68722275cc530ddceefb9706a37c40554eedd0c704" const shares = [ "8014252b68ad611cc115d14fa118691c977f54ba56eab772889f0aea5dee2468a55ba5d37c950f7faf1cf045f0169d625f6eb7092008bc1e035a5aece2867fb8cc950ce3ce5d35dde29246be654318fdec80c3a9151e382d0ddee81320473062c766998b76dcea9d2b122c8740e177fdfd684732c4cc3df96a86e3f97e7d92ec3051ea8cfff03112efaed3d7937cd708f0fb9afe0ce5a604275f6f3d1ecda6213abe22573df9aa79bbe80b9b1e0668c308fcb6339dea72d1174cc32a56d0bfb646d9fa09e379a630e29b40e463ec4198e20c15dd864bbb0cd72741fedb3ab1a41bf4a48913bb8fc08748ce5698cb6441945a096a1b1d7c6e8991b833f26784089e9d646c26c1558c97bc44d195eff9e55fbc5fc85c683ebe60d96dc6a74d767f58da339a05e47a959b1a2ad3fd6f6b8fafe5ec1d4712052388a133d7cd3fe71662466eeab900e191f6c3c0314cf734ac4494733421a3565566aa351271f37158facfe382c9bbb31ed554bcb8b68558ea6d1f035e8ad32af75321ed5876abf89c6fd6406a23152b1dd2ea26448c63eb304acb8efdff9b4e5eb024888f156c6efaed229b073e836976969ff237cd499c2b8d514f8ce66afe331a1e50036e6c95d0b849d37e5e9b5bf291edc865d16a39a944580a8ae1bec68e739ccaf126ba29037ebc0f26c0eb6d5a7d21e27e5bdfa6dc9d257502992172fa2c4e72aa6c40eeafe1d4a392d5a57454cee2aa76b16dc36cb444f458c72819845467fd1fd556d219a9c609e05aef87349d74ba7afd74733ef8738263b799d714acf5e830d6b28bb1bb3638435d0ee4e00c73f9cfbe286797f185f2fe7901a248e1fea6926153e8d20697575c2a70143d945c4490b23b7518dc2b03fb2de443e27cd1624d27620ccfe70ad59a33a51209cc2b6f329604b121406ea7a9986dec8b43e77cf15f476a3dedaa9de8c7e8860f2a6c837f12b53b761c776c494f07d7801741f96f13804c5c382fe2a3f00b32a4c93d04cd245ccd9238760adc73bd7c93b70828445dc41210b8a05cb364ef294b0f73f2accc780b97c07dd163ce8458973588fbf418bf6a709ed7d6b7bc326ce72b363af1054507ed124028bc300df310e182c34d5cf2d3c4b16688e5bbd2bd6ea43064a655efacfb075d40212b0a6d47d4159f21cf738ef396f0744500ade1bb36eb565bc62ffe86b718588e1f470f44fb67889ffabdf110aefaa59b07b0678baab2fad7cf021cd64533b6964bf62fb503ba78e677f0085f005088edfe17e9e393681aa8eec266e5f8f682ee5cc4663200e29121243d3cebfaf3c68764d37d5e035772f07cb5d257680447b2388dc15001fd1d88fb76e8eab47112ef051d1ee79e7d20f741d8816a4788edb29f9408980c47e6353dba9171f6c91129f7c3d41912db43a7ef5fc193d2c75751a9e06cd53b998ec8aaac03bf7b40c5acad05175adc16036ed7ca7ce2506fa296245a7c9bf8ff913dc1d137b75bdd1845a2062d8fa9dc0b78599cb507784733e9a0bd721b9ffd2ea1cb3c7632b33ee8c3a4182705881c21115ad09b3c25349c8fa255dc4281509d27f63a6741d34cf85ee58c1455cde12b3e14d386d11414aa56603b93c5a50fe973b3da743a86a2d39ff298e5eded651e56c5e045f0981417b2912d8edbf3f78fd7fe364eef1260b06834fc29d88d88ee4da20f3793f07dbfcd0b7093c5c991bd4f09de1f9ef235235", "8021f897266216fa752e3318352d4d74b64a2c90037d7a83c4a85a0c0779bf2be2ef2d30255ed98bc609d66b43e9a236a0cc7c568c684c57598037d10408e5ef47dc1004ff0fcf4ad405af8078b0e6db34d9b3f76e1da166eceda013e2e0ee056f0e528bf37dcb67a18bdddd5bfba9045865f8f9283cf49f63190f103098cbfde3eb462efae54b4cdffde42d466e74487fc01f19abe02facd303da8e14b994604a1b33d5c009fcae1e4ef3368d15291f184e578328ec46e696a19fa0b044242222edb01e7cb0caea2621e6d40ba3910488252b66103132d49eb5e144d6364e71ad6390a713e3469c61adeb0f1fc0ca9ba927b1fb1c40e76ff7ecfe762a91245f911d02a806931f653d7bcc700cbc574486c240724365e1f48514670bc2c6b33a336f5a8cc5097f88cee90d4f87d8ec7fee0f81dacd958447c395a57af9f8e128b6d99b8c3bfb86d2d5714ce4e83e685c945e6610c47c0b362ffac0a0e06f3b0b3328092366186f802738b1677853fb0ef333db53d0cd6968f9d210c5e1accb2886dceebe4ce5eba0fd0816865912ebc83b1264af3e9c3a56d8fab5a230d610271b86e51abf0d045d590c723f6a52cf0d18da8c4e266295141fdfb105ef9b3835d8bce33f79eb2154b662565557df147237692a2cdc9d0179c32379bd7c67ef7d151fe736a78ddcadb30ca226f516ffbfc1050547de0f1589a2cc553f5712d5ff579d4cfef8883ef5495badb3e74eeec58c7609dd6250763cacef1051996124b9231ac51133872b16cd73efb81b46e7ab2c2a898ff7dba89414937c014b8c15996c2fa39adc4c87a15faf4feeaf5be59f37bcf7d0dc0eb7277502788c501f48f953e81ef3df34fbdcf11cd63055dd4cc13ceb272ee9a742021dfed0e182fbca639cf84eb9426ca5181bc3ed7e9c4a7b545097a4700ce7779ee2e6a631842191a270907ee360979cfee5b3a8921b60cc8c941ac01cb790af50306403056c2cb9f30c014efa5784190ff70b0a97090feca0419ecfe94627a2fe63bcca71764b1c6d4a55588ecc23bea0a933d77a9613ce5a9ee5ef9fd1f339941de6c638d60552b6d6d196ea710b7fae61140412438a9e966c7723f24ddc0430390ff111cb78e5dbd5dd0638a252c9f22afe2de2ba1e956966236a90d59b2994c0904a6206d059818d4b81000556ca6e52c3946bbe4468d054a253203d96813226d5d0b1c94c18cc8178eab9b06f075cb894995d804bb8c87165389aaf2e191ca87740f47819c125fe482626d35b910461cc1e3741c8cbb1ff46cb80162569f29b3b9255e8d648a4a3af3631f28a4448c743ccfcad588136607d1e35a446508a1bed98aac0f491168092ae9760a5a15fb746f53f9e744385cdbd13605df7d9703bca95e11826877a878b2e9e5116af5f02f468865fed123fa290ecfc9f0a16f05e5d474ec5ba23571845d188985a6f7b3175cfd2106740de8b3224d9d6b9409c98011640ed0a09234acd971c9eee8b6ba081de3d78e23c7bed0ff90c8b1e6ff135efac52bdcaeec5d6e9d497bdd5f2605d41f2a8887e56a794ba9b79c3b70796a6ef7fb0a3366041099b31b55a59cbdcf54b8dc2b827ba6054a6e52c5b57532110e1df4684f27e012f471b109428efc75a8ec20359e9a8908d0041c4251c29a0cadb0bfcb14af21a0bd018cd969340b51b3cbb466733c684c37255d414b4d7c7721348c89a2b926309a3891", "8035ceb46e84a7c6a438e287f4a78c0ca95a08fa4587dda14c7f70ac299fbb09779498e371ebc6e463f697c2d7758ebe0d98b31f7daa45e4b8e3116ca5a945ce7946e555bc0ab5ccf899b3cf571bebf5082e22e9dc2a48c1a65a9088ac86c733e02c2b9f329b6af26471184a16f59182be81e8d08b52f66dc5e66381d48a358c1e3976bafa08f3c3e9c2a79e3a30415784e8eafed84811eecc1e76870ef8311d17f063415b3ceedc069259a560d19b36f3b6e26b6c179039e3ccf1bf7b005b7b32f0b9b1afa48afab62bfaa23d88436c2971ea14ee34563ede3d9bc71d305d85f1fa5ba057dc30a92d8d5f6f075101c2337ad9c2aa5ce6e0a874c28fc810e4a4247cbacd71bf690d38ab337591dd721d1151aa7314e8b840549aba90eb91ccefa8f184bdb41379aec5d3178c7aa7afd051ef1ded5f6bed7f23767cbf7ac3b15ee97c940287b64a24af338b4ec668490ef31bf3d3840c12ad77964d92e7856e0b8838888a6dad5929ebfd3c0351100b9064b8c577b514d5e21b07ae994e6ef958ea55c395adc24541e0bfd882db74b119eccdf5dc24ee3f110724cbc27a591a5e1ac1fc746a55005f23a82ab7158cb67c65d47714ad64546a2bd2eda54e9c4e5b3b96a882f16dcf3a4b6427a2595f7b868e49e1c65d572b0757ee8ad1e6aa3744f494957fce1c330737ebb4bbe46bdfe1e153ab139e8be3b61cee7c9d3ed4dd8bb383900453ec8458a1cef7972bdf888fe23f904e79911fb80767b930f363d44892a266432cf9cb203c7db62007244f74094923f4504f2c8d9f4c458540c861dfd41272500644664ceb2d509b29b796411eed72ad6a206e8bde4af4d75e8e73a2ca3f28592f188fe2c04e35675f07ca363554dafa18807e0870cf74c8183d06c1a8af022febcf12f68bebd4ddb9086d4e9e60d16271dd1ff40a94f04bd1502372acd9fb8e571745cf0f7c25a8b2f22b4174c5e5c9254750c83728e912aea88e784017a44ffc1cb197f1bc3c01134ea670d82cc98393d17cb5e135c09b21d95bd6de85a2aae1896421a5a2af0becdcd29c00be141d5a18a0444b296b9ce4369d6930d2f099303c9c6471ea91cf31825cb6af2c6dcabe79fa1c253ad0674b47881b43aba24c8b3fc4fd7a7048fc7ff0fa1a270d1788f386b10f2455fd5bd9ab68fda98368ac426c2e7377b43faf132f0ddc2c4e10e025e8c05a0f9f3d80dbe9a9c69524bd7c76a02499745b899e5131ce03eed6c3c2623fdd1fd0d2e8fa7e0d3f6e2da88b39118908e1991553f3d4ba2eeeeb11991dadc724a439ca01a259ffde020d9352ee8f9a82017d0ed89253cfe78f41dbdc9cf5a4886b45984fb60b5251e435569037425d7f2a8f17caffbf2843dd17af352f07dca69571612df6662493c96e5468d5d2ef7ebdfce14fcc156ec84e8c579f67bde2a3b5f4e94bf27119601a1c4e9b529a42d079ed14cd2fc274e433a2e698bb7b2f9278e34d13a018796363d9af934973dac25e7816858e99f5a8f371447d99f48d04c1b8294b59d5efe91435ff24554bfecb72df44eebee36117908ba9c653b90b6ba22d6ed5171a422f565437805b6675f1ad4cead8a9e3534294eb3081c201dc30a26636a2b9d62146e43a18be738abb78dca617268cfe92b45349f86d59b38f6eab93f2160c22fd13749245a5a1c10ecebc009c0b8cea4407901128b6dc2f198aed02f29fb057f0d913269ada0", "80467b62551ade9d479af4d8c0e1dc53e2b04a54eeaf67bd5a127c2f89cf320b868a002b728e1932cf23bc34b13539e2f27a0ecc21a5493ee2e450d92d3bd1c60e86a74c7960bdaed01062ebdf36d237590c4db593ac598a5f0add1f813645a4f62b6332406de6c56222dd6434b068ce46b8c5fcafb222450964be26251928b28102959e85e414376ef424690cbe9d0d3df883b269855eeb5c0d4005d0bdb809609f40201e89c0468e7adfb0ac65021f53e9574ec9165eb0805ee7e1be46a40c1f5de04e70712f8b68e4e40590565f095082fc0c1e25964e07b767343b7267652971a073dd3a3aebd2714c31115b9fda090a6458b870fc990bf1ba795a6ad0b03f65bc26986d4a361e89c6f2fe18dfc4f33eef2a74e80a38950cea064a9bff07c99c8a00885b35687a12fcccfe2feccb2d9da16440ec614345dfe3bc37a2e0b1bd04946667a1d5d84e4751be5802e1135b7c691cae43eff03c2cd432cf988fb6e1e9f75530a33c1d2f19ed940236c7db335b5c5e9101a752741e2c3392a64c35df68288afe7f618f4bdc68539f677f48a4395cb359a66537979dcb51bc70ab8757f43cd1b9c8ba6160dbb88999de4600edc279d70b8c2b5d49356323d540f9b71b57898356de78fe4d7c75387c070028fd2a810af7954745ea07d38f5c8df1d20d8b71279737bc8e41939543532790da05739b217dbcb0b6259c8648e3ade8d79b0ab56d3701bd6824d49822b04a2f68a9cf9fb4f0760e3c1f7c9124dcbda1533cc473883e970d4d827922697962a001b31148621fcd0b32b691d4fbc59ae16614a9d992786b35cd3d64dd9f2d00fffa75f90e40c698488f042d51288d3596c10ee8c72815ca18b7563558bc55fb67704a0d003d5b51f4e3f74a02100d711ffba018d916d3748ab6cc5636e80b4ebf285b86aec38fe03b801a0f737265d90a4b902314be2c3df9710f89f4163162b0628bfb73c2b57ed3fde93ae44aa9b6a963128f8c935a41035129076452c93acd686ae926255b24f526952183aa9f69aca5ac4ad6c29e31bdbfbf1ee07525e191cd5b17be80564c581ec35a0ef252752da2fd01742b8f2d73f0c0d17ad41dcebc8006addcc2d9fdfd71b2af5373bd3dbe73286a3107ecbfdb96a698f0d512b7baa55e946149de96dc35f4ff4ecfc98791dd5712be4a52e215a80c536352fb7b2bc0b626a7a98e4d54ef149d27770b2e5889d1175e119362f1fd2175079c52f5908bd800efe6dc7fb7d0b21067c6e54dd25a02e751729955ce46452038138cc5a8ef45ca9f72a8be7a66a0fe9f824331237c72eb2fe09c53eb2dfbc1b900f3151e22b23439738b0dbd2221abdcc35b8e2be8fad7d29dd3e542a544a9aa763f82ec116b4b2a9cb1d3dae8681013105d9e7c4dd7c5e143857ba7462e7ab67369954867bbfb5b40a40490dcb2bcac69e37a02e00f315ae73c1e3675f19181ef08f1cc36bf79e7ac1125cd45c4f87715fb3b12599f41c545a6ba2933b60ede523141c9a5f69da6d51fe5e101a9e62e25201bbc7a8e2966c092ab9b50e9f2eb044805ebe9a350d0db026a54826b4a16cdf90c77fea5f874c8b46376c88800af98a261d6be735aa1071c6d76dddd84951c6ba9c270b2da71bf3f0f450888c81def823b6e146c80f77fde8b528df49defd978f54a4b40f49fb450670074807645d233ec5e0a4699110533d7b7ba57442de6c90cef209ba23c8", "80524d411dfc6fa1968c2547016b1d2bfda06e3ea855c09fd2c5568fa729362913f1b5f8263b065d6adcfd9d25a9156a5f2ec185d067408d038776648c9a71e7301c521d3a65c728fc8c7ea4f09ddf1965fbdcab219bb02d15bded84cf506c9279091a26818b4750a7d818f379be5048a05cd5d50cdc20b7af9bd2b7c10bd6c37cd0a50a8509acb858cb67da70e0a812c6d076551a2d60a94310ec0ccafc1d743d7410b485bcd23496a6752341a1b036b811e2a68ded886ff53389fe7502db550f40e9e1a3656f9bf8eef873a67d8d61f1d63d7ee020f2a4473f1db7f074749175e86b7499054cde9e51f85109ca548393570c610e6cfd1654698680b8eb104b8a040443ef413c5e1b5939f76379fa9d64ad052b2365538c4482379d63cc80d252025431f941334e7128e60f0350af64927d3d53d212087ba53c3a79b499b0c7e2a19be8dbec192e340596147654c0413c39fcdfee33f66b64405900c872dab65af976fc3b160ab4e3dc60f02b753745a4d0427af4d81bd896cb926f3d647e45b3e105a11f58cf6e566ba6571d01259973e6cdc043d460704843b531f6ffa1fe56b325bf6c90be631a7fe001e6003f7190cc828d808aea237d383f8374478fd9f87dc23ede589690b07a04cf72876fdc440a4ae0765f6d3b7eca20e3c64029ebec00036efea65324c57483de425ab084252535753d3846899bbeafea8a6be0a37f1469979c6507c5cc41c2067cdb4922c7860627ebb767b8b4f43845b6bf51a28d7cd0da21e9ed7b73777bf1650008de9672e219b8598f2b3d4eed7fcede9520ac940858a263d42089e6c2eaabec8c245ca88b3d70b69123af65dd7383a4ad9a973ff182e5e66c896767bbeb5f21e18743b2fde9aa76c8e99a7ba63997b7d359944f95807ad73d585c7e0f4b2e0ca9329571dbd1f2da53eaf27d250830a8b89b4c6a91d31bbd2040e546792c98f057af6b24561727a92c65ee760e5d6b329ee85e996626f1d9abc92fb052c4d37b87b8f35b204f8ed22b6d17a88940c8fbeb1e389a2ce6b39b673eb38f98045f2e8d0bc54c4502dda7c1ce9595a3566046e27d1b021258ce1a903ad02fef096fc67ea0c5f692fa2a58035dae9a72053d02d3b3be1c9573c5d2d699f61695cbd759d5d61fba1c51f88b44ae103af9f616fca0a173da57e615d8f1b52924c89656104ecccecae469963315873dd7ca46198be983c54b09d455add238edba175f838fe64047b314be116e73d3cab5cfc8e3592c11d107fc6d5b8757a3bdf975d719b74db0519dcdef135c3730020f0c75f218b5dadcd74b3fe1432d64418cad6e0d82789b9392fbdadaef65c37fde0bdf9028eb1a4f13ec3df11d9cd07cf895b61edeec49b1590cd3ebf8a50d22bbab07239c68fe3e1aa708068276a4d06f913923169216953c28db86ec25991808a0d557d941ad0b3a103d3e0689772df08312dae268db96ad5bcebcb31fa1bfb472f50e4878190c23c1104b8e60066e9985e1d0565d2d6ad6224060768a312420c92e483ebbab6d3f96026480a2426bf7f712231aaadebc438df178d638b6e0cbbc6a407838e9f854c526884f4cb931a1faf3f9152e4accccc5e946e6155eab53e8e3397afa95a785d4dc219cd2137451f960254072d7a878dbe248181586adb4f229eb42ab25d96122d807fa8e7d9bd6f518be9b9f1e94c3f20d087aea9027a5fa9e04d7a450b49b6f9" ] for (let i = 0; i < 4; i++) { for (let j = i + 1; j < 5; j++) { expect(shamir.combine(shares.filter((x, idx) => idx === i && idx === j))).to.equal("") } } }) })