package config
import (
"crypto/sha256"
"io"
"golang.org/x/crypto/hkdf"
"github.com/libp2p/go-libp2p/core/crypto"
"github.com/quic-go/quic-go"
)
const (
statelessResetKeyInfo = "libp2p quic stateless reset key"
tokenGeneratorKeyInfo = "libp2p quic token generator key"
)
func PrivKeyToStatelessResetKey (key crypto .PrivKey ) (quic .StatelessResetKey , error ) {
var statelessResetKey quic .StatelessResetKey
keyBytes , err := key .Raw ()
if err != nil {
return statelessResetKey , err
}
keyReader := hkdf .New (sha256 .New , keyBytes , nil , []byte (statelessResetKeyInfo ))
if _ , err := io .ReadFull (keyReader , statelessResetKey [:]); err != nil {
return statelessResetKey , err
}
return statelessResetKey , nil
}
func PrivKeyToTokenGeneratorKey (key crypto .PrivKey ) (quic .TokenGeneratorKey , error ) {
var tokenKey quic .TokenGeneratorKey
keyBytes , err := key .Raw ()
if err != nil {
return tokenKey , err
}
keyReader := hkdf .New (sha256 .New , keyBytes , nil , []byte (tokenGeneratorKeyInfo ))
if _ , err := io .ReadFull (keyReader , tokenKey [:]); err != nil {
return tokenKey , err
}
return tokenKey , nil
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .