Module: Mongo::Crypt::Hooks Private
- Defined in:
- 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.
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mongo/crypt/hooks.rb', line 39 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
84 85 86 |
# File 'lib/mongo/crypt/hooks.rb', line 84 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
72 73 74 |
# File 'lib/mongo/crypt/hooks.rb', line 72 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
58 59 60 |
# File 'lib/mongo/crypt/hooks.rb', line 58 def random(num_bytes) SecureRandom.random_bytes(num_bytes) end |