类:Mongo::Crypt::Handle Private

继承:
对象
  • 对象
显示全部
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/crypt/handle.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 ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第67行

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

  @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 ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第32行

def kms_providers
  @kms_providers
end

实例方法详细信息

# crypt_shared_lib_available?布尔

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

返回:

  • 布尔值


136
137
138
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第136行

def crypt_shared_lib_available?
  crypt_shared_lib_version != 0
end

# crypt_shared_lib_version对象

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



132
133
134
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第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 ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第128行

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

# refFFI::Pointer

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

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

返回:

  • ( FFI::Pointer )


118
119
120
# File ' 构建/ruby-driver-v2.19/lib/ mongo /crypt/ 处理.rb', 第118行

def ref
  @mongocrypt
end