summaryrefslogtreecommitdiffstats
path: root/combox/crypto.py
diff options
context:
space:
mode:
authorSiddharth Ravikumar <sravik@bgsu.edu>2015-01-12 16:53:36 -0500
committerSiddharth Ravikumar <sravik@bgsu.edu>2015-01-12 16:53:36 -0500
commit154a3d5fcbf5962859fd0d345645060b27223690 (patch)
treeaeb6a8bf3079dfed3b7b8fa7029e906ae75b0f17 /combox/crypto.py
parent286421c30599dee1f1aaee500f3bfed0bada6c5f (diff)
consolidated everything into combox/combox.py.
tests were removed. will write tests using `nose` later. renamed: combox/file.py -> combox/combox.py deleted: combox/config.py deleted: combox/crypto.py renamed: tests/test_config.py -> tests/combox_tests.py deleted: tests/files/the-red-star.jpg deleted: tests/test_crypto.py deleted: tests/test_file.py
Diffstat (limited to 'combox/crypto.py')
-rw-r--r--combox/crypto.py84
1 files changed, 0 insertions, 84 deletions
diff --git a/combox/crypto.py b/combox/crypto.py
deleted file mode 100644
index 3f17cc0..0000000
--- a/combox/crypto.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2014 Combox author(s). See AUTHORS.
-#
-# This file is part of Combox.
-#
-# Combox is free software: you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Combox is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Combox (see COPYING). If not, see
-# <http://www.gnu.org/licenses/>.
-
-## Adapted from https://gist.github.com/sekondus/4322469
-
-import base64
-import os
-
-from Crypto.Cipher import AES
-
-BLOCK_SIZE = 32
-PAD_CHAR = '#'
-
-
-def pad(data):
- """Pad data such that its length is a multiple of BLOCK_SIZE.
- """
-
- padding = (BLOCK_SIZE - (len(data) % BLOCK_SIZE)) * PAD_CHAR
- data += padding
-
- return data
-
-
-def encrypt(data, secret):
- """Encrypt byestream and return cipher.
- """
- aes = AES.new(pad(secret))
- cipher = base64.b64encode(aes.encrypt(pad(data)))
-
- return cipher
-
-
-def decrypt(cipher, secret):
- """Decrypt cipher and return data.
- """
- aes = AES.new(pad(secret))
- data = aes.decrypt(base64.b64decode(cipher)).rstrip(PAD_CHAR)
-
- return data
-
-def encrypt_shards(shards, secret):
- """Encrypt the shards of data and return a list of ciphers.
-
- shards: list of shards (string, bytes).
- secret: top secret passphrase
- """
-
- ciphers = []
- for shard in shards:
- cipher = encrypt(shard, secret)
- ciphers.append(cipher)
-
- return ciphers
-
-
-def decrypt_shards(ciphers, secret):
- """Decrypt the ciphered shards and return a list of shards.
-
- shards: list of ciphered shards.
- secret: top secret passphrase
- """
-
- shards = []
- for cipher in ciphers:
- shard = decrypt(cipher, secret)
- shards.append(shard)
-
- return shards