summaryrefslogtreecommitdiff
path: root/src/utils/crypto/CipherGenerator.scala
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2014-11-28 03:15:21 -0800
committeriximeow <me@iximeow.net>2014-11-28 03:15:21 -0800
commit409e8109d8076058e4f154272270a79b6844da18 (patch)
treeb98297162d542506bd4eb911532b349608dfc2d7 /src/utils/crypto/CipherGenerator.scala
parent0af5a2e4ade0b032e1ec6d25c51de2ff95dd2799 (diff)
Refactor CBC utils
Diffstat (limited to 'src/utils/crypto/CipherGenerator.scala')
-rw-r--r--src/utils/crypto/CipherGenerator.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/utils/crypto/CipherGenerator.scala b/src/utils/crypto/CipherGenerator.scala
new file mode 100644
index 0000000..e7651cb
--- /dev/null
+++ b/src/utils/crypto/CipherGenerator.scala
@@ -0,0 +1,27 @@
+package ixee.cryptopals.utils.crypto
+
+import javax.crypto.Cipher
+
+sealed trait CipherGenerator {
+ def encrypt: IxeeCipher // feels kinda gross to type this
+ def decrypt: IxeeCipher // writing crypto feels wrong
+}
+
+case class EcbBuilder(primitives: SchemeBuilder) extends CipherGenerator {
+ // lol
+ def encrypt = ???
+ def decrypt = ???
+}
+
+case class CbcBuilder(primitives: SchemeBuilder, iv: Seq[Byte]) extends CipherGenerator {
+ def encrypt =
+ setup(Cipher.ENCRYPT_MODE)
+ def decrypt =
+ setup(Cipher.DECRYPT_MODE)
+
+ private[this] def setup(cipherMode: Int) = {
+ val cipher = primitives.cipher
+ cipher.init(cipherMode, primitives.key)
+ new CBCCipher(cipher, iv, cipherMode)
+ }
+}