package aes

import "crypto/internal/fips140/aes"

Index

Constants

const BlockSize = 16

BlockSize is the AES block size in bytes.

Functions

func EncryptBlockInternal

func EncryptBlockInternal(c *Block, dst, src []byte)

EncryptBlockInternal applies the AES encryption function to one block.

It is an internal function meant only for the gcm package.

func RoundToBlock

func RoundToBlock(c *CTR)

RoundToBlock is used by CTR_DRBG, which discards the rightmost unused bits at each request. It rounds the offset up to the next block boundary.

Types

type Block

type Block struct {
	// contains filtered or unexported fields
}

A Block is an instance of AES using a particular key. It is safe for concurrent use.

func New

func New(key []byte) (*Block, error)

New creates and returns a new [cipher.Block] implementation. The key argument should be the AES key, either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256.

func (*Block) BlockSize

func (c *Block) BlockSize() int

func (*Block) Decrypt

func (c *Block) Decrypt(dst, src []byte)

func (*Block) Encrypt

func (c *Block) Encrypt(dst, src []byte)

type CBCDecrypter

type CBCDecrypter struct {
	// contains filtered or unexported fields
}

func NewCBCDecrypter

func NewCBCDecrypter(b *Block, iv [BlockSize]byte) *CBCDecrypter

NewCBCDecrypter returns a [cipher.BlockMode] which decrypts in cipher block chaining mode, using the given Block.

func (*CBCDecrypter) BlockSize

func (c *CBCDecrypter) BlockSize() int

func (*CBCDecrypter) CryptBlocks

func (c *CBCDecrypter) CryptBlocks(dst, src []byte)

func (*CBCDecrypter) SetIV

func (x *CBCDecrypter) SetIV(iv []byte)

type CBCEncrypter

type CBCEncrypter struct {
	// contains filtered or unexported fields
}

func NewCBCEncrypter

func NewCBCEncrypter(b *Block, iv [BlockSize]byte) *CBCEncrypter

NewCBCEncrypter returns a [cipher.BlockMode] which encrypts in cipher block chaining mode, using the given Block.

func (*CBCEncrypter) BlockSize

func (c *CBCEncrypter) BlockSize() int

func (*CBCEncrypter) CryptBlocks

func (c *CBCEncrypter) CryptBlocks(dst, src []byte)

func (*CBCEncrypter) SetIV

func (x *CBCEncrypter) SetIV(iv []byte)

type CTR

type CTR struct {
	// contains filtered or unexported fields
}

func NewCTR

func NewCTR(b *Block, iv []byte) *CTR

func (*CTR) XORKeyStream

func (c *CTR) XORKeyStream(dst, src []byte)

func (*CTR) XORKeyStreamAt

func (c *CTR) XORKeyStreamAt(dst, src []byte, offset uint64)

XORKeyStreamAt behaves like XORKeyStream but keeps no state, and instead seeks into the keystream by the given bytes offset from the start (ignoring any XORKetStream calls). This allows for random access into the keystream, up to 16 EiB from the start.

type KeySizeError

type KeySizeError int

func (KeySizeError) Error

func (k KeySizeError) Error() string

Source Files

aes.go aes_generic.go aes_noasm.go cast.go cbc.go cbc_noasm.go const.go ctr.go ctr_noasm.go

Directories

PathSynopsis
crypto/internal/fips140/aes/_asm
crypto/internal/fips140/aes/_asm/ctr
crypto/internal/fips140/aes/gcm
crypto/internal/fips140/aes/gcm/_asm
crypto/internal/fips140/aes/gcm/_asm/gcm
Version
v1.24.1 (latest)
Published
Feb 27, 2025
Platform
js/wasm
Imports
9 packages
Last checked
2 minutes ago

Tools for package owners.