| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright 2020 Cloudflare, Inc. All rights reserved. Use of this source code
- // is governed by a BSD-style license that can be found in the LICENSE file.
- package tls
- import (
- "errors"
- "fmt"
- "github.com/cloudflare/circl/hpke"
- )
- // The mandatory-to-implement HPKE cipher suite for use with the ECH extension.
- var defaultHPKESuite hpke.Suite
- func init() {
- var err error
- defaultHPKESuite, err = hpkeAssembleSuite(
- uint16(hpke.KEM_X25519_HKDF_SHA256),
- uint16(hpke.KDF_HKDF_SHA256),
- uint16(hpke.AEAD_AES128GCM),
- )
- if err != nil {
- panic(fmt.Sprintf("hpke: mandatory-to-implement cipher suite not supported: %s", err))
- }
- }
- func hpkeAssembleSuite(kemId, kdfId, aeadId uint16) (hpke.Suite, error) {
- kem := hpke.KEM(kemId)
- if !kem.IsValid() {
- return hpke.Suite{}, errors.New("KEM is not supported")
- }
- kdf := hpke.KDF(kdfId)
- if !kdf.IsValid() {
- return hpke.Suite{}, errors.New("KDF is not supported")
- }
- aead := hpke.AEAD(aeadId)
- if !aead.IsValid() {
- return hpke.Suite{}, errors.New("AEAD is not supported")
- }
- return hpke.NewSuite(kem, kdf, aead), nil
- }
|