diff options
author | Christian Heimes <christian@python.org> | 2016-09-06 22:03:25 +0200 |
---|---|---|
committer | Christian Heimes <christian@python.org> | 2016-09-06 22:03:25 +0200 |
commit | 121b9487d13b7dcd5a864a6067c4a5c88ba15b5d (patch) | |
tree | b2ac9866afda319cb6582de045c47f1a023d1973 /Modules/_blake2/blake2b2s.py | |
parent | 5d75f441ef0a3cfe7af0d865db2530528e424818 (diff) | |
download | cpython-git-121b9487d13b7dcd5a864a6067c4a5c88ba15b5d.tar.gz |
Issue #26798: Add BLAKE2 (blake2b and blake2s) to hashlib.
Diffstat (limited to 'Modules/_blake2/blake2b2s.py')
-rwxr-xr-x | Modules/_blake2/blake2b2s.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Modules/_blake2/blake2b2s.py b/Modules/_blake2/blake2b2s.py new file mode 100755 index 0000000000..01cf26521b --- /dev/null +++ b/Modules/_blake2/blake2b2s.py @@ -0,0 +1,49 @@ +#!/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() |