From cc4b3d7a30a4c127f86932a8fd78e3e287041cd5 Mon Sep 17 00:00:00 2001 From: Chen Kai <281165273grape@gmail.com> Date: Sun, 14 Jan 2024 21:57:01 +0800 Subject: [PATCH] feat:span batch txs recoverV Signed-off-by: Chen Kai <281165273grape@gmail.com> --- .../utilities/derive/stages/SpanBatchTxs.java | 8 + .../derive/stages/SpanBatchTxsTest.java | 140 ++++++++++++++++++ .../test/resources/recaccprotectedbits.txt | 1 + .../src/test/resources/recaccsigs.txt | 1 + .../src/test/resources/recaccyparity.txt | 1 + .../test/resources/rece1559protectedbits.txt | 1 + .../src/test/resources/rece1559sigs.txt | 1 + .../src/test/resources/rece1559yparity.txt | 1 + .../test/resources/reclegcyprotectedbits.txt | 1 + .../src/test/resources/reclegcysigs.txt | 1 + .../src/test/resources/reclegcyyparity.txt | 1 + .../resources/recunprotectedprotectedbits.txt | 1 + .../src/test/resources/recunprotectedsigs.txt | 1 + .../test/resources/recunprotectedyparity.txt | 1 + 14 files changed, 160 insertions(+) create mode 100644 hildr-utilities/src/test/resources/recaccprotectedbits.txt create mode 100644 hildr-utilities/src/test/resources/recaccsigs.txt create mode 100644 hildr-utilities/src/test/resources/recaccyparity.txt create mode 100644 hildr-utilities/src/test/resources/rece1559protectedbits.txt create mode 100644 hildr-utilities/src/test/resources/rece1559sigs.txt create mode 100644 hildr-utilities/src/test/resources/rece1559yparity.txt create mode 100644 hildr-utilities/src/test/resources/reclegcyprotectedbits.txt create mode 100644 hildr-utilities/src/test/resources/reclegcysigs.txt create mode 100644 hildr-utilities/src/test/resources/reclegcyyparity.txt create mode 100644 hildr-utilities/src/test/resources/recunprotectedprotectedbits.txt create mode 100644 hildr-utilities/src/test/resources/recunprotectedsigs.txt create mode 100644 hildr-utilities/src/test/resources/recunprotectedyparity.txt diff --git a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java index de3d5aaa..95b0e4f4 100644 --- a/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java +++ b/hildr-utilities/src/main/java/io/optimism/utilities/derive/stages/SpanBatchTxs.java @@ -454,6 +454,14 @@ public void setTotalBlockTxCount(long totalBlockTxCount) { this.totalBlockTxCount = totalBlockTxCount; } + public long getTotalBlockTxCount() { + return totalBlockTxCount; + } + + public BigInteger getProtectedBits() { + return protectedBits; + } + public long getTotalLegacyTxCount() { return totalLegacyTxCount; } diff --git a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java index fc807800..16d5e821 100644 --- a/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java +++ b/hildr-utilities/src/test/java/io/optimism/utilities/derive/stages/SpanBatchTxsTest.java @@ -9,7 +9,10 @@ import java.io.IOException; import java.math.BigInteger; import java.net.URL; +import java.util.ArrayList; +import java.util.List; import org.apache.tuweni.bytes.Bytes; +import org.hyperledger.besu.datatypes.TransactionType; import org.junit.jupiter.api.Test; import org.web3j.utils.Numeric; @@ -136,6 +139,143 @@ void decodeAndEncode() throws IOException { assertArrayEquals(Numeric.hexStringToByteArray(test), res); } + @Test + void recoveryVUnprotected() throws IOException { + SpanBatchTxs txs = new SpanBatchTxs(); + txs.setTotalBlockTxCount(37L); + + URL url = Resources.getResource("recunprotectedsigs.txt"); + String recunprotectedsigs = Resources.toString(url, Charsets.UTF_8); + txs.decodeTxSigsRS(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedsigs))); + + URL url2 = Resources.getResource("recunprotectedyparity.txt"); + String recunprotectedyparity = Resources.toString(url2, Charsets.UTF_8); + txs.decodeYParityBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedyparity))); + + URL url3 = Resources.getResource("recunprotectedprotectedbits.txt"); + String recunprotectedprotectedbits = Resources.toString(url3, Charsets.UTF_8); + txs.decodeProtectedBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedprotectedbits))); + List txTypes = new ArrayList<>(); + for (int i = 0; i < txs.getTotalBlockTxCount(); i++) { + txTypes.add(TransactionType.FRONTIER); + } + txs.setTxTypes(txTypes); + txs.recoverV(BigInteger.valueOf(108L)); + long[] vs = new long[] { + 27, 28, 27, 27, 28, 28, 28, 27, 28, 27, 28, 28, 28, 27, 28, 27, 27, 28, 28, 28, 27, 28, 28, 28, 27, 27, 28, + 27, 28, 28, 27, 28, 28, 27, 28, 27, 27 + }; + long[] res = txs.getTxSigs().stream() + .map(spanBatchSignature -> spanBatchSignature.v().longValue()) + .mapToLong(Long::longValue) + .toArray(); + + assertArrayEquals(vs, res); + } + + @Test + void recoveryVLegacy() throws IOException { + SpanBatchTxs txs = new SpanBatchTxs(); + txs.setTotalBlockTxCount(37L); + txs.setTotalLegacyTxCount(37L); + + URL url = Resources.getResource("reclegcysigs.txt"); + String recunprotectedsigs = Resources.toString(url, Charsets.UTF_8); + txs.decodeTxSigsRS(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedsigs))); + + URL url2 = Resources.getResource("reclegcyyparity.txt"); + String recunprotectedyparity = Resources.toString(url2, Charsets.UTF_8); + txs.decodeYParityBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedyparity))); + + URL url3 = Resources.getResource("reclegcyprotectedbits.txt"); + String recunprotectedprotectedbits = Resources.toString(url3, Charsets.UTF_8); + txs.decodeProtectedBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedprotectedbits))); + List txTypes = new ArrayList<>(); + for (int i = 0; i < txs.getTotalBlockTxCount(); i++) { + txTypes.add(TransactionType.FRONTIER); + } + txs.setTxTypes(txTypes); + txs.recoverV(BigInteger.valueOf(108L)); + long[] vs = new long[] { + 251, 252, 251, 251, 251, 251, 252, 251, 252, 251, 251, 252, 252, 251, 252, 251, 251, 251, 251, 251, 252, + 252, 252, 251, 252, 251, 252, 251, 252, 252, 252, 252, 251, 251, 252, 252, 251 + }; + long[] res = txs.getTxSigs().stream() + .map(spanBatchSignature -> spanBatchSignature.v().longValue()) + .mapToLong(Long::longValue) + .toArray(); + + assertArrayEquals(vs, res); + } + + @Test + void recoveryVAccessList() throws IOException { + SpanBatchTxs txs = new SpanBatchTxs(); + txs.setTotalBlockTxCount(37L); + + URL url = Resources.getResource("recaccsigs.txt"); + String recunprotectedsigs = Resources.toString(url, Charsets.UTF_8); + txs.decodeTxSigsRS(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedsigs))); + + URL url2 = Resources.getResource("recaccyparity.txt"); + String recunprotectedyparity = Resources.toString(url2, Charsets.UTF_8); + txs.decodeYParityBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedyparity))); + + URL url3 = Resources.getResource("recaccprotectedbits.txt"); + String recunprotectedprotectedbits = Resources.toString(url3, Charsets.UTF_8); + txs.decodeProtectedBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedprotectedbits))); + List txTypes = new ArrayList<>(); + for (int i = 0; i < txs.getTotalBlockTxCount(); i++) { + txTypes.add(TransactionType.ACCESS_LIST); + } + txs.setTxTypes(txTypes); + txs.recoverV(BigInteger.valueOf(108L)); + long[] vs = new long[] { + 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, + 0 + }; + long[] res = txs.getTxSigs().stream() + .map(spanBatchSignature -> spanBatchSignature.v().longValue()) + .mapToLong(Long::longValue) + .toArray(); + + assertArrayEquals(vs, res); + } + + @Test + void recoveryVE1559() throws IOException { + SpanBatchTxs txs = new SpanBatchTxs(); + txs.setTotalBlockTxCount(37L); + + URL url = Resources.getResource("rece1559sigs.txt"); + String recunprotectedsigs = Resources.toString(url, Charsets.UTF_8); + txs.decodeTxSigsRS(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedsigs))); + + URL url2 = Resources.getResource("rece1559yparity.txt"); + String recunprotectedyparity = Resources.toString(url2, Charsets.UTF_8); + txs.decodeYParityBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedyparity))); + + URL url3 = Resources.getResource("rece1559protectedbits.txt"); + String recunprotectedprotectedbits = Resources.toString(url3, Charsets.UTF_8); + txs.decodeProtectedBits(Unpooled.wrappedBuffer(Numeric.hexStringToByteArray(recunprotectedprotectedbits))); + List txTypes = new ArrayList<>(); + for (int i = 0; i < txs.getTotalBlockTxCount(); i++) { + txTypes.add(TransactionType.EIP1559); + } + txs.setTxTypes(txTypes); + txs.recoverV(BigInteger.valueOf(108L)); + long[] vs = new long[] { + 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0 + }; + long[] res = txs.getTxSigs().stream() + .map(spanBatchSignature -> spanBatchSignature.v().longValue()) + .mapToLong(Long::longValue) + .toArray(); + + assertArrayEquals(vs, res); + } + // // @Test // void TestSpanBatchTxsContractCreationBits() diff --git a/hildr-utilities/src/test/resources/recaccprotectedbits.txt b/hildr-utilities/src/test/resources/recaccprotectedbits.txt new file mode 100644 index 00000000..99e07d0f --- /dev/null +++ b/hildr-utilities/src/test/resources/recaccprotectedbits.txt @@ -0,0 +1 @@ +0x \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/recaccsigs.txt b/hildr-utilities/src/test/resources/recaccsigs.txt new file mode 100644 index 00000000..96248bf4 --- /dev/null +++ b/hildr-utilities/src/test/resources/recaccsigs.txt @@ -0,0 +1 @@ +0xf76f1cd2c35e493d64df97610359a7bf26ec9e6aab9704c3f42c09ad239f5c02679634002186eb24289056391ae1e9390b6a833c0d264da071a7fd6a7ed909488159d21b5b06b744c64fc50654ca042586ac05e47a832ae8401d5c377570caf626edf29b5afb375c6702d3a61fe1f2ad0dc78963f06089a59fe2e75324f20a61b63adb59189f1e52b2ba64204f41e6b15d2c98b88a551a9b7fe3d32486db5fc410110614df3391ba2399d6e6ffb2df3266ab24f4b7957e5f79071f2054a11a0e9245284eb72ccfa224c007cce90fe096a96c25e7b2a567dc08cd248ff24dba12056c55523ba900f07a7bf6948ceb6b6b1b7e94756ef3777e6300a3d292c85f0dcda6b8f13f42b1eb0c133f026072aade69bce585bd8c73f388ad2fea927c4e2f7af8df36059ebe4294337df1bed8962106a1219a5bf52864f7e0459644b1ee59315d631a617c752406283534a01f04b7ba5d60f46eae60381e4413835c178bc009a9354fa2071e745941dd74f35f0ca8885594d537d59cbcadd5facea4c59d33bba81a2f56a246db5b303e4700a6fe94e530eaa017d0f2c84f1e8ab6b60e8e9b5d8d5ad611b2960eb54fb06effbb2c7c790ca503786dbf00b99e5f685e09d654a47a7a088ccc9008eb6d2f009bda9be00c6caab53db9dfa4e38ca74a113b629360ee6dd61abcd88ffc5b4acdb522c84f751ff5dfba8d1ebffce65de1ad71e165a5626bf63a1b5c6d10a0e25cf7168718f02a0da2a7fb50a397a41ba5439c5ce434a92d453b81e255fd370425c1772f690cc39ccfc6ba45fa2e4c92d540bd311d544fbafd65f66d3cbaa7d828ea5c373b3584b24bd661d66393bcbcbcc7e1da24532dbf882a04dabb7bd04ecea3893448955416923e38fb0728ca5f29e248f9b94430f424719772d4c2daa9f01f5a4c38c5098ce24d0be5c41a3b609dac135173749983e90b087d635dbe575e0532a37175eb7ec5ee4d43713441657f1659306c3504ec766deab458cdae13c874c03605b6df7e22d71c3124f2e85094c21b4a96568cf439c3a587123e58d84dca0fd437717670cea11b4c13b629c0c04fac5a585ea39560fdf9faee83ddbb3de9d04564ea9f1121b1b2a6da55a1c29e4fae71f0251565818a8371e18e17cee8d6a60b7051168b2fbf95c6bf3d182663698417a94f74b90886d4dfd26954062fe0b852ee9b0807c9891d3a34692c9167743f695c26ce41b80cd7760d81a2730a3d96384637247daa735a4a4bbe57130c2516be9f36980326b754f5ca5119e24fd075ca5a453551468650d13bcc71f170c7deeae632155f0fc99d0f6163d6fb3547d958b4dd38d42945279f649713b7e04e58aa48cfdc58ec86399b55e59d3028c1e2e1c90db854422a49f0725696d9d6acb1e9213dbb624c6e6b4f9c64dd6c773a12d87c1bde0924a01402fffe3cff88178ff3af2c95c4a5a3a9a45575a388034282eb96b2d89f5e9c59b211a814294e8e10abef7ffb8422ee4d3f5acb8c07bcde66863872ec79ee36e89e6c3407f556edc108d68c1dea5c242c2c4ecf03bea852d77c9a60392a0b2257afa6674151f3aad80545336144c970d30c640349a06fb6a7587b37811e6386c5a34f4206851340797ee5ba8f40225ffd3adac3212e6d7e6625843c5d515e3e2f3518fb6644c55e318fa9798fdc1309fd1570fd183ad37b6a707a50f1ceb9005435472bea527af98dbc68e69fc8cef7ea49a3e43890f1b4d1d0b58e6e54430b7824ea55f098eec122352537c5a84bd27dd2d9e76294ad3bea4086df3d70f2f3477422e42a5397f7f693aec274e0e203026b2b0aca2ea23b5b4936b92cb26e08fa0d9aa7602b31914bfdf010c042b45f4fb54f5d4504c39bd54b1d9e96da910d3fbac89b68bc65892239f73c555d9675c6f99befcc540931409c1003b6de285771e4f0fa7257907b6d633630b0e20d924ab269c3f8a462520b63b81a1c2dc2bceba20c2f3ab6a65536f7546635826496c593206016159226e8576bcf402dd91cdf7e218c95c496b2a2a3f65a95b11a1214008e2ae10505fb43710101c67489bf395e95a3f4c33aa5e68c23fbd4891d1d1b679a6fe667c798aea9d1addd28deb5f978be49531c09eefae0247bc554fbd7f7014d3df9fcf973a9f6375762f2d4f9787a1ee23dec19969c94aa14649abf77196a67cbd8e599df65a0ec92bc205bfc7b99222de7184278e0c52021c2ed546424f10bac57690b8fe16ead5bc537669bb489f5ac81795fb9353d201a5e8c6000b6ae32f9ec70207539b6f3062694d90c29bc8a3455c45c1be8fc9a6d52dd8744ffeee11e3dd92a5ea363da8d1436c8e356354a8f94826ea73fe79e1075a168ddca5c6dfc63c195c444db676249082eb28895e2faa79d679183c988738379f712da9bf29a297b865c573cc66459a193697dc964f8f3954d74a12481363a0313a4ad75d8b24bede7023f793f897fe36c7ba140fbbc2c62bbc8200cd87201a2b5a3405322f1b1e180c319285b3098acebf46630306eb70fab908dabbb592b23a8f70bfdcef1ee747485b5bcb60be586cbd08ddd8bbdc301ed7e2e57ae2ee81ebd0050397ea7710d69d09fbbc60ccc4618fe513cdd23111a89c0d0976bcc361ed44210e0df077e90bf4f90781475a3f053b39cc35c462bbf0a2e6b1f795c793493f95daeb7b083a35cf8b8c5539958d9c5f67ab8d6cd43a02c06d963b690c05ce59ea50c6feaa8b127f4b56897c6963179b9b108aaa1d75c9f75a806e9759dcacfde6d77d59ab0f5095bfc20a0a919ef299fdb40fe7eb324bc79321a70e5791f2027fb6590d80d701b98d0aaeff2e330fd7afdb04705ff9ae795b239a37172475610f63dad355a94fd264a38aefabf90297aeb974541b06e0c3af44404b52f69c5d5ef3cbb5a64a754391ed2a9fd60577f2a54c916a8b0d366064659af24a87456db2335d3b3c65f6aa339ed2189b34dd8aab658927309a43db946d1a988de892951e2c822d6d82d159ffcc16ab3eeae2df758d4d9d0c19bbe6efedc657533059db032c3d6f59988d3872a14434f1e89ee435019ee75a9c1465a9bdb841485cfd0e0e216d87a5e8fa0652c3f5896c788d5058897c9307dba6fef929a4d3c15143e546abdaae92acb71eb9e80d5a0e9d4c38e7d3ad40d88e1c749e921c8edcdb4efd7a95569bad050183473b33634c654135b085a8de26a30e7b16ddb1655d0955e0f6a3efc6da50d2cf3e764f7dce04e79f9f6de8a027dce88ef15df3f1948979423c28c5cd246dd39656fb40013f8fb62b8331adfdbf50cb1780db21f2975ad0a37ddea98fe6f78357b28d639ed8ccb005d3e9b5b7d12338e2f4c76d7 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/recaccyparity.txt b/hildr-utilities/src/test/resources/recaccyparity.txt new file mode 100644 index 00000000..0a8f9869 --- /dev/null +++ b/hildr-utilities/src/test/resources/recaccyparity.txt @@ -0,0 +1 @@ +0x0c46b9f277 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/rece1559protectedbits.txt b/hildr-utilities/src/test/resources/rece1559protectedbits.txt new file mode 100644 index 00000000..99e07d0f --- /dev/null +++ b/hildr-utilities/src/test/resources/rece1559protectedbits.txt @@ -0,0 +1 @@ +0x \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/rece1559sigs.txt b/hildr-utilities/src/test/resources/rece1559sigs.txt new file mode 100644 index 00000000..b8addba2 --- /dev/null +++ b/hildr-utilities/src/test/resources/rece1559sigs.txt @@ -0,0 +1 @@ +0x952be1536bd3de6df77c84d79a3baab6beea6636393d5fdfd688aba52bf92f40685d056d935f3334d4f2b5414773666cbbb1a25f82a259612429c2a486dac8685045c10fc5b67da4e7e76bc8fb3c45090ca6c93d213c9cf08599d9adcc4a2d34154b3c258071954811258940be58c49bbeda054b058ec84243939a043304dcd7af69c531e10beccd76afe2d51020628a021deb9be392aa45e5dbb9798350d19912582a9f8a59102c480e92494d65d3c73fb9ce95ba14bea8a96baa242e5cd874da0cb937f8b531702024977d20999c3c4c78fc1fd4548940ea10f2f303b91f2629a2dd22c98f1234056f63748c8eaf6353cf498fef658c7db913f4c3975d3093cd35ed639e80391685964b4e727314c97905fd1bce7306b6289445bfe43e4f3a556e509e7f0a66205ae51077fce2bab80d567d558c864f8e4ff45d0971c557e69a68a7815369900ba8b635808586903250b68315ff1497857ffb13fd641f65907f2523ca86b041fe3fe8befdf0d0e4ea8959da4bc0330be7cafae0a7a7b7c7867861339057799b86acb1d2fbe4a900c3d688c0b668535e231bb818a31fdcece7761409e953ae2e3c619e51200ee907e6603a75990e761aca1fed16ac086d745def1f711d643b9f043e05bec512dd9ed9e2c06ccb328f9a65a2b4458630fac02b0224a131cffd6296e9aadeabf04aba1d2fcb1fd51ebacd853471cd22586575bca3af5b82cf5b1f29376846ad1093319271dabe421d05f9da316bab64445514686eb3ad8346ee78f484c0da3215e82ad98cce005f79b5b96c30fc49c6644d281937ebe81e7cf88d2895d5720bc4d7b104f996fcba6d2dac4f6ceb0c8c9df41b5968b3fdb3b4aec295120e74853b9071689ef394444f2a52fbdeb2c02182561dd0ab19100684e032775ce8280638ca7353b778a4412a9c79e9180cdb8e7b3061516efe7435eb6c34860d82388607b5e3fcb4b79b96ea97e1dbecccade74a62181ef869047b53af5d58ebf905791129273096c8da68e029748544dc4ae1755ec7db70acdaf75e759059ac1ca253dc0d74072f16cf118fedbe3ca6bf9eb8750cee3b6291948af9cdf377a4f42e6e946d3b14067249df65ed30333ac1ac5971dfa25006c73d55f5795e51a0e646fdbb1558b2a9d006c5ae7af5786dc6e8fb9a04082186d0a59ea104678589ef42406e4b6ee0fee45db6bfadd3ff53d3f33f2f963ead719cd1f920bba354124184f8a27212cdb52fe7e6d8288300dccbd343d6dd7a84bf4fe9c0835f4cf62ec1e1af75a2a6df3e681361e78443979fc4e7ec99463f5c1a7a2eeff522aefb085108c7a843c513bedccd1a9a1374bf373ef22a912a287336f6292ba22ef1634786c4c2d12fc25838cd2940de5efdc4f825b3c7c60936606984499cfbf97d62ce5a7095b6292f612834cbe570072a0a9dbdaf1d52bfffe5052e153b68a2dd88d263786d23d26d9f340ea203affc616f857a2525d139d54c15e7cf5b13136d3c4d0e2ffa8b960f8e96448bf035f72027d89c516421bfd127c61731a4264db00bdba7c492b87fb9d463c4f18c84751e6906d329d62e836bba4233f3879a17ab2d941b16219b24e3e3596799a6e16cca447299d70b0dcc0eea32cc4264e17f8db8a5d6c56bdf0d3494151e13186a84c229c26dd98dd6f29ac879b0be3e3ed1281426dc77bf45c570cbfe6b327d672fa2126797986a2fff82f972b644a47148d7112a77d10bf7f19f19161760f164c3cdfbbf12f5e1da2f8fef7386eee3d31e6584f670fe654a98e5425f8b2f0df79f019145d3d522990bc441933b565e9f9df3d631865c53d9f4a0061bd44393976737c2664f28992a6da96644e2a61774d6c1245879929c191ee189a41cad0a0e5f659644248add1e35d9fc252f6e91f27f5bdd27ed2b0b30628b2e9a71be295c342411eee2d12383e324916e78905dffbdf7f96328e312ee3cd5e16f12c3b666ef88d81f3c092d15f06b43db2204c1fb138bf41e52414d91b9a7426b7fb8f72f8608ef1895e5f19d062a981cf058e182ea1bd63de58fc5d0232c6be60984c87e45abd77dbc4721b06499ef70bcbbb851d4a83466f60288a5bdcecc7f1e8ad1030d06d4efbcbe1409ff449e1d1a7a8c53463c1b27162d7043b4c65046d96dd52e4104d44c7e11495a75f414bcaf7e328d64662db4e035a1a1118612d5122e665a5d8204fa5888ef59305cfb37bfed5364a6192c433bb8e2d6f18f875007320048ceb2262809b6c26f3f654b155120822bd988e2309b3bf428ae39086323be0cbf30bbeb2b11fd3b8312799f1fb2651404794a60f4f9b39922dbacc0a6c0c9427bc78ed902c53242b4c52b56c5ccd65935ce64990341c5eb77e7bc85747378385393d881e764bb508ffb3aa2712156ec9dd936493be9489fdd3efb9cfdbcdb8faf91c8977b60de0d26a71a31819ae94e200556b787c0921eca6fe796f0395cf68ffd311452bb7c8e1739f462122e69492ce0191e72692169ddeff213453efffa032287e4ed9c2d973acdbaa4db49abf7c20e7f7c1d3d27d3d8bb6158519621af8739dfcee18c5e337817a3ff3c417262579e55db13c56161f71d5a78333689f88bd1abf52f6145fe2d3b9b45c8e5d350fbc90cdcaa739994af14d14ba79fba1fbac6bc63eeaad81e50af0488167deba1871960b98063ea0e0aca0bf9ee9f6adc38794c4bf24a20386fdfefba8e81b93b8efade4168443fd976d99d52814b02b87858f640b97f57178be04a44596615842e8edf6f9052c747b3fc1df4cbb128774876658bf67f1ab3c3c37de7dae7f970f03b6fd49e144eba1dd8c6decc19320b6d67ec57f06fcfd42fa5264b638ceff3bde0c4d677b94315643894e79039577a11de7640af6ac7ebf4480b6c140eb094196eb5d3a5ac741b14431c3e793133278f85d742feb32e672e10b64f639ef63437700d3feed874547a68d99b5b60a5ab973ae0952903426d36d39053f46c6614ea7ce629558b0102beaf4b38d9838ccec98e012a7c40ce80c774988c2dac48b5590e07a47139698df7282c560d73063b4ab3400ed4f2492a0b42df76d387e1e291b66791018ec192551f70d4dce37276efa7b2f7a3a1eaa518fdfbc026bffe00ca2951cc3c4e3c22a479286b95d81908679e06c56146724dc77945ffb8aa24907df1b32899ebc233e5c16cc8cf902c5c7acc18a1508e41116ff34218255fd3c3271c51195ba6616135c6dd70d324bfee1dc160844ad69ee509e1aa84e2e50f5741eedfee60714e9de9bf99d826b00f585c744609b0938a0eddb033e503aef9cdb76274745a5c222a7042e3064bc5917b4be8510143b6c7cdb1c799ec \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/rece1559yparity.txt b/hildr-utilities/src/test/resources/rece1559yparity.txt new file mode 100644 index 00000000..8a71564b --- /dev/null +++ b/hildr-utilities/src/test/resources/rece1559yparity.txt @@ -0,0 +1 @@ +0x0ff96ba4cc \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/reclegcyprotectedbits.txt b/hildr-utilities/src/test/resources/reclegcyprotectedbits.txt new file mode 100644 index 00000000..787b3d07 --- /dev/null +++ b/hildr-utilities/src/test/resources/reclegcyprotectedbits.txt @@ -0,0 +1 @@ +0x1fffffffff \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/reclegcysigs.txt b/hildr-utilities/src/test/resources/reclegcysigs.txt new file mode 100644 index 00000000..d3bdec1d --- /dev/null +++ b/hildr-utilities/src/test/resources/reclegcysigs.txt @@ -0,0 +1 @@ +0x35781960614a05699a568724e049ec385ef1e4f5b390bb114e4d6becde6fc156786fde409749ea5fbc2c059622011db19a5f090e32b4510438a673f8e93fccbe680673cde91913f009e6ac6fc6863e4471a0b68dcd9ba2c1cdcc84337a47a45734c0f3651666a6b401c6dbeba2bc03b06cef5d6611463771b84f1d374c366858b71f9f4c7ef8293c0c76077a64fa46830b9bcf3b2b5c5a9d76c4ca0699e00310496ab1a9adf46eb76b1911ede357693f27b8b7516f3925f47ddebdd51400ebaf1556f4b2cc784c605a2d077550d8ebeb01d2b08bc2f521513f5b4a69a365b7eb2d5bb2a84f128a8fa7edc6aa9d43917218618a14d9053bec9998131bfa1dcfc833be1d6b9f0e5f2ff8dc5c9110e234401617022614526abdec3cbf8496dafcce57cb7ea865ce04a4e6b5f5e3cd3d177112901750108df38cbaac12a2244c7c69cfe38397e0462adcc47aae80e8e578bc02a156f59d22e1d981eef74d098da9801e07c94d510a6219051af3bdd1fed78e08796753308282abcd107784d4bdff2f8a8c002445c8c01e62e7e662714055df655f5777626bcc3ec6ef96bc35e9b7291f2936b377ed2cddb617266b0ce414d1a895e6262f8f3e0543040e24f7be86087e8f63b0daa6df01d9ca5b6c80fe7ea52c92d21bc7cf2f87f359edd50a25e5834a129a29b462bc62508f3408b23750a6ba28df35129e1b909deb188f8bb91a24b5e7128816b2a85c8ee9ca9128c5d491c75408ab3d1619d554dd3430845b10bc2dcd7f451894f538989f8c605b0e7776647dc0f9a924c2a837ce8c14f4dbfbe073a64f5778f29ad971d95e18d2f3f8c6473237c8259710a2d19d43694af6e712364c8f44919b6b6788dd16be942cf20b4e21b455c961cd8f534c9a451deba8f9012c89d2f52f7dfea1b5f5a7c7f19f6916d24b5aefa1f44fa02810d6fa16102406ca5f3783b1267269ade04bf905d69753661475aeb7ea8d88e61a4e0873e0f93c623114cf62aa9684b0b913d569d57b141caa122dc72cef6f3731e1bd88a6875e45bdfb38465a1fb2385b5f6f7a877356935e0a9f34423c382f8fe529af46bd78b1695f512ef173cd1d9b4a3c683b3552095128067e66a22d40dd64fe121b8104f1edd52d7d2c1b818eb5efac8478e81ee25a5bae53253eabe8832aa57b2894026fbcfad6652f8afa65c34be464ee1e1483ce10e95dd161715927649d3087476e2f945b919c4bcde39896e268e7baa5b4704f664a65e51850eea32e84b2a9fab0e2432b0106a747bd95845e84e346e6c71bd1cdac25ffb093488fe29d5c1c5a036f575ce9525667cc88409742f3ef87e6388a0f08ed60eca6cb09ba8aed2e9eee3e366d948dd24d931c5e30338bcf7f5fc9bcb6c4000d2407d1786d691cbae87c60969e95191b2b310c52a2843ceb0477faf3f47c87e1c991254dda43bfcd1f17afa690eae7b6b8ff34ad92d6c718a3b764a5ca7e15d18620517002bc31f8434bfd48b42c8d58c06d3b3a1ee52ab47a41be5c0e85e00f471f171bd68bfcb51067590eb0814084a95e8dc1538bfd4ec22e5a6a999a47a409ace5ccf7169dc0e730ae950c7609d7db480f228a5120bb1a7e7fac9d6ac99a1b59d9a48323a262666bec7fbb534a5ca21b79fe68d9e50fe6007dbef9f5b19ec41a1dbeef7a2e6d23365eb6188290e8868fde15189e531054c55736885d714c43cf5d680a42c1acc6a78560eedf674d3fc29f5b906bed7ec080b0540adb2e276ea9cd1f7396b9468207a07146b2e3e45cf713c4dadf046a8c4904bf47793ef7a7146e3c32cfa1a716dc34f26781414088292bff81004d48a0f67523e63d9c13b2c878d987a885ee6469f1597e828f58b1d714d28e153e1e13e0c938d295e643fd29742b6935f3395733d6593e30a2b49c94bab7807c25f9f411bcb5ea3d063dc1053bfaf1d4f6a3c91762f5330e95c6fdb03853cda40f89104bd04b3ff61ee16967aa8190808821dbdee12e180324681d8acd27bd9476f6136c7a6158c01540e36444f1458b824625240c69c7a3d2f8966ef2cad2e38c925b97c005934ccd10175ccf16a9d2446d114964879b50ba2eaf987d3fa9ac86928dbe745af37fbca7e34010212d704fb8c513180068e5dd8cec9ced270d5c83d7c45ac98de156dae6aee9e8ee7a80b04fc57b8295928979652a9a1ec59f96483d57052394286cf591d34a48eb535906603c19bf9b48cd19a02c7980d841277f26f85b4dcc2c59430f615a3e2fd0ab370712325d1c6b707342f834a40c04fd0a790dd4bb55020759e506f04de86b4b6a45772826f0c04dcae9ce395bd1069d149f381f5f0e722453343c8741f79f987904f17e07e2d756760c608d90696040a29f2951fb76d3e8ae22152dc02169f4615ed53ba21a9d5c8304df50f79b9fc080a9df22f9ff97bc5c388df99ee319c9c71b76a3e9bc06159a7f2bc8563b8b454bf7eeb54a8d36acc874b6a1d4abc930cdeb110ffe8bfdf3f82b2eb17abac6ec5544b72f0b85ebbe9517a4ddbd44c393978f72a9894ddc6c495b1b847d18cf0208761a9ab84da40cace6133ced98b69cc5f2812c7ec946f829af8f48f49bf3bf02298b46df24362b4bbd452ae1d28affbc3c69b75d51f8a67cf67b4f19e07bd9b1d23f02a9d740463e17d029e0631e4a981d8a634ac44eee32987e1c8e55ec9f3a454451a399975c20020d583765ab36a4a579c4d7d78482e64cae2cb2a3b59547af754af9ee57c2c5d5b98e56583f592bc4ec19dbc126e6433c0768427bd5dfb12b114746cc4900f6aa6d842af77affa6c1db7d5bb1d326f761d79efb5c2f0765690dfeeca58a07ba3509640c41c0052ab49e4a040697115361339502654095bd1fe9ad9681915c5ea5e64a4d288b45cc63f6fb312a9a3edeebb48091850c535ed30d8873f939e002f73662afcc0097eb903335645d636c0769a3ccf688162fb2ff64dd972a756a37eb138163f47a77bc042dc4fa016bfd45aeb19ded72a3fd0d85a6994c7f16ed065842a4d694d724214e8f49f65a9912f06dcb8329426a77588fcdf4047257535af4396adace8a18e29387ed11c717e770a01e15e459140b34823d92333001a0f9bed80e966c04c1becb3957b143356d8727967c6e4f370b264e77676c96bc0ef4ea20070140050afbb8d65b13c32cae54df654ca718d38a5093d96a1a25c4cf669833abc845932a51d02a70194a876a67f1b59b6ba526a9b93be8826cb4a422c6e25af37b9c72d20b3790f961b1762965c5b5aaf79f96ac2c5a26b92ed763251c455bb5644f9ed9d1b0a53ea794be00864606c7f50691fad75c17b832baba04b894658698810c8443980a \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/reclegcyyparity.txt b/hildr-utilities/src/test/resources/reclegcyyparity.txt new file mode 100644 index 00000000..5d9ac47b --- /dev/null +++ b/hildr-utilities/src/test/resources/reclegcyyparity.txt @@ -0,0 +1 @@ +0x0cf5705942 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/recunprotectedprotectedbits.txt b/hildr-utilities/src/test/resources/recunprotectedprotectedbits.txt new file mode 100644 index 00000000..99e07d0f --- /dev/null +++ b/hildr-utilities/src/test/resources/recunprotectedprotectedbits.txt @@ -0,0 +1 @@ +0x \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/recunprotectedsigs.txt b/hildr-utilities/src/test/resources/recunprotectedsigs.txt new file mode 100644 index 00000000..20bbca6e --- /dev/null +++ b/hildr-utilities/src/test/resources/recunprotectedsigs.txt @@ -0,0 +1 @@ +0x58469a72b36380cc980a62653b33b3a82c3166caa739d1c1351a3cbe8cab9ce9582e456d2688bb3e5d2e7ead9103e806e5805d504984e9878e1877cd44a8bc18db6f3de49e11e7571262a4eac7d2bca0d970f0db1e4f930a8c0ccec92cc54d6b1c894ef3c7443752e897c5d69f9895365de12aded7a10180d80ce42bbc1720e9db3bc295bcb5ff18f19470f1b1cde994bc0bcb07e482a5b761a5fe598b3b7e7c6b174a212f0878f92abf03260ce559e665fdb8bc06e5f6a14fa982c54f7e9b02a2bcc4f0138bb38d7899795263aa7b43abb3e9e743316962797234900391b3817d90ae15540c41af6c123b2a47feeeded800ac860004661feb6ae077bab8ad007e261399d94be49a713cf1b68c730623b29aae8bc7b7b826b4c78b5393a22d706d6572876a751b88cb0fe2d253e7f3170061f186a3e11f9ff8101851f9c372ec813b3f461d4ca82473b07b40bbe04832f48325b3f9c85d1eb9c9eb07646131ba73b4eea69e7cb8cd22364605edd339720151d2e5da8016d27373148d09deb0dcadefc669d67459d03e73ea964c2df970d7feafaf3f3000a9b411646b25cd162f414fecfda549309bf3b3eb186db240d02681fb8735329d0a80e4c078075ef8f00c96ea2d7a70307134564aeb1582deddc4b3777a68548b71eedfec5b74499c577b07f97fe7c3b451c0c2d1f0a6308f17d03629b9c66a7a3e0a6e7619bf4cd38ca104e6406aa02e8f04bf61037d351e1425e648775b947404b62ef591450182cd24fa6c3e06dc090a8ced503d47725546a8a01d79c1e6ede3ca113bc127583d5943bc86ad30af0562aeb664466976ca2cb2593b0491a3368c5f45b183b010c35737e18de0bdd0fcf8e754f31baf15c1f322ad7f509ca61d780678aad32a992b8fda7fe98bdc3febe0ca7684585974fa0d79557c96d820fc7eafb45ecd784ad8481d8c8af8865805411260e0ea4c11d4d36dc8069febc29fad356a8f4838fe08bc45335f05f934cd60c9b6aad4f6024b01f01991b472d0ee2a0f56ab09809b83a72e7a13f4ee9e39978e8b36c01864695e659406f1fd563f0634cae50f024fd17f48be16c97422ab39543b3f10b0653db125d615b53366d259331261ba25acd0bf3f3dbb80010aedca357bcc43848d09950f777aa044fe3ad837ddd8811678fcbdcfb293892412784328ef771c0dc82e4c346ef08abc133bcdff168577e170867169b7bb0ddcb3be82fa9b2f5682b3bd03a42d5c6a3996bb0be858200f30fb44b897a0de966d933d6140e3de02ba1f4e048a553b35769ed4e72f7b2e5fee48de0c1d848d76d69cdcb751da347b43cfa94894c67949f544c7d59dad1ec8a11533bce6a8beef9f9a90c3aa7c203df07c8b8fa751f6c42d71c73eeedcdae2cbc5ccb26468afb567b77eb758a4bbc4bc694e54069826f46f52ec40607b1b9609d4c62cf224d6c08de4d8d7a1943911e6f96d618afabff07392d5c9c5821f4548648663342e5b05e5de6afacd856b649fa671b0e7d3fd15f23b7b439ad4d1d3434da96dff79197ffb5e12efc74acabc557cdf83ca998b34099bc856fbf71974e5aaaeec6f9de65224ccd48adbe5ffd2c0db802147840380e3fb9131cf8e9a114dc1cee9c7a67bdcf5db3da6e30ec6d099ee636979d83afd2ca23c34920f3650371fceb956f4b460f4db021901bbfb60edca72c90da83ea13e127105e5b4fa1084588080c4bf14cdb00ddde8a6be5bb996e67d157693ff6ea7a9409498c1ef74b321a75443eceaaef2a4509a40e5398f23f15c80c0b1105dee050c01a4e7e13866d44c7b95a9fe128bcdb133428e1e6d6417d51383d627a9edfc98c0f57be8b682b581ed7ab147c7c819098b20553d506d189a78cdbb8aa115d0149d7e6f5f07c4ccc0b54ab1cdf20a79cf84e8eda531d0c9c8c81382498192e2f59b4dc9f275c9d79fe17b83a8d79d1b8ea2760d93f93b4db5e95eb2f966f7f7dba92ec9abe378b7e4f8f9952b274da2638203f3a3db62908f84c38c8dc6b685b2af00c2d9ea1735c8085fc4b9de27d766b59bb59ae703d3d69a011da82fad2d6e21a4548495ccb6c5c1d246e1e907730826ccbe85726bbc48cbfd09129587eacd17c38a6d21fbbf83f05315412423156d616b0d127eb3ec6a6adb05c3443f27c202f566eee0bb64902dbf345f0b54be10837dcbef53c328997f48fbc6a476a3e1353fc67f920cb85a0d0bc45468a1a316b6394a33f5f6ba6f2184ebcf88a35a3110582e174aace501bfb885fa03da7ea3c05634cfef1cefd4dc118c656501b4582e55eee093c34995233f7637ead551a2cb30d3debcc1110ccfe85fd91ee9b9baf038b2a3700d7251eeaed9346bc2de4402434416f02bed19d0d8f6e4a9ecb8244bc0a050c948e9ee65789efd34131ae43eca29eab721eb7195c943f7101bf556406e872c06073171b0e146e6096e8e65c485c02eda736677071256f15de25f98dc22ac1cd42e024d2027c43de873c85ec36fda862d142a9f1628c6bfd48e3a0bfd3933182c813e19af28ca769edd52231d1d237d71c278dc5b8bef55d85bc0b17477cb800538c4c20c278744255ecf10f8c80787bdd7fa187e7cad6f673094cbc86a46f55482fe08d289f1b2ec0ff7642a399f074c5028d8de0a19dc152e712dc53b516ea618fa647564bfcdd2d39f13fc67f6cc296d6283ac3a7c2625784bf4e163f047a90768c6928bfb5f0c1d37a428fb1ea0453e90c6832565945d3c63034653af120f4b48c00e4d5c3985cb39f94831d7d7f57d9a08dd4f700fafe1720776855781a7622a6b948dc31348b763420d0949bb74a8fcac4d86c50a91b7572bcc4c56fd427ab0060036b109de4cddf171fbeb2ae11d049985c76063aaa16ff6d8006720b47a882d5d641925608a2dc6747474888444d6131139c6c06504122460077545a47b1f45310caedfc6e99ce43bfc22e6f311728d441083ba97a197e49f7d18de3f556ef15d0db2262a2d701c1e1042a6af23910410847aade5e933fc0d217ff11dbb7fa10b0548de59b927513e52601db091f692188cd328b65f65c2ee55e3e95febfc52265b329281a716bb7caa2fd4e0bee24e32ebc8a548bd56316b7eedacb38ff5e64f010363dd2c7ac77030ccc0aa2625b89ef2e91033445a3b9f88b4cf6bfc2d8467ab2fbac7b56583004124ab65c807ad25c2e22b4f3706e86b28698d5c3345dec01b875b1912ff08ce083e7bd4cb6279da4c51f1e1ceacd42629d5ecb3b31634a58034a8cd792637efa6f31906a9d946debdbb5a64d88b172fbf281f69b3d0649256386883c7013087118755723b44a0288b6402d2e6453b320d81d9d14a0156c7 \ No newline at end of file diff --git a/hildr-utilities/src/test/resources/recunprotectedyparity.txt b/hildr-utilities/src/test/resources/recunprotectedyparity.txt new file mode 100644 index 00000000..fd9593b7 --- /dev/null +++ b/hildr-utilities/src/test/resources/recunprotectedyparity.txt @@ -0,0 +1 @@ +0x05b4ee5d72 \ No newline at end of file