"""Hash bytes through the shared, bounded D/OS compute provider."""
import dos


def hash_into(length, payload, digest):
    dos.intent('COMPUTE', 'SHA256', length, payload, digest)


# D/OS byte records use little-endian pairs in fixed Integer buffers.
payload = dos.array('i16', [0x6261, 0x0063])
digest = dos.array('i16', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
hash_into(3, payload, digest)
hex_digits = '0123456789abcdef'
answer = ''
for index in range(32):
    word = digest[index // 2] & 65535
    byte = (word >> (8 * (index % 2))) & 255
    answer += hex_digits[byte // 16] + hex_digits[byte % 16]
print('SHA-256(abc):', answer)
