def test_generate_trytes_and_multisqueeze(self): file = 'test_vectors/generateTrytesAndMultiSqueeze' with open(file, 'r') as f: reader = csv.DictReader(f) for count, line in enumerate(reader): trytes = line['trytes'] hashes1 = line['Kerl_squeeze1'] hashes2 = line['Kerl_squeeze2'] hashes3 = line['Kerl_squeeze3'] trits = conv.trytes_to_trits(trytes) kerl = py3kerl.Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( hashes1, trytes_out, 'line:' + str(count + 2) + ' ' + hashes1 + '!=' + trytes_out) trits_out = [] kerl.squeeze(trits_out) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( hashes2, trytes_out, 'line:' + str(count + 2) + ' ' + hashes2 + '!=' + trytes_out) trits_out = [] kerl.squeeze(trits_out) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( hashes3, trytes_out, 'line:' + str(count + 2) + ' ' + hashes3 + '!=' + trytes_out)
def test_input_greater_243(self): inp = 'G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA' trits = conv.trytes_to_trits(inp) kerl = py3kerl.Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out, length=486) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( trytes_out, "LUCKQVACOGBFYSPPVSSOXJEKNSQQRQKPZC9NXFSMQNRQCGGUL9OHVVKBDSKEQEBKXRNUJSRXYVHJTXBPDWQGNSCDCBAIRHAQCOWZEBSNHIJIGPZQITIBJQ9LNTDIBTCQ9EUWKHFLGFUVGGUWJONK9GBCDUIMAYMMQX" )
def test_output_greater_243(self): inp = '9MIDYNHBWMBCXVDEFOFWINXTERALUKYYPPHKP9JJFGJEIUY9MUDVNFZHMMWZUYUSWAIOWEVTHNWMHANBH' trits = conv.trytes_to_trits(inp) kerl = py3kerl.Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out, length=486) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( trytes_out, "G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA" )
def test_correct_first(self): inp = 'EMIDYNHBWMBCXVDEFOFWINXTERALUKYYPPHKP9JJFGJEIUY9MUDVNFZHMMWZUYUSWAIOWEVTHNWMHANBH' trits = conv.trytes_to_trits(inp) kerl = py3kerl.Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( trytes_out, "EJEAOOZYSAWFPZQESYDHZCGYNSTWXUMVJOVDWUNZJXDGWCLUFGIMZRMGCAZGKNPLBRLGUNYWKLJTYEAQX" )
def test_generate_trytes_hash(self): file = 'test_vectors/generateTrytesAndHashes' with open(file, 'r') as f: reader = csv.DictReader(f) for count, line in enumerate(reader): trytes = line['trytes'] hashes = line['Kerl_hash'] trits = conv.trytes_to_trits(trytes) kerl = py3kerl.Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out) trytes_out = conv.trits_to_trytes(trits_out) self.assertEqual( hashes, trytes_out, 'line:' + str(count + 2) + ' ' + hashes + '!=' + trytes_out)
trits_from_hash[TRIT_HASH_LENGTH - 1] = 0 stop = TRIT_HASH_LENGTH if length < TRIT_HASH_LENGTH: stop = length trits[offset:stop] = trits_from_hash[0:stop] flipped_bytes = bytes( [conv.convert_sign(~b) for b in unsigned_hash]) # Reset internal state before feeding back in self.__init__() self.k.update(flipped_bytes) offset += TRIT_HASH_LENGTH if __name__ == '__main__': inp = 'G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA' trits = conv.trytes_to_trits(inp) kerl = Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out, length=486) print('Out: ' + conv.trits_to_trytes(trits_out))
trits_from_hash = conv.convertToTrits(signed_hash) trits_from_hash[TRIT_HASH_LENGTH - 1] = 0 stop = TRIT_HASH_LENGTH if length < TRIT_HASH_LENGTH: stop = length trits[offset:stop] = trits_from_hash[0:stop] flipped_bytes = bytes([conv.convert_sign(~b) for b in unsigned_hash]) # Reset internal state before feeding back in self.__init__() self.k.update(flipped_bytes) offset += TRIT_HASH_LENGTH if __name__ == '__main__': inp = 'G9JYBOMPUXHYHKSNRNMMSSZCSHOFYOYNZRSZMAAYWDYEIMVVOGKPJBVBM9TDPULSFUNMTVXRKFIDOHUXXVYDLFSZYZTWQYTE9SPYYWYTXJYQ9IFGYOLZXWZBKWZN9QOOTBQMWMUBLEWUEEASRHRTNIQWJQNDWRYLCA' trits = conv.trytes_to_trits(inp) kerl = Kerl() kerl.absorb(trits) trits_out = [] kerl.squeeze(trits_out, length=486) print('Out: ' + conv.trits_to_trytes(trits_out))