17db96d56Sopenharmony_ci#!/usr/bin/python3 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ciimport os 47db96d56Sopenharmony_ciimport re 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_ciHERE = os.path.dirname(os.path.abspath(__file__)) 77db96d56Sopenharmony_ciBLAKE2 = os.path.join(HERE, 'impl') 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciPUBLIC_SEARCH = re.compile(r'\ int (blake2[bs]p?[a-z_]*)\(') 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_cidef getfiles(): 137db96d56Sopenharmony_ci for name in os.listdir(BLAKE2): 147db96d56Sopenharmony_ci name = os.path.join(BLAKE2, name) 157db96d56Sopenharmony_ci if os.path.isfile(name): 167db96d56Sopenharmony_ci yield name 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_cidef find_public(): 207db96d56Sopenharmony_ci public_funcs = set() 217db96d56Sopenharmony_ci for name in getfiles(): 227db96d56Sopenharmony_ci with open(name) as f: 237db96d56Sopenharmony_ci for line in f: 247db96d56Sopenharmony_ci # find public functions 257db96d56Sopenharmony_ci mo = PUBLIC_SEARCH.search(line) 267db96d56Sopenharmony_ci if mo: 277db96d56Sopenharmony_ci public_funcs.add(mo.group(1)) 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci for f in sorted(public_funcs): 307db96d56Sopenharmony_ci print('#define {0:<18} PyBlake2_{0}'.format(f)) 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_ci return public_funcs 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_cidef main(): 367db96d56Sopenharmony_ci lines = [] 377db96d56Sopenharmony_ci with open(os.path.join(HERE, 'blake2b_impl.c')) as f: 387db96d56Sopenharmony_ci for line in f: 397db96d56Sopenharmony_ci line = line.replace('blake2b', 'blake2s') 407db96d56Sopenharmony_ci line = line.replace('BLAKE2b', 'BLAKE2s') 417db96d56Sopenharmony_ci line = line.replace('BLAKE2B', 'BLAKE2S') 427db96d56Sopenharmony_ci lines.append(line) 437db96d56Sopenharmony_ci with open(os.path.join(HERE, 'blake2s_impl.c'), 'w') as f: 447db96d56Sopenharmony_ci f.write(''.join(lines)) 457db96d56Sopenharmony_ci # find_public() 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ciif __name__ == '__main__': 497db96d56Sopenharmony_ci main() 50