diff options
Diffstat (limited to 'src/utils/crypto/CipherGenerator.scala')
-rw-r--r-- | src/utils/crypto/CipherGenerator.scala | 27 |
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) + } +} |