INNER CODE UNIT · Python
get_sig_nistlevel
open-quantum-safe/oqs-provider · oqs-template/generatehelpers.py:56
def get_sig_nistlevel(family, alg, docsdir):
# translate family names in generate.yml to directory names for liboqs algorithm datasheets
if family['family'] == 'CRYSTALS-Dilithium': datasheetname = 'dilithium'
else: datasheetname = family['family'].lower().replace('-', '_')
# load datasheet
algymlfilename = os.path.join(docsdir, 'algorithms', 'sig', '{:s}.yml'.format(datasheetname))
algyml = yaml.safe_load(file_get_contents(algymlfilename, encoding='utf-8'))
# hacks to match names
def matches(name, alg):
def simplify(s):
return s.lower().replace('_', '').replace('-', '').replace('+', '')
if 'SLH_DSA_PURE' in name: name = name.replace('_PURE', '')
if simplify(name) == simplify(alg['name']): return True
return False
# find the variant that matches
for variant in algyml['parameter-sets']:
if matches(variant['name'], alg) or ('alias' in variant and matches(variant['alias'], alg)):
return variant['claimed-nist-level']