summaryrefslogtreecommitdiff
path: root/src/pycryptopp/cipher/xsalsa20.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pycryptopp/cipher/xsalsa20.py')
-rw-r--r--src/pycryptopp/cipher/xsalsa20.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/pycryptopp/cipher/xsalsa20.py b/src/pycryptopp/cipher/xsalsa20.py
new file mode 100644
index 0000000..86ddcd3
--- /dev/null
+++ b/src/pycryptopp/cipher/xsalsa20.py
@@ -0,0 +1,31 @@
+from pycryptopp import _import_my_names
+
+_import_my_names(globals(), "xsalsa20_")
+
+del _import_my_names
+
+def selftest():
+ # pyflakes doesn't know that XSalsa20 is made available above
+ XSalsa20 = globals()["XSalsa20"]
+ from binascii import unhexlify
+ key = unhexlify("ad5eadf7163b0d36e44c126037a03419"
+ "fcda2b3a1bb4ab064b6070e61b0fa5ca")
+ iv = unhexlify("6a059adb8c7d4acb1c537767d541506f" "c5ef0ace9a2a65bd")
+ encrypted = unhexlify("23a8ed0475150e988c545b11e3660de7"
+ "8bf88e6628c4c99ba36330c05cb919e7"
+ "901295db479c9a8a0401d5e040b8919b"
+ "7d64b2f728c59703c3")
+ p = XSalsa20(key, iv)
+ decrypted = p.process(encrypted)
+ expected = "crypto libraries should always test themselves at powerup"
+ assert decrypted == expected
+
+ p = XSalsa20(key, iv)
+ decrypted = ""
+ offset = 0
+ for chunksize in [13,11,1,2,3,20,999]:
+ decrypted += p.process(encrypted[offset:offset+chunksize])
+ offset += chunksize
+ assert decrypted == expected
+
+selftest()