Add adds a key group to a SOPS file
(opts AddOpts)
| 22 | |
| 23 | // Add adds a key group to a SOPS file |
| 24 | func Add(opts AddOpts) error { |
| 25 | tree, err := common.LoadEncryptedFile(opts.InputStore, opts.InputPath) |
| 26 | if err != nil { |
| 27 | return err |
| 28 | } |
| 29 | dataKey, err := tree.Metadata.GetDataKeyWithKeyServices(opts.KeyServices, opts.DecryptionOrder) |
| 30 | if err != nil { |
| 31 | return err |
| 32 | } |
| 33 | tree.Metadata.KeyGroups = append(tree.Metadata.KeyGroups, opts.Group) |
| 34 | |
| 35 | if opts.GroupThreshold != 0 { |
| 36 | tree.Metadata.ShamirThreshold = opts.GroupThreshold |
| 37 | } |
| 38 | tree.Metadata.UpdateMasterKeysWithKeyServices(dataKey, opts.KeyServices) |
| 39 | output, err := opts.OutputStore.EmitEncryptedFile(*tree) |
| 40 | if err != nil { |
| 41 | return err |
| 42 | } |
| 43 | var outputFile = os.Stdout |
| 44 | if opts.InPlace { |
| 45 | var err error |
| 46 | outputFile, err = os.Create(opts.InputPath) |
| 47 | if err != nil { |
| 48 | return err |
| 49 | } |
| 50 | defer outputFile.Close() |
| 51 | } |
| 52 | outputFile.Write(output) |
| 53 | return nil |
| 54 | } |
no test coverage detected