| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package keygen
- import (
- "crypto/ecdsa"
- "github.com/lestrrat-go/jwx/jwa"
- "github.com/lestrrat-go/jwx/x25519"
- )
- type Generator interface {
- Size() int
- Generate() (ByteSource, error)
- }
- // StaticKeyGenerate uses a static byte buffer to provide keys.
- type Static []byte
- // RandomKeyGenerate generates random keys
- type Random struct {
- keysize int
- }
- // EcdhesKeyGenerate generates keys using ECDH-ES algorithm / EC-DSA curve
- type Ecdhes struct {
- pubkey *ecdsa.PublicKey
- keysize int
- algorithm jwa.KeyEncryptionAlgorithm
- enc jwa.ContentEncryptionAlgorithm
- }
- // X25519KeyGenerate generates keys using ECDH-ES algorithm / X25519 curve
- type X25519 struct {
- algorithm jwa.KeyEncryptionAlgorithm
- enc jwa.ContentEncryptionAlgorithm
- keysize int
- pubkey x25519.PublicKey
- }
- // ByteKey is a generated key that only has the key's byte buffer
- // as its instance data. If a key needs to do more, such as providing
- // values to be set in a JWE header, that key type wraps a ByteKey
- type ByteKey []byte
- // ByteWithECPublicKey holds the EC private key that generated
- // the key along with the key itself. This is required to set the
- // proper values in the JWE headers
- type ByteWithECPublicKey struct {
- ByteKey
- PublicKey interface{}
- }
- type ByteWithIVAndTag struct {
- ByteKey
- IV []byte
- Tag []byte
- }
- type ByteWithSaltAndCount struct {
- ByteKey
- Salt []byte
- Count int
- }
- // ByteSource is an interface for things that return a byte sequence.
- // This is used for KeyGenerator so that the result of computations can
- // carry more than just the generate byte sequence.
- type ByteSource interface {
- Bytes() []byte
- }
- type Setter interface {
- Set(string, interface{}) error
- }
|