class Mongo::Crypt::KMS::MasterKeyDocument

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

@api private

Constants

KMS_PROVIDERS

Known KMS provider names.

Public Class Methods

new(kms_provider, options) click to toggle source

Creates a master key document object form a parameters hash.

@param [ String ] kms_provider. KMS provider name. @param [ Hash ] options 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.

@raise [ ArgumentError ] If required options are missing or incorrectly.

# File lib/mongo/crypt/kms/master_key_document.rb, line 39
def initialize(kms_provider, options)
  if options.nil?
    raise ArgumentError.new('Key document options must not be nil')
  end
  master_key = options.fetch(:master_key, {})
  @key_document = case kms_provider.to_s
    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

Public Instance Methods

to_document() click to toggle source

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

@return [ BSON::Document ] Master key document as BSON document.

# File lib/mongo/crypt/kms/master_key_document.rb, line 58
def to_document
  @key_document.to_document
end