package hpke

import "crypto/internal/hpke"

Index

Constants

const (
	AEAD_AES_128_GCM      = 0x0001
	AEAD_AES_256_GCM      = 0x0002
	AEAD_ChaCha20Poly1305 = 0x0003
)
const DHKEM_X25519_HKDF_SHA256 = 0x0020
const KDF_HKDF_SHA256 = 0x0001

Variables

var SupportedAEADs = map[uint16]struct {
	keySize   int
	nonceSize int
	aead      func([]byte) (cipher.AEAD, error)
}{

	AEAD_AES_128_GCM:      {/* contains filtered or unexported fields */},
	AEAD_AES_256_GCM:      {/* contains filtered or unexported fields */},
	AEAD_ChaCha20Poly1305: {/* contains filtered or unexported fields */},
}
var SupportedKDFs = map[uint16]func() *hkdfKDF{

	KDF_HKDF_SHA256: func() *hkdfKDF { return &hkdfKDF{crypto.SHA256} },
}
var SupportedKEMs = map[uint16]struct {
	curve   ecdh.Curve
	hash    crypto.Hash
	nSecret uint16
}{

	DHKEM_X25519_HKDF_SHA256: {ecdh.X25519(), crypto.SHA256, 32},
}

Functions

func ParseHPKEPrivateKey

func ParseHPKEPrivateKey(kemID uint16, bytes []byte) (*ecdh.PrivateKey, error)

func ParseHPKEPublicKey

func ParseHPKEPublicKey(kemID uint16, bytes []byte) (*ecdh.PublicKey, error)

Types

type AEADID

type AEADID uint16

type KDFID

type KDFID uint16

type KemID

type KemID uint16

type Receipient

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

func SetupReceipient

func SetupReceipient(kemID, kdfID, aeadID uint16, priv *ecdh.PrivateKey, info, encPubEph []byte) (*Receipient, error)

func (*Receipient) Open

func (r *Receipient) Open(aad, ciphertext []byte) ([]byte, error)

type Sender

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

func SetupSender

func SetupSender(kemID, kdfID, aeadID uint16, pub *ecdh.PublicKey, info []byte) ([]byte, *Sender, error)

func (*Sender) Seal

func (s *Sender) Seal(aad, plaintext []byte) ([]byte, error)

Source Files

hpke.go

Version
v1.24.0 (latest)
Published
Feb 10, 2025
Platform
linux/amd64
Imports
10 packages
Last checked
38 minutes ago

Tools for package owners.