1
1
mirror of https://github.com/henrydcase/pqc.git synced 2024-11-22 23:48:58 +00:00

refactor testvector check

This commit is contained in:
Matthias J. Kannwischer 2019-01-18 14:45:14 +01:00
parent f7fb850ecf
commit 8c68841417

16
test/check_testvectors.py Executable file → Normal file
View File

@ -18,9 +18,9 @@ SCHEMEFULL = SCHEME.replace('/', '_') # e.g. crypto_kem_kyber768
SCHEMESHORT = SCHEME.split('/')[1].upper() SCHEMESHORT = SCHEME.split('/')[1].upper()
def get_hash(scheme): def get_hash(scheme):
with open(f"{scheme}/META.yml", 'r') as stream: with open(f"{scheme}/META.yml", 'r') as stream:
meta = yaml.load(stream) meta = yaml.load(stream)
return hex(meta['testvectors-sha3-256']).replace('0x', '') return hex(meta['testvectors-sha3-256']).replace('0x', '')
expectedTestvectorsHash = get_hash(SCHEME) expectedTestvectorsHash = get_hash(SCHEME)
@ -29,10 +29,10 @@ subprocess.run(["make", "testvectors", f"SCHEME={SCHEME}"])
implementations = [x for x in os.listdir('bin') if 'testvectors' in x and SCHEMEFULL in x] implementations = [x for x in os.listdir('bin') if 'testvectors' in x and SCHEMEFULL in x]
for impl in implementations: for impl in implementations:
testvectors = subprocess.run([f"bin/{impl}"],stdout=subprocess.PIPE) testvectors = subprocess.run([f"bin/{impl}"],stdout=subprocess.PIPE)
testvectorsHash = hashlib.sha3_256(testvectors.stdout).hexdigest() testvectorsHash = hashlib.sha3_256(testvectors.stdout).hexdigest()
if testvectorsHash.lower() != expectedTestvectorsHash.lower(): if testvectorsHash.lower() != expectedTestvectorsHash.lower():
print(f"testvectors of {SCHEME} should be {expectedTestvectorsHash}, but is {testvectorsHash}") print(f"testvectors of {SCHEME} should be {expectedTestvectorsHash}, but is {testvectorsHash}")
sys.exit(1) sys.exit(1)