package schemes

import "github.com/cloudflare/circl/kem/schemes"

Package schemes contains a register of KEM schemes.

Schemes Implemented

Based on standard elliptic curves:

HPKE_KEM_P256_HKDF_SHA256, HPKE_KEM_P384_HKDF_SHA384, HPKE_KEM_P521_HKDF_SHA512

Based on standard Diffie-Hellman functions:

HPKE_KEM_X25519_HKDF_SHA256, HPKE_KEM_X448_HKDF_SHA512

Post-quantum kems:

FrodoKEM-640-SHAKE
Kyber512, Kyber768, Kyber1024
Example (Schemes)

Code:play 

package main

import (
	"fmt"

	"github.com/cloudflare/circl/kem/schemes"
)

func main() {
	// import "github.com/cloudflare/circl/kem/schemes"

	for _, sch := range schemes.All() {
		fmt.Println(sch.Name())
	}
}

Output:

HPKE_KEM_P256_HKDF_SHA256
HPKE_KEM_P384_HKDF_SHA384
HPKE_KEM_P521_HKDF_SHA512
HPKE_KEM_X25519_HKDF_SHA256
HPKE_KEM_X448_HKDF_SHA512
FrodoKEM-640-SHAKE
Kyber512
Kyber768
Kyber1024
ML-KEM-512
ML-KEM-768
ML-KEM-1024
Kyber512-X25519
Kyber768-X25519
Kyber768-X448
Kyber1024-X448
P256Kyber768Draft00
X25519MLKEM768
X-Wing

Index

Examples

Functions

func All

func All() []kem.Scheme

All returns all KEM schemes supported.

func ByName

func ByName(name string) kem.Scheme

ByName returns the scheme with the given name and nil if it is not supported.

Names are case insensitive.

Source Files

schemes.go

Version
v1.6.1 (latest)
Published
Apr 9, 2025
Platform
linux/amd64
Imports
12 packages
Last checked
3 days ago

Tools for package owners.