mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-04-29 23:07:27 +02:00
The line-by-line comments were generated using the following Python 3 script:
#!/usr/bin/python3
class Atom:
def __init__(self, val):
self.v = val
def __str__(self):
return self.v
def p1(self):
v = self.v
return Atom(v[1] + v[0] + v[3] + v[2])
def p2(self):
v = self.v
return Atom(v[2] + v[3] + v[0] + v[1])
def __xor__(self, other):
return Sum(self.tuple() + other.tuple())
def tuple(self):
return (self,)
class Sum:
def __init__(self, terms):
self.t = terms
assert(type(terms) == tuple)
for t in terms:
assert(type(t) == Atom)
def __str__(self):
return '+'.join(sorted((str(t) for t in self.t),
key=lambda v: int(v, 16)))
def p1(self):
return Sum(tuple(t.p1() for t in self.t))
def p2(self):
return Sum(tuple(t.p2() for t in self.t))
def tuple(self):
return self.t
def __xor__(self, other):
return Sum(self.t + other.tuple())
class LoggingDict(dict):
def __setitem__(self, key, val):
print(key, '=', val)
dict.__setitem__(self, key, val)
def set(self, key, val):
dict.__setitem__(self, key, val)
env = LoggingDict()
env.set('ra', Atom('0123'))
env.set('rb', Atom('4567'))
env.set('rc', Atom('89ab'))
env.set('rd', Atom('cdef'))
env.set('ARIA_P1', lambda x: x.p1())
env.set('ARIA_P2', lambda x: x.p2())
code = """
ta = rb;
rb = ra;
ra = ARIA_P2( ta );
tb = ARIA_P2( rd );
rd = ARIA_P1( rc );
rc = ARIA_P1( tb );
ta ^= rd;
tc = ARIA_P2( rb );
ta = ARIA_P1( ta ) ^ tc ^ rc;
tb ^= ARIA_P2( rd );
tc ^= ARIA_P1( ra );
rb ^= ta ^ tb;
tb = ARIA_P2( tb ) ^ ta;
ra ^= ARIA_P1( tb );
ta = ARIA_P2( ta );
rd ^= ARIA_P1( ta ) ^ tc;
tc = ARIA_P2( tc );
rc ^= ARIA_P1( tc ) ^ ta;
"""
exec(code, env)