MCPcopy Create free account
hub / github.com/AdRoll/baker / NewCrypt

Function NewCrypt

filter/crypt.go:57–88  ·  view source on GitHub ↗
(cfg baker.FilterParams)

Source from the content-addressed store, hash-verified

55}
56
57func NewCrypt(cfg baker.FilterParams) (baker.Filter, error) {
58 dcfg := cfg.DecodedConfig.(*CryptConfig)
59
60 src, ok := cfg.FieldByName(dcfg.SrcField)
61 if !ok {
62 return nil, fmt.Errorf("unknown field %q", dcfg.SrcField)
63 }
64
65 dst, ok := cfg.FieldByName(dcfg.DstField)
66 if !ok {
67 return nil, fmt.Errorf("unknown field %q", dcfg.DstField)
68 }
69
70 f := &Crypt{src: src, dst: dst}
71
72 switch dcfg.Algorithm {
73 case "fernet":
74 f.algorithm = &cryptFernet{}
75 default:
76 return nil, fmt.Errorf("unsupported algorithm %s", dcfg.Algorithm)
77 }
78 if err := f.algorithm.parseConf(dcfg.AlgorithmConfig); err != nil {
79 return nil, fmt.Errorf("invalid %s algorithm configuration: %s", dcfg.Algorithm, err)
80 }
81
82 if dcfg.Decrypt {
83 f.transformFn = f.algorithm.decrypt
84 } else {
85 f.transformFn = f.algorithm.encrypt
86 }
87 return f, nil
88}
89
90func (f *Crypt) Stats() baker.FilterStats {
91 return baker.FilterStats{

Callers 1

TestCryptFunction · 0.85

Calls 1

parseConfMethod · 0.65

Tested by 1

TestCryptFunction · 0.68