| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package jwe
- import (
- "context"
- "github.com/lestrrat-go/option"
- )
- type Option = option.Interface
- type identMessage struct{}
- type identPostParser struct{}
- type identPrettyFormat struct{}
- type identProtectedHeader struct{}
- type DecryptOption interface {
- Option
- decryptOption()
- }
- type decryptOption struct {
- Option
- }
- func (*decryptOption) decryptOption() {}
- type SerializerOption interface {
- Option
- serializerOption()
- }
- type serializerOption struct {
- Option
- }
- func (*serializerOption) serializerOption() {}
- type EncryptOption interface {
- Option
- encryptOption()
- }
- type encryptOption struct {
- Option
- }
- func (*encryptOption) encryptOption() {}
- // WithPrettyFormat specifies if the `jwe.JSON` serialization tool
- // should generate pretty-formatted output
- func WithPrettyFormat(b bool) SerializerOption {
- return &serializerOption{option.New(identPrettyFormat{}, b)}
- }
- // Specify contents of the protected header. Some fields such as
- // "enc" and "zip" will be overwritten when encryption is performed.
- func WithProtectedHeaders(h Headers) EncryptOption {
- cloned, _ := h.Clone(context.Background())
- return &encryptOption{option.New(identProtectedHeader{}, cloned)}
- }
- // WithMessage provides a message object to be populated by `jwe.Decrpt`
- // Using this option allows you to decrypt AND obtain the `jwe.Message`
- // in one go.
- //
- // Note that you should NOT be using the message object for anything other
- // than inspecting its contents. Particularly, do not expect the message
- // reliable when you call `Decrypt` on it. `(jwe.Message).Decrypt` is
- // slated to be deprecated in the next major version.
- func WithMessage(m *Message) DecryptOption {
- return &decryptOption{option.New(identMessage{}, m)}
- }
- // WithPostParser specifies the handler to be called immediately
- // after the JWE message has been parsed, but before decryption
- // takes place during `jwe.Decrypt`.
- //
- // This option exists to allow advanced users that require the use
- // of information stored in the JWE message to determine how the
- // decryption should be handled.
- //
- // For security reasons it is highly recommended that you thoroughly
- // study how the process works before using this option. This is especially
- // true if you are trying to infer key algorithms and keys to use to
- // decrypt a message using non-standard hints.
- func WithPostParser(p PostParser) DecryptOption {
- return &decryptOption{option.New(identPostParser{}, p)}
- }
|