Class: Mongo::Crypt::KMS::Credentials Private

Inherits:
Object
  • Object
show all
Defined in:
build/ruby-driver-v2.18/lib/mongo/crypt/kms/credentials.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 Credentials object contains credentials for using KMS providers.

Instance Method Summary collapse

Constructor Details

#initialize(kms_providers) ⇒ Credentials

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.

Note:

There may be more than one KMS provider specified.

Creates a KMS credentials object form a parameters hash.

Parameters:

  • kms_providers (Hash)

    A hash that contains credential for KMS providers. The hash should have KMS provider names as keys, and required parameters for every provider as values. 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
56
57
58
59
60
61
62
63
64
# File 'build/ruby-driver-v2.18/lib/mongo/crypt/kms/credentials.rb', line 39

def initialize(kms_providers)
  if kms_providers.nil?
    raise ArgumentError.new("KMS providers options must not be nil")
  end
  if kms_providers.key?(:aws)
    @aws = AWS::Credentials.new(kms_providers[:aws])
  end
  if kms_providers.key?(:azure)
    @azure = Azure::Credentials.new(kms_providers[:azure])
  end
  if kms_providers.key?(:gcp)
    @gcp = GCP::Credentials.new(kms_providers[:gcp])
  end
  if kms_providers.key?(:kmip)
    @kmip = KMIP::Credentials.new(kms_providers[:kmip])
  end
  if kms_providers.key?(:local)
    @local = Local::Credentials.new(kms_providers[:local])
  end
  if @aws.nil? && @azure.nil? && @gcp.nil? && @kmip.nil? && @local.nil?
    raise ArgumentError.new(
      "KMS providers options must have one of the following keys: " +
      ":aws, :azure, :gcp, :kmip, :local"
    )
  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 credentials object to a BSON document in libmongocrypt format.

Returns:

  • (BSON::Document)

    Credentials as BSON document.



69
70
71
72
73
74
75
76
77
# File 'build/ruby-driver-v2.18/lib/mongo/crypt/kms/credentials.rb', line 69

def to_document
  BSON::Document.new({}).tap do |bson|
    bson[:aws] = @aws.to_document if @aws
    bson[:azure] = @azure.to_document if @azure
    bson[:gcp] = @gcp.to_document if @gcp
    bson[:kmip] = @kmip.to_document if @kmip
    bson[:local] = @local.to_document if @local
  end
end