Class: Mongo::Crypt::KMS::MasterKeyDocument Private

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo/crypt/kms/master_key_document.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

KMS master key document object contains KMS master key parameters that are used for creation of data keys.

Constant Summary collapse

KMS_PROVIDERS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Known KMS provider types.

%w[aws azure gcp kmip local].freeze

Instance Method Summary collapse

Constructor Details

#initialize(kms_provider, options) ⇒ MasterKeyDocument

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Creates a master key document object from a parameters hash.

Parameters:

  • kms_provider (String)

    KMS provider identifier. May be a provider type (e.g. "aws") or a named provider (e.g. "aws:name1").

  • options (Hash)

    A hash that contains master key options for the KMS provider. Required parameters for KMS providers are described in corresponding classes inside Mongo::Crypt::KMS module.

Raises:

  • (ArgumentError)

    If required options are missing or incorrectly formatted.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/mongo/crypt/kms/master_key_document.rb', line 39

def initialize(kms_provider, options)
  raise ArgumentError.new('Key document options must not be nil') if options.nil?

  @provider = kms_provider.to_s
  provider_type = KMS.provider_base_type(@provider)

  master_key = options.fetch(:master_key, {})
  @key_document = case provider_type
                  when 'aws' then KMS::AWS::MasterKeyDocument.new(master_key)
                  when 'azure' then KMS::Azure::MasterKeyDocument.new(master_key)
                  when 'gcp' then KMS::GCP::MasterKeyDocument.new(master_key)
                  when 'kmip' then KMS::KMIP::MasterKeyDocument.new(master_key)
                  when 'local' then KMS::Local::MasterKeyDocument.new(master_key)
                  else
                    raise ArgumentError.new("KMS provider must be one of #{KMS_PROVIDERS}")
                  end
end

Instance Method Details

#to_documentBSON::Document

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Convert master key document object to a BSON document in libmongocrypt format.

Returns:

  • (BSON::Document)

    Master key document as BSON document.



60
61
62
# File 'lib/mongo/crypt/kms/master_key_document.rb', line 60

def to_document
  @key_document.to_document.merge(provider: @provider)
end