AESCTR

tsec.cipher.symmetric.jca.AESCTR
sealed abstract class AESCTR[A] extends JCACipherAPI[A, CTR, NoPadding], AES[A]

Attributes

Source
AESCTR.scala
Graph
Supertypes
trait AES[A]
trait AEADCipher[A]
trait AECipher[A]
trait BlockCipher[A]
trait Cipher[A]
trait CipherAPI[A, SecretKey]
class Object
trait Matchable
class Any
Show all
Known subtypes
object AES128CTR.type
object AES192CTR.type
object AES256CTR.type

Members list

Value members

Concrete methods

def defaultIvStrategy[F[_] : Sync](implicit evidence$2: Sync[F], c: BlockCipher[A]): IvGen[F, A]

Our default Iv strategy for CTR mode produces randomized IVs

Our default Iv strategy for CTR mode produces randomized IVs

Attributes

Source
AESCTR.scala
def incrementalIvStrategy[F[_]](implicit F: Sync[F]): CounterIvGen[F, A]

An incremental iv generator, intended for use with a single key.

An incremental iv generator, intended for use with a single key.

See: https://crypto.stanford.edu/~dabo/cs255/lectures/PRP-PRF.pdf, courtesy of dan boneh

For a 128 bit iv, we use a 64 bit leftmost bits as a nonce, and the rightmost 64 bits (zeroed out) as the counter.

This means, using the incremental strategy, you can safely generate generate 264 - 106 different nonces maximum, each of which can safely increment a maximum of 2^^64 blocks.

264 - 106 is a safe limit to possibly avoid overflowing the safe number of nonces you can generate with one key.

Attributes

Source
AESCTR.scala

Inherited methods

def buildKey[F[_]](rawKey: Array[Byte])(implicit S: SymmetricKeyGen[F, A, SecretKey]): F[K[Alg]]

Attributes

Inherited from:
SymmetricKeyGenAPI (hidden)
Source
SymmetricKeyGenAPI.scala
final def decrypt[F[_]](cipherText: CipherText[A], key: Type[A])(implicit E: Encryptor[F, A, SecretKey]): F[PlainText]

Attributes

Inherited from:
CipherAPI
Source
CipherAPI.scala
final def encrypt[F[_]](plainText: PlainText, key: Type[A], iv: Type[A])(implicit E: Encryptor[F, A, SecretKey]): F[CipherText[A]]

Attributes

Inherited from:
CipherAPI
Source
CipherAPI.scala
final def encrypt[F[_] : Monad](plainText: PlainText, key: Type[A], ivs: IvGen[F, A])(E: Encryptor[F, A, SecretKey]): F[CipherText[A]]

Attributes

Inherited from:
CipherAPI
Source
CipherAPI.scala
final def encrypt[F[_] : Monad](plainText: PlainText, key: Type[A])(implicit evidence$1: Monad[F], E: Encryptor[F, A, SecretKey], ivStrategy: IvGen[F, A]): F[CipherText[A]]

Attributes

Inherited from:
CipherAPI
Source
CipherAPI.scala
def generateKey[F[_]](implicit S: SymmetricKeyGen[F, A, SecretKey]): F[K[Alg]]

Attributes

Inherited from:
SymmetricKeyGenAPI (hidden)
Source
SymmetricKeyGenAPI.scala

Attributes

Inherited from:
Cipher
Source
package.scala
def unsafeBuildKey(rawKey: Array[Byte])(implicit S: IdKeyGen[A, SecretKey]): K[Alg]

Attributes

Inherited from:
SymmetricKeyGenAPI (hidden)
Source
SymmetricKeyGenAPI.scala
def unsafeGenerateKey(implicit S: IdKeyGen[A, SecretKey]): K[Alg]

Attributes

Inherited from:
SymmetricKeyGenAPI (hidden)
Source
SymmetricKeyGenAPI.scala

Inherited fields

Attributes

Inherited from:
AES
Source
package.scala

Attributes

Inherited from:
AES
Source
package.scala

Attributes

Inherited from:
AES
Source
package.scala

Implicits

Implicits

implicit val ae: AESCTR[A]

Attributes

Source
AESCTR.scala
implicit def genEncryptor[F[_] : Sync](implicit evidence$1: Sync[F], c: BlockCipher[A]): JCAPrimitiveCipher[F, A, CTR, NoPadding]

Attributes

Source
AESCTR.scala

Inherited implicits

implicit def idKeyGen(implicit B: BlockCipher[A]): IdKeyGen[A, SecretKey]

Attributes

Inherited from:
JCAKeyGen (hidden)
Source
BlockCipherEV.scala
implicit def newKeyGen[F[_]](implicit F: Sync[F], B: BlockCipher[A]): SymmetricKeyGen[F, A, SecretKey]

Attributes

Inherited from:
JCAKeyGen (hidden)
Source
BlockCipherEV.scala