import os, sys, string, requests
def convert_to_c_array(key_data):
key_data_c = ''
start_index = 0
while(start_index < 32):
key_data_c = key_data_c + '0x' + key_data[start_index:start_index+2]
if(start_index < 0x1E):
key_data_c = key_data_c + ', '
start_index += 2
return key_data_c
def wiki_to_cpp(file_name):
file_lines = [line.rstrip('\n') for line in open(file_name)]
start_index = 0;
line_no = 1;
f = open(file_name + '.cpp', 'wt')
for line in file_lines:
comment_string = ' '
line = line.lstrip(' ')
space_index = line.index(' ')
key_name = line[0:space_index]
line = line[space_index:].lstrip(' ')
if(len(key_name) != 16):
print 'Unexpected key name length at line %u' % line_no
return
space_index = line.index(' ')
key_data = line[0:space_index]
line = line[space_index:].lstrip(' ')
if(len(key_data) != 32):
print 'Unexpected key data length at line %u' % line_no
return
space_index = line.index(' ')
salsa20_string = line[0:space_index]
line = line[space_index:].lstrip(' ')
if(salsa20_string != "salsa20"):
print 'Missing "salsa20" string at line %u' % line_no
return
if(key_data[0] == '?' or key_data[1] == '?'):
comment_string = '//'
target_line = '%s { 0x%sULL, { %s } }, // %s' % (comment_string, key_name, convert_to_c_array(key_data), line)
f.write(target_line + '\n')
print target_line
line_no += 1
f.close();
def main(argc, argv):
if(argc < 1):
print "Missing source file name. Usage: wiki2cpp.py SourceFile"
return
wiki_to_cpp(argv[1])
if __name__ == "__main__" :
main(len(sys.argv), sys.argv)