summaryrefslogtreecommitdiff
path: root/src/utils/crypto/CipherGenerator.scala
diff options
context:
space:
mode:
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)
+ }
+}