类:Mongo::Crypt:: KMS:: GCP::Credentials Private

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
包括:
验证
定义于:
build/Ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP /credentials.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

GCP Cloud Key Management Credentials对象包含使用GCP KMS提供商的凭证。

常量摘要折叠

FORMAT_HINT =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

" GCP KMS 提供商选项必须采用以下格式: " +
"{ email: 'EMAIL', private_key: 'PRIVATE-KEY' }"

实例属性摘要折叠

实例方法摘要折叠

验证中包含的方法

#validate_param , validate_tls_options

构造函数详情

#initialize (opts) ⇒档案

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

从参数哈希中创建 GCP KMS 凭证对象。

参数:

  • opts (哈希)

    包含凭证 KMS提供商GCP的哈希值

选项哈希 ( opts ):

  • :email string

    GCP电子邮件。

  • :private_key string

    GCP 私钥。 此方法接受基本64编码的 DER 格式或 PEM 格式的私钥。

  • :endpoint ( string | nil )

    GCP 端点,可选。

  • :access_token ( string | nil )

    GCP访问权限令牌,可选。 如果此选项不为 null,则忽略其他选项。

引发:

  • ( ArgumentError )

    如果必需的选项丢失或格式不正确。



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第61行

def 初始化(opts)
  @opts = opts
  return if 空?

  if opts[:access_token]
    @access_token = opts[:access_token]
  else
    @email = validate_param(:email, opts, FORMAT_HINT)
    @private_key = 开始
      private_key_opt = validate_param(:private_key, opts, FORMAT_HINT)
      if BSON::environment.jRuby?
        # 我们无法真正在 JRuby 上验证私钥,因此我们假设
        # 采用基本64编码的 DER 格式。
        private_key_opt
      else
        # 检查私钥是否为 PEM 格式。
        pkey = OpenSSL::PKey::RSA.new(private_key_opt)
        # 是 PEM,需要转换为基本64编码的 DER。
        der = if pkey.respond_to?(:private_to_der)
          pkey.private_to_der
        else
          pkey.to_der
        end
        Base64.对64进行编码(der)
      end
    救援 OpenSSL::PKey::RSAError
      # 检查私钥是否在 DER 中。
      开始
        OpenSSL::PKey.(Base64.解码64(private_key_opt))
        # 私钥很好,使用它。
        private_key_opt
      救援 OpenSSL::PKey::PKeyError
        提高 ArgumentError.new(
          " private_key 选项必须是基本64编码的 DER 格式或 PEM 格式。 "
        )
      end
    end

    @endpoint = validate_param(
      :endpoint, opts, FORMAT_HINT, 必需: false
    )
  end
end

实例属性详细信息

# access_tokenstring | nil (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 GCP 访问令牌。

返回:

  • ( string | nil )

    GCP 访问令牌。



40
41
42
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第40行

def access_token
  @access_token
end

# emailstring (readonly)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回用于进行身份验证的GCP电子邮件。

返回:

  • ( string )

    用于进行身份验证的 GCP 电子邮件。



31
32
33
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第31行

def 电子邮件
  @email
end

#端点string | nil (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回GCP KMS端点。

返回:

  • ( string | nil )

    GCP KMS 端点。



37
38
39
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第37行

def 端点
  @endpoint
end

# private_keystring (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回采用基本64编码的 DER 格式的 GCP 私钥。

返回:

  • ( string )

    GCP私钥,基本64编码的 DER 格式。



34
35
36
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第34行

def PRIVATE_KEY
  @private_key
end

实例方法详细信息

# to_documentBSON::Document

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

将凭证对象转换为 libmongocrypt 格式的BSON文档。

返回:

  • ( BSON::Document )

    凭证格式的Azure KMS档案。



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ KMS / GCP / 凭证.rb', 第108行

def to_document
  return BSON::文档.new if 空?
  if access_token
    BSON::文档.new({ accessToken: access_token })
  else
    BSON::文档.new({
      电子邮件: 电子邮件,
      privateKey: BSON::二进制文件.new(PRIVATE_KEY, :generic),
    }).点击 do |bson|
      除非 端点.nil?
        bson.update({ 端点: 端点 })
      end
    end
  end
end