2022-03-20 19:55:47 +00:00
|
|
|
package persistent
|
|
|
|
|
|
|
|
import (
|
2022-03-21 11:53:49 +00:00
|
|
|
"crypto/ecdsa"
|
2022-03-20 19:55:47 +00:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"go.uber.org/zap"
|
|
|
|
)
|
|
|
|
|
|
|
|
type cfg struct {
|
2022-03-21 11:53:49 +00:00
|
|
|
l *zap.Logger
|
|
|
|
timeout time.Duration
|
|
|
|
privateKey *ecdsa.PrivateKey
|
2022-03-20 19:55:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Option allows setting optional parameters of the TokenStore.
|
|
|
|
type Option func(*cfg)
|
|
|
|
|
|
|
|
func defaultCfg() *cfg {
|
|
|
|
return &cfg{
|
|
|
|
l: zap.L(),
|
|
|
|
timeout: 100 * time.Millisecond,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithLogger returns an option to specify
|
|
|
|
// logger.
|
|
|
|
func WithLogger(v *zap.Logger) Option {
|
|
|
|
return func(c *cfg) {
|
|
|
|
c.l = v
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithTimeout returns option to specify
|
|
|
|
// database connection timeout.
|
|
|
|
func WithTimeout(v time.Duration) Option {
|
|
|
|
return func(c *cfg) {
|
|
|
|
c.timeout = v
|
|
|
|
}
|
|
|
|
}
|
2022-03-21 11:53:49 +00:00
|
|
|
|
|
|
|
// WithEncryptionKey return an option to encrypt private
|
|
|
|
// session keys using provided private key.
|
|
|
|
func WithEncryptionKey(k *ecdsa.PrivateKey) Option {
|
|
|
|
return func(c *cfg) {
|
|
|
|
c.privateKey = k
|
|
|
|
}
|
|
|
|
}
|