You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
4 months ago
|
#!/usr/bin/python3
|
||
|
|
||
|
import os
|
||
|
import re
|
||
|
|
||
|
HERE = os.path.dirname(os.path.abspath(__file__))
|
||
|
BLAKE2 = os.path.join(HERE, 'impl')
|
||
|
|
||
|
PUBLIC_SEARCH = re.compile(r'\ int (blake2[bs]p?[a-z_]*)\(')
|
||
|
|
||
|
|
||
|
def getfiles():
|
||
|
for name in os.listdir(BLAKE2):
|
||
|
name = os.path.join(BLAKE2, name)
|
||
|
if os.path.isfile(name):
|
||
|
yield name
|
||
|
|
||
|
|
||
|
def find_public():
|
||
|
public_funcs = set()
|
||
|
for name in getfiles():
|
||
|
with open(name) as f:
|
||
|
for line in f:
|
||
|
# find public functions
|
||
|
mo = PUBLIC_SEARCH.search(line)
|
||
|
if mo:
|
||
|
public_funcs.add(mo.group(1))
|
||
|
|
||
|
for f in sorted(public_funcs):
|
||
|
print('#define {0:<18} PyBlake2_{0}'.format(f))
|
||
|
|
||
|
return public_funcs
|
||
|
|
||
|
|
||
|
def main():
|
||
|
lines = []
|
||
|
with open(os.path.join(HERE, 'blake2b_impl.c')) as f:
|
||
|
for line in f:
|
||
|
line = line.replace('blake2b', 'blake2s')
|
||
|
line = line.replace('BLAKE2b', 'BLAKE2s')
|
||
|
line = line.replace('BLAKE2B', 'BLAKE2S')
|
||
|
lines.append(line)
|
||
|
with open(os.path.join(HERE, 'blake2s_impl.c'), 'w') as f:
|
||
|
f.write(''.join(lines))
|
||
|
# find_public()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|