# pad 256 inputs with zeroes on the RIGHT from the input, then XOR with the # padding byte and sha256 the result # return sha256 state 8 1552 2 256 256 # inputs: # 256: msg to hash # 256: sha256 state from which to resume hashing 1 512 # outputs: # 256: inner hash state # 256: outer hash state 1 8 0 [512|>8] getIpadByte.casm 1 8 0 [520|>8] getOpadByte.casm 8 128 [512|>8] [528|>128] repeatByte16Times.casm 8 128 [520|>8] [656|>128] repeatByte16Times.casm # we repeat the padding byte 32 times 512 256 [528|>128] [528|>128] [0|>256] [784|>256] xor256bits.casm # the padding (xored with ipad byte) is on the RIGHT from the input. i.e. padding is LSB # we repeat the padding byte 32 times 768 256 [528|>128] [528|>128] [784|>256] [256|>256] [1040|>256] sha256.txt # same for opad 512 256 [656|>128] [656|>128] [0|>256] [784|>256] xor256bits.casm 768 256 [656|>128] [656|>128] [784|>256] [256|>256] [1296|>256] sha256.txt