モジュール: Mongo::Crypt::Hooks Private

定義:
lib/mongo/crypt/hooks.rb

Overview

このモジュールはプライベート API の一部です。 このモジュールは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ネイティブ Ruby 暗号化フックに必要な暗号化メソッドを実装するヘルパー モジュール。 これらのメソッドは C コールバックとして FFI に渡され、libmongocrypt ライブラリから呼び出されます。

クラスメソッドの概要を折りたたむ

クラスメソッドの詳細

aes (key, IPv, input, Decrypt: false, Mode: :CBC) = string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

AES 暗号化または復号化メソッド。

パラメーター:

  • キー ( string )

    32バイトの AES 暗号化のキー

  • iv ( string )

    The 16バイトの AES IV

  • 入力 ( string )

    暗号化/復号化するデータ

  • 解読 true | false (デフォルトはfalse

    この方法が復号化されているかどうか。 デフォルトは false です。つまり、メソッドはデフォルトで暗号化暗号を作成します

  • モード 記号 (デフォルトは:CBC

    AES モードの操作

次の値を返します。

  • ( string )

    出力

次の値が発生します。

  • 例外

    暗号化中に発生した例外は、 呼び出し元に伝達されます。



40
41
42
43
44
45
46
47
48
49
# ファイル 'lib/mongo/crypt/hooks.rb', 行 40

デフォルト aes(キー, iv, 入力, 解読: false, モード: :CBC)
  暗号 = OpenSSL::暗号::AES.新着情報(256, モード)

  解読 ? 暗号.解読 : 暗号.暗号化
  暗号.キー = キー
  暗号.iv = iv
  暗号.パディング = 0

  暗号.update(入力)
end

hash_sha 256 (入力) = string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

暗号化ハッシュ(SHA- 256 )関数

パラメーター:

  • 入力 ( string )

    ハッシュされるデータ

次の値を返します。

  • string

次の値が発生します。

  • 例外

    暗号化中に発生した例外は、 呼び出し元に伝達されます。



85
86
87
# ファイル 'lib/mongo/crypt/hooks.rb', 行 85

デフォルト hassh_sha 256(入力)
  ダイジェスト::SHA 2.新着情報(256).ダイジェスト(入力)
end

hmac_sha (Digest_name, キー, 入力) = string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

HMAC SHA- 512または SHA- 256関数

パラメーター:

  • Digest_name ( string )

    ダイジェストの名前。"SHA256" または "SHA512" のいずれか

  • キー ( string )

    32バイトの AES 暗号化のキー

  • 入力 ( string )

    タグ付けするデータ

次の値を返します。

  • string

次の値が発生します。

  • 例外

    暗号化中に発生した例外は、 呼び出し元に伝達されます。



73
74
75
# ファイル 'lib/mongo/crypt/hooks.rb', 行 73

デフォルト hmac_sha(Digest_name, キー, 入力)
  OpenSSL::HMAC.ダイジェスト(Digest_name, キー, 入力)
end

ランダム(num_bytes)= string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

ランダム関数を保護する暗号化

パラメーター:

  • num_bytes (整数)

    要求されたランダムなバイト数

次の値を返します。

  • string

次の値が発生します。

  • 例外

    暗号化中に発生した例外は、 呼び出し元に伝達されます。



59
60
61
# ファイル 'lib/mongo/crypt/hooks.rb', 行 59

デフォルト ランダム(num_bytes)
  SecureRange.ランダム_バイト(num_bytes)
end

r saes_pkcs_signature (キー、入力)= string

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

SHA- 256署名関数を持つ RSA-PKCS 1 -v 1 _ 5 。

パラメーター:

  • キー ( string )

    Python 形式の PKCS# 8秘密キーは、基本64でエンコードされます。

  • 入力 ( string )

    署名されるデータ。

次の値を返します。

  • ( string )

    署名。



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# ファイル 'lib/mongo/crypt/hooks.rb', 行 96

デフォルト r saes_pkcs_signature(キー, 入力)
  private_key = 場合 BSON::environment.jruby?
                  #JRuby は クエリ形式を読み取れないため、まずキーを PEM に変換する必要があります。
                  key_pem = [
                    -----BEGIN 秘密キー-----,
                    base64.strict_encode 64(base64.デコード64(キー)).スキャン(/ .{1 ,64} /),
                    ' -----END 秘密キー----- ',
                  ].join(" \n ")
                  OpenSSL::PKey::RSA.新着情報(key_pem)
                else
                  OpenSSL::PKey.読み取り(base64.デコード64(キー))
                end
  private_key.記号(OpenSSL::ダイジェスト.新着情報('SHA256'), 入力)
end