| 76 | } |
| 77 | |
| 78 | void blocks_obfuscation() { |
| 79 | static constexpr auto rcon0 = ObfuscatedBytes{"01 02 04 08 10 20 40 80 1b 36"}; |
| 80 | describe(rcon0); |
| 81 | std::cout << hexdump32(rcon0.decode()) << '\n'; |
| 82 | |
| 83 | static constexpr auto rcon = "01 02 04 08 10 20 40 80 1b 36"_obf_bytes; |
| 84 | describe(rcon); |
| 85 | std::cout << hexdump32(rcon.decode()) << '\n'; |
| 86 | |
| 87 | for(std::size_t i = 0; i < rcon.size(); ++i) |
| 88 | std::cout << std::hex << std::setw(2) << (int)rcon[i] << ' '; |
| 89 | std::cout << std::dec << '\n'; |
| 90 | |
| 91 | // Note that it is a static constexpr |
| 92 | static constexpr ObfuscatedBytes<16 * 3> sbox[16] = { |
| 93 | "63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76"_obf_bytes, |
| 94 | "CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0"_obf_bytes, |
| 95 | "B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15"_obf_bytes, |
| 96 | "04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75"_obf_bytes, |
| 97 | "09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84"_obf_bytes, |
| 98 | "53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF"_obf_bytes, |
| 99 | "D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8"_obf_bytes, |
| 100 | "51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2"_obf_bytes, |
| 101 | "CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73"_obf_bytes, |
| 102 | "60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB"_obf_bytes, |
| 103 | "E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79"_obf_bytes, |
| 104 | "E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08"_obf_bytes, |
| 105 | "BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A"_obf_bytes, |
| 106 | "70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E"_obf_bytes, |
| 107 | "E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF"_obf_bytes, |
| 108 | "8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16"_obf_bytes}; |
| 109 | |
| 110 | for(const auto &i : sbox) |
| 111 | std::cout << hexdump16(i.raw(), 16); |
| 112 | |
| 113 | for(const auto &i : sbox) { |
| 114 | // This is not permitted since data() modifies the object (non-const) |
| 115 | // std::cout << hexdump32(i.data(), 16); |
| 116 | // So use decode() instead: |
| 117 | std::cout << hexdump16(i.decode()); |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | void certificate_obfuscation() { |
| 122 | auto s1 = R"(-----BEGIN CERTIFICATE----- |