mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
	
	
		
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/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()
							 |