模块:Mongo::Crypt::Hooks Private

定义于:
build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb

Overview

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

一个辅助模块,用于实现原生Ruby加密钩子所需的加密方法。 这些方法作为C回调传递到 FFI,并从 libmongocrypt 库调用。

类方法摘要折叠

类方法详细信息

aes (key, iv, input,crypto: false, 模式: :CBC) ⇒ string

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

AES 加密或解密方法。

参数:

  • key ( string )

    32字节 AES加密密钥

  • iv ( string )

    16字节 AES IV

  • 输入 ( string )

    要加密/解密的数据

  • 解密 ( true | false ) (默认为: false

    此方法是否正在解密。 默认为 false,这意味着该方法将默认创建加密密码

  • 模式 符号 (默认为: :CBC

    AES 操作模式

返回:

  • ( string )

    输出

引发:

  • 例外

    加密期间引发的异常会传播给调用者。



43
44
45
46
47
48
49
50
51
52
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb', 第43行

def aes(key, iv, 输入, 解密: false, 模式: :CBC)
  cipher = OpenSSL::Cipher::AES.new(256, 模式)

  解密 ? cipher.解密 : cipher.加密
  cipher.key = key
  cipher.iv = iv
  cipher.填充 = 0

  加密 = cipher.update(输入)
end

hash_sha256 (输入) ⇒ string

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

加密哈希 (SHA- 256 ) 函数

参数:

  • 输入 ( string )

    要进行哈希处理的数据

返回:

  • string

引发:

  • 例外

    加密期间引发的异常会传播给调用者。



88
89
90
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb', 第88行

def hash_sha 256(输入)
  摘要::SHA 2.new(256).摘要(输入)
end

hmac_sha (digest_name, key, input) ⇒ string

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

HMAC SHA- 512或 SHA- 256函数

参数:

  • 摘要名称 ( string )

    摘要的名称,可以是“SHA 256 ”或“SHA 512 ”

  • key ( string )

    32字节 AES加密密钥

  • 输入 ( string )

    要标记的数据

返回:

  • string

引发:

  • 例外

    加密期间引发的异常会传播给调用者。



76
77
78
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb', 第76行

def hmac_sha(摘要名称, key, 输入)
  OpenSSL::HMAC.摘要(摘要名称, key, 输入)
end

随机(num_bytes) ⇒ string

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

加密安全随机函数

参数:

  • num_bytes ( Integer )

    请求的随机字节数

返回:

  • string

引发:

  • 例外

    加密期间引发的异常会传播给调用者。



62
63
64
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb', 第62行

def 随机(num_bytes)
  SecureRandom.random_bytes(num_bytes)
end

rsaes_pkcs_signature (key, input) ⇒ string

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

具有 SHA- 256签名函数的 RSASSA-PKCS 1 -v 1 _ 5 。

参数:

  • key ( string )

    DER 格式的 PKCS# 8私钥,采用基本64编码。

  • 输入 ( string )

    要签名的数据。

返回:

  • ( string )

    签名。



99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/hooks.rb', 第99行

def rsaes_pkcs_signature(key, 输入)
  PRIVATE_KEY = if BSON::environment.jRuby?
    # JRuby 无法读取 DER 格式,我们需要先将密钥转换为 PEM。
    key_pem = [
      " -----BEGIN PRIVATE KEY----- ",
      Base64.strict_encode 64(Base64.解码64(key)).扫描(/ .{1 , 64} /),
      " -----END PRIVATE KEY----- ",
    ].连接 (JOIN)(" \n ")
    OpenSSL::PKey::RSA.new(key_pem)
  else
    OpenSSL::PKey.(Base64.解码64(key))
  end
  PRIVATE_KEY.标志(OpenSSL::摘要::SHA256.new, 输入)
end