类:Mongo::Crypt::Handle Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/crypt/ 处理.rb

Overview

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

包装 mongocrypt_t对象的 libmongocrypt 库的处理,允许客户端在该对象上设立选项或执行加密和解密等操作

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize(kms_providers, kms_tls_options, options = {}) ⇒ Handle

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

创建新的句柄对象并使用选项对其进行初始化

参数:

  • kms_providers ( Crypt:: KMS::Credentials )

    KMS提供商的档案。

  • kms_tls_options (哈希)

    用于连接到 KMS 提供商的 TLS 选项。 哈希键应为 KSM 提供程序名称;值应该是 TLS 连接选项的哈希值。 这些选项相当于 Mongo::Client 的 TLS 连接选项。

  • 选项 哈希 (默认为: {}

    选项的哈希值。

选项哈希 ( options ):

  • :schema_map 哈希 | nil

    表示存储自动加密文档的集合的JSON schema的哈希值。 此选项与 :schema_map_path 互斥。

  • :schema_map_path ( string | nil )

    文件的路径包含存储自动加密文档的集合的JSON schema 。 此选项与 :schema_map 互斥。

  • :encrypted_fields_map 哈希 | nil

    将集合命名空间映射到encryptedFields。

    • 注意:如果一个集合同时存在于encryptedFieldsMap 和schemaMap 上,则会引发错误。

  • :bypass_query_analysis (Boolean | nil)

    如果为 true,则会禁用对传出命令的自动分析。

  • :crypt_shared_lib_path ( string | nil )

    用于加载 crypt 共享库的路径。 提供此选项会覆盖 libmongocrypt 的默认 crypt 共享库加载路径。

  • :crypt_shared_lib_required (Boolean | nil)

    是否需要 crypt_shared 库。 如果为“true”,则当 libmongocrypt 无法加载 crypt_shared 库时,将引发错误。

  • :explicit_encryption_only (Boolean | nil)

    此处理是否仅用于显式加密。 如果为 true,则指示 libmongocrypt 不要加载 crypt 共享库。

  • :logger 记录器

    将向其发送 libmongocrypt 日志的 Logger 对象

[查看源代码]

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
104
105
106
107
108
109
110
111
112
113
# File 'lib/ Mongo/crypt/ 处理.rb', line 67

def 初始化(kms_providers, kms_tls_options, 选项={})
  # FFI::AutoPointer 使用自定义发布策略来自动释放
  # 当此对象超出作用域时的指针
  @mongocrypt = FFI::AutoPointer.new(
    绑定.mongocrypt_new,
    绑定.方法(:mongocrypt_destroy)
  )
  绑定.kms_ctx_setopt_retry_kms(self, true)
  @kms_providers = kms_providers
  @kms_tls_options =  kms_tls_options

  也许_set_schema_map(选项)

  @encrypted_fields_map = 选项[:encrypted_fields_map]
  set_encrypted_fields_map if @encrypted_fields_map

  @bypass_query_analysis = 选项[:bypass_query_analysis]
  set_bypass_query_analysis if @bypass_query_analysis

  @crypt_shared_lib_path = 选项[:crypt_shared_lib_path]
  @explicit_encryption_only = 选项[:explicit_encryption_only]
  if @crypt_shared_lib_path
    绑定.setopt_set_crypt_shared_lib_path_override(self, @crypt_shared_lib_path)
  elsif !@bypass_query_analysis && !@explicit_encryption_only
    绑定.setopt_append_crypt_shared_lib_search_path(self, " $SYSTEM ")
  end

  @logger = 选项[:logger]
  set_logger_callback if @logger

  set_crypto_hooks

  绑定.setopt_kms_providers(self, @kms_providers.to_document)

  if @kms_providers.AWS&。空? || @kms_providers.GCP&。空? || @kms_providers.AZURE&。空?
    绑定.setopt_use_need_kms_credentials_state(self)
  end

  initialize_mongocrypt

  @crypt_shared_lib_required = !!选项[:crypt_shared_lib_required]
  if @crypt_shared_lib_required && crypt_shared_lib_version == 0
    提高 mongo::错误::CryptError.new(
      " Crypt 共享库是必需的,但根据 libmongocrypt 无法加载"
    )
  end
end

实例属性详细信息

# kms_providers对象(只读)

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


32
33
34
# File 'lib/ Mongo/crypt/ 处理.rb', line 32

def kms_providers
  @kms_providers
end

实例方法详细信息

# crypt_shared_lib_available?布尔

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

返回:

  • 布尔值
[查看源代码]

136
137
138
# File 'lib/ Mongo/crypt/ 处理.rb', line 136

def crypt_shared_lib_available?
  crypt_shared_lib_version != 0
end

# crypt_shared_lib_version对象

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

[查看源代码]

132
133
134
# File 'lib/ Mongo/crypt/ 处理.rb', line 132

def crypt_shared_lib_version
  绑定.crypt_shared_lib_version(self)
end

# kms_tls_options (提供商) ⇒哈希

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

返回KMS提供商的 TLS 选项。 如果未设立TLS 选项,则返回空哈希。

参数:

  • provider ( string )

    KSM提供商名称。

返回:

  • (哈希)

    用于连接到 KMS 提供商的 TLS 选项。

[查看源代码]

128
129
130
# File 'lib/ Mongo/crypt/ 处理.rb', line 128

def kms_tls_options(provider)
  @kms_tls_options.获取(provider, {})
end

# refFFI::Pointer

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

返回对根本的@mongocrypt对象的引用

返回:

  • ( FFI::Pointer )
[查看源代码]

118
119
120
# File 'lib/ Mongo/crypt/ 处理.rb', line 118

def ref
  @mongocrypt
end