chiark / gitweb /
algorithms.py: Cope better with algs with funny characters in their names.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 11 May 2017 09:42:15 +0000 (10:42 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 14 May 2017 03:29:20 +0000 (04:29 +0100)
Defend against `/' in names when making include-file names, and defend
against `/' and `-' when forming identifier names.

algorithms.py

index a7a2caab8ce952e81180efee68a9ec3845d65038..4a47dc7d9a6e81f0b8b64bb41968912f1f4f52d7 100644 (file)
@@ -52,16 +52,16 @@ print '/* algorithms.h [generated] */'
 print
 
 for i in prps:
-  print '#include <catacomb/%s.h>' % i
+  print '#include <catacomb/%s.h>' % i.replace('/', '-')
   for j in pmodes:
-    print '#include <catacomb/%s-%s.h>' % (i, j)
+    print '#include <catacomb/%s-%s.h>' % (i.replace('/', '-'), j)
 for i in streamciphers:
-  print '#include <catacomb/%s.h>' % i
+  print '#include <catacomb/%s.h>' % i.replace('/', '-')
 print
 for i in hashes:
-  print '#include <catacomb/%s.h>' % i
+  print '#include <catacomb/%s.h>' % i.replace('/', '-')
   for j in hmodes:
-    print '#include <catacomb/%s-%s.h>' % (i, j)
+    print '#include <catacomb/%s-%s.h>' % (i.replace('/', '-'), j)
 print
 
 print '#define PRPS(_) \\'
@@ -72,13 +72,15 @@ print
 
 print '#define RNGS(_) \\'
 for i in (cross(prps, ['ofb', 'counter'])):
-  print ('\t_("%(prim)s-%(mode)s", %(prim)s_keysz, ' +
-         '%(prim)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
-         {'prim': i[0], 'mode': i[1]}
+  print ('\t_("%(prim)s-%(mode)s", %(primid)s_keysz, ' +
+         '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
+         {'prim': i[0], 'mode': i[1],
+          'primid': i[0].replace('-', '_').replace('/', '_')}
 for i in (cross(hashes, 'mgf')):
-  print ('\t_("%(prim)s-%(mode)s", %(prim)s_%(mode)skeysz, ' +
-         '%(prim)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
-         {'prim': i[0], 'mode': i[1]}
+  print ('\t_("%(prim)s-%(mode)s", %(primid)s_%(mode)skeysz, ' +
+         '%(primid)s_%(mode)srand, RNG_PLAIN, 0) \\') % \
+         {'prim': i[0], 'mode': i[1],
+          'primid': i[0].replace('-', '_').replace('/', '_')}
 print '\t_("rc4", rc4_keysz, rc4_rand, 0, 0) \\'
 print '\t_("seal", seal_keysz, seal_rand, RNG_SEAL, 0) \\'
 for i in latindances: