class

Crypto::ChaCha20::Native

Inherits Crypto::ChaCha20::Cipher < Reference < Object

The ChaCha20 cipher is a high-speed cipher. It is considerably faster than AES in software-only implementations, making it around three times as fast on platforms that lack specialized AES hardware. ChaCha20 is also not sensitive to timing attacks.

This is the pure Crystal scalar implementation.

Constants

BLOCK_SIZE = Crypto::ChaCha20::BLOCK_SIZE

Constructors

new(key : Bytes, nonce : Bytes, counter : UInt32 = 0_u32)

The inputs to ChaCha20 are:

  • key: A 256-bit key, treated as a concatenation of eight 32-bit little- endian integers.
  • nonce: A 96-bit nonce, treated as a concatenation of three 32-bit little- endian integers.
  • counter: A 32-bit block count parameter, treated as a 32-bit little-endian integer.
Source
new(key : String, nonce : String, counter : UInt32 = 0_u32)

The inputs to ChaCha20 are:

  • key: A 256-bit key, treated as a concatenation of eight 32-bit little- endian integers. (hex encoded)
  • nonce: A 96-bit nonce, treated as a concatenation of three 32-bit little- endian integers. (hex encoded)
  • counter: A 32-bit block count parameter, treated as a 32-bit little-endian integer.
Source
new(state : StaticArray(UInt32, 16))

Directly initialize using the state

Source

Instance methods

clone

create a clone from the state

Source
encrypt(plaintext : Bytes, encrypted : Bytes) : Nil

reads from plaintext and writes to encrypted

Source
encrypt(plaintext : IO, encrypted : IO)

reads from plaintext and writes to encrypted

Source
encrypt(plaintext : Bytes) : Bytes

encrypt the plaintext returns the encrypted bytes

Source
reset

reset the counter

Source