hash_alg_id = { "sm3": 0x00000001, "sha1": 0x00000002, "sha256": 0x00000004, "sha512": 0x00000008, } class Digest: def __init__(self, session, alg_name="sm3"): if hash_alg_id[alg_name] is None: raise Exception("unsupported hash alg {}".format(alg_name)) self._alg_name = alg_name self._session = session self.__init_hash() def __init_hash(self): self._session.hash_init(hash_alg_id[self._alg_name]) def update(self, data): self._session.hash_update(data) def final(self): return self._session.hash_final() def reset(self): self.__init_hash() def destroy(self): self._session.close()