Documentation
¶
Index ¶
- func NewAESCBCDecrypter(key []byte) func([]byte) ([]byte, error)
- func NewAESCBCEncryptor(key []byte) func([]byte) ([]byte, error)
- func NewAESCTRDecrypter(key []byte) func([]byte) ([]byte, error)
- func NewAESCTREncryptor(key []byte) func([]byte) ([]byte, error)
- func NewAESECBDecrypter(key []byte) func([]byte) ([]byte, error)
- func NewAESECBEncryptor(key []byte) func([]byte) ([]byte, error)
- func NewAESGCMDecrypter(key []byte) func([]byte) ([]byte, error)
- func NewAESGCMEncryptor(key []byte) func([]byte) ([]byte, error)
- func NewBlake2b256Signer(key []byte) func([]byte) ([]byte, error)
- func NewBlake2b256Verifier(key []byte) func([]byte, []byte) error
- func NewBlake2b512Signer(key []byte) func([]byte) ([]byte, error)
- func NewBlake2b512Verifier(key []byte) func([]byte, []byte) error
- func NewBlake3Signer(key []byte) func([]byte) ([]byte, error)
- func NewBlake3Verifier(key []byte) func([]byte, []byte) error
- func NewEd25519Signer(key ed25519.PrivateKey) func([]byte) ([]byte, error)
- func NewEd25519Verifier(key ed25519.PublicKey) func([]byte, []byte) error
- func NewEd448Signer(key ed448.PrivateKey, context ...string) func([]byte) ([]byte, error)
- func NewEd448Verifier(key ed448.PublicKey, context ...string) func([]byte, []byte) error
- func NewHMACSha256Signer(key []byte) func([]byte) ([]byte, error)
- func NewHMACSha256Verifier(key []byte) func([]byte, []byte) error
- func NewHMACSha512Signer(key []byte) func([]byte) ([]byte, error)
- func NewHMACSha512Verifier(key []byte) func([]byte, []byte) error
- func NewHPKEDecrypter(key kem.PrivateKey, suite hpke.Suite, info ...string) func([]byte) ([]byte, error)
- func NewHPKEEncryptor(key kem.PublicKey, suite hpke.Suite, info ...string) func([]byte) ([]byte, error)
- func NewXChaCha20PolyDecrypter(key []byte) func([]byte) ([]byte, error)
- func NewXChaCha20PolyEncryptor(key []byte) func([]byte) ([]byte, error)
- func SetDecoder(dec cbor.DecMode)
- func SetEncoder(enc cbor.EncMode)
- type SignatureType
- type Signer
- type Verifier
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewAESCBCDecrypter ¶
NewAESCBCDecrypter creates a new decrypter using AES-CBC.
func NewAESCBCEncryptor ¶
NewAESCBCEncryptor creates a new encryptor using AES-CBC.
func NewAESCTRDecrypter ¶ added in v1.0.2
NewAESCTRDecrypter creates a new decrypter using AES-CTR.
func NewAESCTREncryptor ¶ added in v1.0.2
NewAESCTREncryptor creates a new encryptor using AES-CTR.
func NewAESECBDecrypter ¶ added in v1.0.2
NewAESECBDecrypter creates a new decrypter using AES-ECB. Disclaimer: ECB is not secure, it must not be used in production. Please use AES-CBC or AES-GCM instead. See https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_(ECB).
func NewAESECBEncryptor ¶ added in v1.0.2
NewAESECBEncryptor creates a new encryptor using AES-ECB. Disclaimer: ECB is not secure, it must not be used in production. Please use AES-CBC or AES-GCM instead. See https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_codebook_(ECB).
func NewAESGCMDecrypter ¶ added in v1.0.2
NewAESGCMDecrypter creates a new decrypter using AES-GCM.
func NewAESGCMEncryptor ¶ added in v1.0.2
NewAESGCMEncryptor creates a new encryptor using AES-GCM.
func NewBlake2b256Signer ¶
NewBlake2b256Signer creates a new signer using blake2b-256 with a key. If the key is longer than 64 bytes, it will be hashed with blake2b-512.
func NewBlake2b256Verifier ¶
NewBlake2b256Verifier creates a new verifier using blake2b-256 with a key. If the key is longer than 64 bytes, it will be hashed with blake2b-512.
func NewBlake2b512Signer ¶
NewBlake2b512Signer creates a new signer using blake2b-512 with a key. If the key is larger than 64 bytes, it will be hashed with blake2b-512.
func NewBlake2b512Verifier ¶
NewBlake2b512Verifier creates a new verifier using blake2b-512 with a key. If the key is larger than 64 bytes, it will be hashed with blake2b-512.
func NewBlake3Signer ¶
NewBlake3Signer creates a new signer using blake3 with a key. If the key is not 32 bytes, it will be hashed with blake3.
func NewBlake3Verifier ¶
NewBlake3Verifier creates a new verifier using blake3 with a key.
func NewEd25519Signer ¶
func NewEd25519Signer(key ed25519.PrivateKey) func([]byte) ([]byte, error)
NewEd25519Signer creates a new signer using Ed25519 with ed25519.PrivateKey.
func NewEd25519Verifier ¶
NewEd25519Verifier creates a new verifier using Ed25519 with ed25519.PublicKey
func NewEd448Signer ¶
NewEd448Signer creates a new signer using Ed448 with ed448.PrivateKey. context is optional and defaults to fwt.defaultCtx. please refer to https://tools.ietf.org/html/rfc8032#section-5.2.6 for more information.
func NewEd448Verifier ¶
NewEd448Verifier creates a new verifier using Ed448 with ed448.PublicKey. context is optional and defaults to fwt.defaultCtx. please refer to https://tools.ietf.org/html/rfc8032#section-5.2.6 for more information.
func NewHMACSha256Signer ¶
NewHMACSha256Signer creates a new signer using HMAC-SHA256 with a key.
func NewHMACSha256Verifier ¶
NewHMACSha256Verifier creates a new verifier using HMAC-SHA256 with a key.
func NewHMACSha512Signer ¶
NewHMACSha512Signer creates a new signer using HMAC-SHA512 with a key.
func NewHMACSha512Verifier ¶
NewHMACSha512Verifier creates a new verifier using HMAC-SHA512 with a key.
func NewHPKEDecrypter ¶ added in v1.0.2
func NewHPKEDecrypter(key kem.PrivateKey, suite hpke.Suite, info ...string) func([]byte) ([]byte, error)
NewHPKEDecrypter creates a new decrypter using HPKE. Experimental, not recommended for production use.
func NewHPKEEncryptor ¶ added in v1.0.2
func NewHPKEEncryptor(key kem.PublicKey, suite hpke.Suite, info ...string) func([]byte) ([]byte, error)
NewHPKEEncryptor creates a new encryptor using HPKE. Experimental, not recommended for production use.
func NewXChaCha20PolyDecrypter ¶
NewXChaCha20PolyDecrypter creates a new decrypter using XChaCha20-Poly1305.
func NewXChaCha20PolyEncryptor ¶
NewXChaCha20PolyEncryptor creates a new encryptor using XChaCha20-Poly1305.
func SetDecoder ¶ added in v1.0.4
func SetDecoder(dec cbor.DecMode)
SetDecoder set custom cbor decoder.
func SetEncoder ¶ added in v1.0.4
func SetEncoder(enc cbor.EncMode)
SetEncoder set custom cbor encoder.
Types ¶
type SignatureType ¶
type SignatureType int
SignatureType is the type of signature.
const ( // SignatureTypeEd25519 is the signature type of Ed25519. SignatureTypeEd25519 SignatureType = iota // SignatureTypeEd448 is the signature type of Ed448. SignatureTypeEd448 // SignatureTypeHMACSha256 is the signature type of HMAC-SHA256. SignatureTypeHMACSha256 // SignatureTypeHMACSha512 is the signature type of HMAC-SHA512. SignatureTypeHMACSha512 // SignatureTypeBlake2b256 is the signature type of blake2b-256. SignatureTypeBlake2b256 // SignatureTypeBlake2b512 is the signature type of blake2b-512. SignatureTypeBlake2b512 // SignatureTypeBlake3 is the signature type of blake3. SignatureTypeBlake3 )
Signature types.
type Signer ¶
type Signer struct {
// contains filtered or unexported fields
}
Signer is a token factory & signer.
func NewSigner ¶
func NewSigner(signer func([]byte) ([]byte, error), encryptor func([]byte) ([]byte, error), signatureType SignatureType) *Signer
NewSigner creates a new signer. signer is a function that takes a marshaled data and returns a signature. encryptor is an optional function that takes a token and returns an encrypted token. signatureType is the type of signature, must be matched with the signer.
func (*Signer) Sign ¶
Sign signs the data and returns a signed token. If encryptor is set, the token will be encrypted.
Example ¶
HMACKey := []byte("00000000000000000000000000000000") signer := NewSigner(NewBlake3Signer(HMACKey), nil, SignatureTypeBlake3) token, err := signer.Sign(testStruct) if err != nil { panic(err) } fmt.Println(token)
Output: BkgAAAAAAAAApAEYKgJ4L3RoZSBhbnN3ZXIgdG8gbGlmZSwgdGhlIHVuaXZlcnNlIGFuZCBldmVyeXRoaW5nAxpK+fBwBEpzb21lIGJ5dGVzLGyZyWWGXpPeYV0KJphXT0ZNMf3KTzKvOdFjltylKoI=
type Verifier ¶
type Verifier struct {
// contains filtered or unexported fields
}
Verifier is a token verifier.
func NewVerifier ¶
func NewVerifier(verifier func([]byte, []byte) error, decrypter func([]byte) ([]byte, error), signatureType SignatureType) *Verifier
NewVerifier creates a new verifier. verifier is a function that takes a marshaled data and a signature and returns an error if the signature is invalid. decrypter is an optional function that takes a token and returns a decrypted token. signatureType is the type of signature, must be matched with the verifier.
func (*Verifier) Verify ¶
Verify verifies the token.
Example ¶
HMACKey := []byte("00000000000000000000000000000000") verifier := NewVerifier(NewBlake3Verifier(HMACKey), nil, SignatureTypeBlake3) if err := verifier.Verify("BkgAAAAAAAAApAEYKgJ4L3RoZSBhbnN3ZXIgdG8gbGlmZSwgdGhlIHVuaXZlcnNlIGFuZCBldmVyeXRoaW5nAxpK+fBwBEpzb21lIGJ5dGVzLGyZyWWGXpPeYV0KJphXT0ZNMf3KTzKvOdFjltylKoI="); err != nil { panic(err) } fmt.Println("token is valid")
Output: token is valid
func (*Verifier) VerifyAndUnmarshal ¶
VerifyAndUnmarshal verifies the token and unmarshal the data into dst.
Example ¶
HMACKey := []byte("00000000000000000000000000000000") verifier := NewVerifier(NewBlake3Verifier(HMACKey), nil, SignatureTypeBlake3) result := new(TestStruct) if err := verifier.VerifyAndUnmarshal("BkgAAAAAAAAApAEYKgJ4L3RoZSBhbnN3ZXIgdG8gbGlmZSwgdGhlIHVuaXZlcnNlIGFuZCBldmVyeXRoaW5nAxpK+fBwBEpzb21lIGJ5dGVzLGyZyWWGXpPeYV0KJphXT0ZNMf3KTzKvOdFjltylKoI=", result); err != nil { panic(err) } fmt.Printf("A: %d, B: %s, C: %s, D: %s", result.A, result.B, result.C.UTC().Format("2006-01-02"), result.D)
Output: A: 42, B: the answer to life, the universe and everything, C: 2009-11-10, D: some bytes