def restore(data):
"""create new sha512 object with inner state from `data`, str/bytes or iterable"""
new = sha512()
datap = ctypes.cast(ctypes.cast(id(new),
ctypes.POINTER(ctypes.c_voidp))[POFFSET],
ctypes.POINTER(ctypes.c_char))
assert datap
assert datap[:8] == '\x08\xc9\xbc\xf3g\xe6\tj' # first sha512 word
for i, byte in enumerate(data):
assert i < STATESIZE
datap[i] = byte
assert i + 1 == STATESIZE
return new
评论列表
文章目录