模块:Mongo::Crypt::Hooks Private
- 定义于:
- lib/ Mongo/crypt/hooks.rb
Overview
该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。
一个辅助模块,用于实现原生Ruby加密钩子所需的加密方法。 这些方法作为C回调传递到 FFI,并从 libmongocrypt 库调用。
类方法摘要折叠
-
。 aes (key, iv, input,crypto: false, 模式: :CBC) ⇒ string
private
AES 加密或解密方法。
-
。 hash_sha256 (输入) ⇒ string
private
加密哈希 (SHA- 256 ) 函数。
-
。 hmac_sha (digest_name, key, input) ⇒ string
private
HMAC SHA- 512或 SHA- 256函数。
-
。随机(num_bytes) ⇒ string
private
加密安全随机函数。
-
。 rsaes_pkcs_signature (key, input) ⇒ string
private
具有 SHA- 256签名函数的 RSASSA-PKCS 1 -v 1 _ 5 。
类方法详细信息
。 aes (key, iv, input,crypto: false, 模式: :CBC) ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
AES 加密或解密方法。
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/ Mongo/crypt/hooks.rb', line 40 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 ) 函数
85 86 87 |
# File 'lib/ Mongo/crypt/hooks.rb', line 85 def hash_sha 256(输入) 摘要::SHA 2.new(256).摘要(输入) end |
。 hmac_sha (digest_name, key, input) ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
HMAC SHA- 512或 SHA- 256函数
73 74 75 |
# File 'lib/ Mongo/crypt/hooks.rb', line 73 def hmac_sha(摘要名称, key, 输入) OpenSSL::HMAC.摘要(摘要名称, key, 输入) end |
。随机(num_bytes) ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
加密安全随机函数
59 60 61 |
# File 'lib/ Mongo/crypt/hooks.rb', line 59 def 随机(num_bytes) SecureRandom.random_bytes(num_bytes) end |
。 rsaes_pkcs_signature (key, input) ⇒ string
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
具有 SHA- 256签名函数的 RSASSA-PKCS 1 -v 1 _ 5 。
96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/ Mongo/crypt/hooks.rb', line 96 def rsaes_pkcs_signature(key, 输入) PRIVATE_KEY = if BSON::environment.jRuby? # JRuby 无法读取 DER 格式,我们需要先将密钥转换为 PEM。 key_pem = [ '-----BEGIN 私钥-----', 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::摘要.new('SHA256'), 输入) end |