123456789_123456789_123456789_123456789_123456789_

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

Relationships & Source Files
Inherits: Object
Defined in: lib/mongo/crypt/kms/master_key_document.rb

Overview

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

Constant Summary

Class Method Summary

Instance Method Summary

Constructor Details

.new(kms_provider, options) ⇒ MasterKeyDocument

Creates a master key document object from a parameters hash.

Parameters:

  • kms_provider (String)

    ::Mongo::Crypt::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 ::Mongo::Crypt::KMS provider. Required parameters for ::Mongo::Crypt::KMS providers are described in corresponding classes inside Mongo::Crypt::KMS module.

Raises:

  • (ArgumentError)

    If required options are missing or incorrectly formatted.

[ GitHub ]

  
# 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

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

Returns:

  • (BSON::Document)

    Master key document as BSON document.

[ GitHub ]

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

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