Module: Mongo::Crypt::Hooks Private
- Defined in:
- build/ruby-driver-v2.17/lib/mongo/crypt/hooks.rb
Overview
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
A helper module that implements cryptography methods required for native Ruby crypto hooks. These methods are passed into FFI as C callbacks and called from the libmongocrypt library.
Class Method Summary collapse
-
.aes(key, iv, input, decrypt: false) ⇒ String
private
An AES encrypt or decrypt method.
-
.hash_sha256(input) ⇒ String
private
A crypto hash (SHA-256) function.
-
.hmac_sha(digest_name, key, input) ⇒ String
private
An HMAC SHA-512 or SHA-256 function.
-
.random(num_bytes) ⇒ String
private
Crypto secure random function.
Class Method Details
.aes(key, iv, input, decrypt: false) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
An AES encrypt or decrypt method.
42 43 44 45 46 47 48 49 50 51 |
# File 'build/ruby-driver-v2.17/lib/mongo/crypt/hooks.rb', line 42 def aes(key, iv, input, decrypt: false) cipher = OpenSSL::Cipher::AES.new(256, :CBC) decrypt ? cipher.decrypt : cipher.encrypt cipher.key = key cipher.iv = iv cipher.padding = 0 encrypted = cipher.update(input) end |
.hash_sha256(input) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A crypto hash (SHA-256) function
87 88 89 |
# File 'build/ruby-driver-v2.17/lib/mongo/crypt/hooks.rb', line 87 def hash_sha256(input) Digest::SHA2.new(256).digest(input) end |
.hmac_sha(digest_name, key, input) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
An HMAC SHA-512 or SHA-256 function
75 76 77 |
# File 'build/ruby-driver-v2.17/lib/mongo/crypt/hooks.rb', line 75 def hmac_sha(digest_name, key, input) OpenSSL::HMAC.digest(digest_name, key, input) end |
.random(num_bytes) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Crypto secure random function
61 62 63 |
# File 'build/ruby-driver-v2.17/lib/mongo/crypt/hooks.rb', line 61 def random(num_bytes) SecureRandom.random_bytes(num_bytes) end |