...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package schemes
18
19 import (
20 "strings"
21
22 "github.com/cloudflare/circl/hpke"
23 "github.com/cloudflare/circl/kem"
24 "github.com/cloudflare/circl/kem/frodo/frodo640shake"
25 "github.com/cloudflare/circl/kem/hybrid"
26 "github.com/cloudflare/circl/kem/kyber/kyber1024"
27 "github.com/cloudflare/circl/kem/kyber/kyber512"
28 "github.com/cloudflare/circl/kem/kyber/kyber768"
29 )
30
31 var allSchemes = [...]kem.Scheme{
32 hpke.KEM_P256_HKDF_SHA256.Scheme(),
33 hpke.KEM_P384_HKDF_SHA384.Scheme(),
34 hpke.KEM_P521_HKDF_SHA512.Scheme(),
35 hpke.KEM_X25519_HKDF_SHA256.Scheme(),
36 hpke.KEM_X448_HKDF_SHA512.Scheme(),
37 frodo640shake.Scheme(),
38 kyber512.Scheme(),
39 kyber768.Scheme(),
40 kyber1024.Scheme(),
41 hybrid.Kyber512X25519(),
42 hybrid.Kyber768X25519(),
43 hybrid.Kyber768X448(),
44 hybrid.Kyber1024X448(),
45 hybrid.P256Kyber768Draft00(),
46 }
47
48 var allSchemeNames map[string]kem.Scheme
49
50 func init() {
51 allSchemeNames = make(map[string]kem.Scheme)
52 for _, scheme := range allSchemes {
53 allSchemeNames[strings.ToLower(scheme.Name())] = scheme
54 }
55 }
56
57
58
59
60
61 func ByName(name string) kem.Scheme {
62 return allSchemeNames[strings.ToLower(name)]
63 }
64
65
66 func All() []kem.Scheme { a := allSchemes; return a[:] }
67
View as plain text