Livt packages

Livt.Crypto

Version 1.0.5

Fixed-size cryptographic components for Livt, including AES, ChaCha20, SHA, MACs, and key derivation.

Published files (69)

src/internal/AesSBoxInverse.lvt

namespace Livt.Crypto.Internal

// Inverse AES S-box (FIPS 197 Table 6) as a class with enumerated context-free
// returns — no array constants needed, keeping the class fields-free as
// required by the Livt class model (classes have no fields; public const
// array fields in a class are silently dropped by the VHDL generator).
class AesSBoxInverse
{
    public static inline fn Substitute[](input: byte) byte
    {
        var idx: int = input as int
        if (idx == 0x00) { return 0x52 }
        if (idx == 0x01) { return 0x09 }
        if (idx == 0x02) { return 0x6a }
        if (idx == 0x03) { return 0xd5 }
        if (idx == 0x04) { return 0x30 }
        if (idx == 0x05) { return 0x36 }
        if (idx == 0x06) { return 0xa5 }
        if (idx == 0x07) { return 0x38 }
        if (idx == 0x08) { return 0xbf }
        if (idx == 0x09) { return 0x40 }
        if (idx == 0x0a) { return 0xa3 }
        if (idx == 0x0b) { return 0x9e }
        if (idx == 0x0c) { return 0x81 }
        if (idx == 0x0d) { return 0xf3 }
        if (idx == 0x0e) { return 0xd7 }
        if (idx == 0x0f) { return 0xfb }
        if (idx == 0x10) { return 0x7c }
        if (idx == 0x11) { return 0xe3 }
        if (idx == 0x12) { return 0x39 }
        if (idx == 0x13) { return 0x82 }
        if (idx == 0x14) { return 0x9b }
        if (idx == 0x15) { return 0x2f }
        if (idx == 0x16) { return 0xff }
        if (idx == 0x17) { return 0x87 }
        if (idx == 0x18) { return 0x34 }
        if (idx == 0x19) { return 0x8e }
        if (idx == 0x1a) { return 0x43 }
        if (idx == 0x1b) { return 0x44 }
        if (idx == 0x1c) { return 0xc4 }
        if (idx == 0x1d) { return 0xde }
        if (idx == 0x1e) { return 0xe9 }
        if (idx == 0x1f) { return 0xcb }
        if (idx == 0x20) { return 0x54 }
        if (idx == 0x21) { return 0x7b }
        if (idx == 0x22) { return 0x94 }
        if (idx == 0x23) { return 0x32 }
        if (idx == 0x24) { return 0xa6 }
        if (idx == 0x25) { return 0xc2 }
        if (idx == 0x26) { return 0x23 }
        if (idx == 0x27) { return 0x3d }
        if (idx == 0x28) { return 0xee }
        if (idx == 0x29) { return 0x4c }
        if (idx == 0x2a) { return 0x95 }
        if (idx == 0x2b) { return 0x0b }
        if (idx == 0x2c) { return 0x42 }
        if (idx == 0x2d) { return 0xfa }
        if (idx == 0x2e) { return 0xc3 }
        if (idx == 0x2f) { return 0x4e }
        if (idx == 0x30) { return 0x08 }
        if (idx == 0x31) { return 0x2e }
        if (idx == 0x32) { return 0xa1 }
        if (idx == 0x33) { return 0x66 }
        if (idx == 0x34) { return 0x28 }
        if (idx == 0x35) { return 0xd9 }
        if (idx == 0x36) { return 0x24 }
        if (idx == 0x37) { return 0xb2 }
        if (idx == 0x38) { return 0x76 }
        if (idx == 0x39) { return 0x5b }
        if (idx == 0x3a) { return 0xa2 }
        if (idx == 0x3b) { return 0x49 }
        if (idx == 0x3c) { return 0x6d }
        if (idx == 0x3d) { return 0x8b }
        if (idx == 0x3e) { return 0xd1 }
        if (idx == 0x3f) { return 0x25 }
        if (idx == 0x40) { return 0x72 }
        if (idx == 0x41) { return 0xf8 }
        if (idx == 0x42) { return 0xf6 }
        if (idx == 0x43) { return 0x64 }
        if (idx == 0x44) { return 0x86 }
        if (idx == 0x45) { return 0x68 }
        if (idx == 0x46) { return 0x98 }
        if (idx == 0x47) { return 0x16 }
        if (idx == 0x48) { return 0xd4 }
        if (idx == 0x49) { return 0xa4 }
        if (idx == 0x4a) { return 0x5c }
        if (idx == 0x4b) { return 0xcc }
        if (idx == 0x4c) { return 0x5d }
        if (idx == 0x4d) { return 0x65 }
        if (idx == 0x4e) { return 0xb6 }
        if (idx == 0x4f) { return 0x92 }
        if (idx == 0x50) { return 0x6c }
        if (idx == 0x51) { return 0x70 }
        if (idx == 0x52) { return 0x48 }
        if (idx == 0x53) { return 0x50 }
        if (idx == 0x54) { return 0xfd }
        if (idx == 0x55) { return 0xed }
        if (idx == 0x56) { return 0xb9 }
        if (idx == 0x57) { return 0xda }
        if (idx == 0x58) { return 0x5e }
        if (idx == 0x59) { return 0x15 }
        if (idx == 0x5a) { return 0x46 }
        if (idx == 0x5b) { return 0x57 }
        if (idx == 0x5c) { return 0xa7 }
        if (idx == 0x5d) { return 0x8d }
        if (idx == 0x5e) { return 0x9d }
        if (idx == 0x5f) { return 0x84 }
        if (idx == 0x60) { return 0x90 }
        if (idx == 0x61) { return 0xd8 }
        if (idx == 0x62) { return 0xab }
        if (idx == 0x63) { return 0x00 }
        if (idx == 0x64) { return 0x8c }
        if (idx == 0x65) { return 0xbc }
        if (idx == 0x66) { return 0xd3 }
        if (idx == 0x67) { return 0x0a }
        if (idx == 0x68) { return 0xf7 }
        if (idx == 0x69) { return 0xe4 }
        if (idx == 0x6a) { return 0x58 }
        if (idx == 0x6b) { return 0x05 }
        if (idx == 0x6c) { return 0xb8 }
        if (idx == 0x6d) { return 0xb3 }
        if (idx == 0x6e) { return 0x45 }
        if (idx == 0x6f) { return 0x06 }
        if (idx == 0x70) { return 0xd0 }
        if (idx == 0x71) { return 0x2c }
        if (idx == 0x72) { return 0x1e }
        if (idx == 0x73) { return 0x8f }
        if (idx == 0x74) { return 0xca }
        if (idx == 0x75) { return 0x3f }
        if (idx == 0x76) { return 0x0f }
        if (idx == 0x77) { return 0x02 }
        if (idx == 0x78) { return 0xc1 }
        if (idx == 0x79) { return 0xaf }
        if (idx == 0x7a) { return 0xbd }
        if (idx == 0x7b) { return 0x03 }
        if (idx == 0x7c) { return 0x01 }
        if (idx == 0x7d) { return 0x13 }
        if (idx == 0x7e) { return 0x8a }
        if (idx == 0x7f) { return 0x6b }
        if (idx == 0x80) { return 0x3a }
        if (idx == 0x81) { return 0x91 }
        if (idx == 0x82) { return 0x11 }
        if (idx == 0x83) { return 0x41 }
        if (idx == 0x84) { return 0x4f }
        if (idx == 0x85) { return 0x67 }
        if (idx == 0x86) { return 0xdc }
        if (idx == 0x87) { return 0xea }
        if (idx == 0x88) { return 0x97 }
        if (idx == 0x89) { return 0xf2 }
        if (idx == 0x8a) { return 0xcf }
        if (idx == 0x8b) { return 0xce }
        if (idx == 0x8c) { return 0xf0 }
        if (idx == 0x8d) { return 0xb4 }
        if (idx == 0x8e) { return 0xe6 }
        if (idx == 0x8f) { return 0x73 }
        if (idx == 0x90) { return 0x96 }
        if (idx == 0x91) { return 0xac }
        if (idx == 0x92) { return 0x74 }
        if (idx == 0x93) { return 0x22 }
        if (idx == 0x94) { return 0xe7 }
        if (idx == 0x95) { return 0xad }
        if (idx == 0x96) { return 0x35 }
        if (idx == 0x97) { return 0x85 }
        if (idx == 0x98) { return 0xe2 }
        if (idx == 0x99) { return 0xf9 }
        if (idx == 0x9a) { return 0x37 }
        if (idx == 0x9b) { return 0xe8 }
        if (idx == 0x9c) { return 0x1c }
        if (idx == 0x9d) { return 0x75 }
        if (idx == 0x9e) { return 0xdf }
        if (idx == 0x9f) { return 0x6e }
        if (idx == 0xa0) { return 0x47 }
        if (idx == 0xa1) { return 0xf1 }
        if (idx == 0xa2) { return 0x1a }
        if (idx == 0xa3) { return 0x71 }
        if (idx == 0xa4) { return 0x1d }
        if (idx == 0xa5) { return 0x29 }
        if (idx == 0xa6) { return 0xc5 }
        if (idx == 0xa7) { return 0x89 }
        if (idx == 0xa8) { return 0x6f }
        if (idx == 0xa9) { return 0xb7 }
        if (idx == 0xaa) { return 0x62 }
        if (idx == 0xab) { return 0x0e }
        if (idx == 0xac) { return 0xaa }
        if (idx == 0xad) { return 0x18 }
        if (idx == 0xae) { return 0xbe }
        if (idx == 0xaf) { return 0x1b }
        if (idx == 0xb0) { return 0xfc }
        if (idx == 0xb1) { return 0x56 }
        if (idx == 0xb2) { return 0x3e }
        if (idx == 0xb3) { return 0x4b }
        if (idx == 0xb4) { return 0xc6 }
        if (idx == 0xb5) { return 0xd2 }
        if (idx == 0xb6) { return 0x79 }
        if (idx == 0xb7) { return 0x20 }
        if (idx == 0xb8) { return 0x9a }
        if (idx == 0xb9) { return 0xdb }
        if (idx == 0xba) { return 0xc0 }
        if (idx == 0xbb) { return 0xfe }
        if (idx == 0xbc) { return 0x78 }
        if (idx == 0xbd) { return 0xcd }
        if (idx == 0xbe) { return 0x5a }
        if (idx == 0xbf) { return 0xf4 }
        if (idx == 0xc0) { return 0x1f }
        if (idx == 0xc1) { return 0xdd }
        if (idx == 0xc2) { return 0xa8 }
        if (idx == 0xc3) { return 0x33 }
        if (idx == 0xc4) { return 0x88 }
        if (idx == 0xc5) { return 0x07 }
        if (idx == 0xc6) { return 0xc7 }
        if (idx == 0xc7) { return 0x31 }
        if (idx == 0xc8) { return 0xb1 }
        if (idx == 0xc9) { return 0x12 }
        if (idx == 0xca) { return 0x10 }
        if (idx == 0xcb) { return 0x59 }
        if (idx == 0xcc) { return 0x27 }
        if (idx == 0xcd) { return 0x80 }
        if (idx == 0xce) { return 0xec }
        if (idx == 0xcf) { return 0x5f }
        if (idx == 0xd0) { return 0x60 }
        if (idx == 0xd1) { return 0x51 }
        if (idx == 0xd2) { return 0x7f }
        if (idx == 0xd3) { return 0xa9 }
        if (idx == 0xd4) { return 0x19 }
        if (idx == 0xd5) { return 0xb5 }
        if (idx == 0xd6) { return 0x4a }
        if (idx == 0xd7) { return 0x0d }
        if (idx == 0xd8) { return 0x2d }
        if (idx == 0xd9) { return 0xe5 }
        if (idx == 0xda) { return 0x7a }
        if (idx == 0xdb) { return 0x9f }
        if (idx == 0xdc) { return 0x93 }
        if (idx == 0xdd) { return 0xc9 }
        if (idx == 0xde) { return 0x9c }
        if (idx == 0xdf) { return 0xef }
        if (idx == 0xe0) { return 0xa0 }
        if (idx == 0xe1) { return 0xe0 }
        if (idx == 0xe2) { return 0x3b }
        if (idx == 0xe3) { return 0x4d }
        if (idx == 0xe4) { return 0xae }
        if (idx == 0xe5) { return 0x2a }
        if (idx == 0xe6) { return 0xf5 }
        if (idx == 0xe7) { return 0xb0 }
        if (idx == 0xe8) { return 0xc8 }
        if (idx == 0xe9) { return 0xeb }
        if (idx == 0xea) { return 0xbb }
        if (idx == 0xeb) { return 0x3c }
        if (idx == 0xec) { return 0x83 }
        if (idx == 0xed) { return 0x53 }
        if (idx == 0xee) { return 0x99 }
        if (idx == 0xef) { return 0x61 }
        if (idx == 0xf0) { return 0x17 }
        if (idx == 0xf1) { return 0x2b }
        if (idx == 0xf2) { return 0x04 }
        if (idx == 0xf3) { return 0x7e }
        if (idx == 0xf4) { return 0xba }
        if (idx == 0xf5) { return 0x77 }
        if (idx == 0xf6) { return 0xd6 }
        if (idx == 0xf7) { return 0x26 }
        if (idx == 0xf8) { return 0xe1 }
        if (idx == 0xf9) { return 0x69 }
        if (idx == 0xfa) { return 0x14 }
        if (idx == 0xfb) { return 0x63 }
        if (idx == 0xfc) { return 0x55 }
        if (idx == 0xfd) { return 0x21 }
        if (idx == 0xfe) { return 0x0c }
        return 0x7d
    }
}