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

Inherits:
Object
  • Object
show all
Defined in:
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 Attribute Summary collapse

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.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/mongo/crypt/kms/credentials.rb', line 54

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 Attribute Details

#awsCredentials::AWS | nil (readonly)

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.

Returns AWS KMS credentials.

Returns:

  • (Credentials::AWS | nil)

    AWS KMS credentials.



28
29
30
# File 'lib/mongo/crypt/kms/credentials.rb', line 28

def aws
  @aws
end

#azureCredentials::Azure | nil (readonly)

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.

Returns Azure KMS credentials.

Returns:

  • (Credentials::Azure | nil)

    Azure KMS credentials.



31
32
33
# File 'lib/mongo/crypt/kms/credentials.rb', line 31

def azure
  @azure
end

#gcpCredentials::GCP | nil (readonly)

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.

Returns GCP KMS credentials.

Returns:

  • (Credentials::GCP | nil)

    GCP KMS credentials.



34
35
36
# File 'lib/mongo/crypt/kms/credentials.rb', line 34

def gcp
  @gcp
end

#kmipCredentials::KMIP | nil (readonly)

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.

Returns KMIP KMS credentials.

Returns:

  • (Credentials::KMIP | nil)

    KMIP KMS credentials.



37
38
39
# File 'lib/mongo/crypt/kms/credentials.rb', line 37

def kmip
  @kmip
end

#localCredentials::Local | nil (readonly)

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.

Returns Local KMS credentials.

Returns:

  • (Credentials::Local | nil)

    Local KMS credentials.



40
41
42
# File 'lib/mongo/crypt/kms/credentials.rb', line 40

def local
  @local
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.



84
85
86
87
88
89
90
91
92
# File 'lib/mongo/crypt/kms/credentials.rb', line 84

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