53 lines
1.8 KiB
Go
53 lines
1.8 KiB
Go
// Copyright (C) MongoDB, Inc. 2022-present.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
// not use this file except in compliance with the License. You may obtain
|
|
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
package options
|
|
|
|
// RewrapManyDataKeyOptions represents all possible options used to decrypt and encrypt all matching data keys with a
|
|
// possibly new masterKey.
|
|
type RewrapManyDataKeyOptions struct {
|
|
// Provider identifies the new KMS provider. If omitted, encrypting uses the current KMS provider.
|
|
Provider *string
|
|
|
|
// MasterKey identifies the new masterKey. If omitted, rewraps with the current masterKey.
|
|
MasterKey interface{}
|
|
}
|
|
|
|
// RewrapManyDataKey creates a new RewrapManyDataKeyOptions instance.
|
|
func RewrapManyDataKey() *RewrapManyDataKeyOptions {
|
|
return new(RewrapManyDataKeyOptions)
|
|
}
|
|
|
|
// SetProvider sets the value for the Provider field.
|
|
func (rmdko *RewrapManyDataKeyOptions) SetProvider(provider string) *RewrapManyDataKeyOptions {
|
|
rmdko.Provider = &provider
|
|
return rmdko
|
|
}
|
|
|
|
// SetMasterKey sets the value for the MasterKey field.
|
|
func (rmdko *RewrapManyDataKeyOptions) SetMasterKey(masterKey interface{}) *RewrapManyDataKeyOptions {
|
|
rmdko.MasterKey = masterKey
|
|
return rmdko
|
|
}
|
|
|
|
// MergeRewrapManyDataKeyOptions combines the given RewrapManyDataKeyOptions instances into a single
|
|
// RewrapManyDataKeyOptions in a last one wins fashion.
|
|
func MergeRewrapManyDataKeyOptions(opts ...*RewrapManyDataKeyOptions) *RewrapManyDataKeyOptions {
|
|
rmdkOpts := RewrapManyDataKey()
|
|
for _, rmdko := range opts {
|
|
if rmdko == nil {
|
|
continue
|
|
}
|
|
if provider := rmdko.Provider; provider != nil {
|
|
rmdkOpts.Provider = provider
|
|
}
|
|
if masterKey := rmdko.MasterKey; masterKey != nil {
|
|
rmdkOpts.MasterKey = masterKey
|
|
}
|
|
}
|
|
return rmdkOpts
|
|
}
|