diff options
author | lloyd <[email protected]> | 2009-10-10 20:20:24 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2009-10-10 20:20:24 +0000 |
commit | 5318b944acc2a5fa6d445784c710f37c793ff90b (patch) | |
tree | 94ef9e74fa741f5d841d890dbeb94c5ca5d6678f /doc/python/cipher.py | |
parent | 9e6720cceee1429658175c92cc8edf101ab4a4b3 (diff) |
Add a couple more Python examples and the very beginning of a manual/reference
for the Python wrappers.
Diffstat (limited to 'doc/python/cipher.py')
-rwxr-xr-x | doc/python/cipher.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/doc/python/cipher.py b/doc/python/cipher.py new file mode 100755 index 000000000..1be2759ae --- /dev/null +++ b/doc/python/cipher.py @@ -0,0 +1,44 @@ +#!/usr/bin/python + +import botan +import sys + +def encrypt(input, passphrase): + rng = botan.RandomNumberGenerator() + + # Use as both EAX IV and PBKDF2 salt + salt = rng.gen_random(10) + + iterations = 10000 + output_size = 16 + + key = botan.pbkdf2(passphrase, salt, iterations, output_size, "SHA-1") + + encryptor = botan.Cipher("AES-128/EAX", "encrypt", key) + + ciphertext = encryptor.cipher(input, salt) + return (ciphertext, salt) + +def decrypt(input, salt, passphrase): + iterations = 10000 + output_size = 16 + + key = botan.pbkdf2(passphrase, salt, iterations, output_size, "SHA-1") + + decryptor = botan.Cipher("AES-128/EAX", "decrypt", key) + + return decryptor.cipher(input, salt) + +def main(args = None): + if args is None: + args = sys.argv + + passphrase = args[1] + input = ''.join(open(args[2]).readlines()) + + (ciphertext, salt) = encrypt(input, passphrase) + + print decrypt(ciphertext, salt, passphrase) + +if __name__ == '__main__': + sys.exit(main()) |