모듈: Mongo::Crypt::Hooks Private

다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb

개요

이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

네이티브 Ruby 암호화 후크에 필요한 암호화 메서드를 구현하는 헬퍼 모듈입니다. 이러한 메서드는 C 콜백으로 FFI에 전달되고 libmongocrypt 라이브러리에서 호출됩니다.

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.aes(키, iv, 입력, 암호 해독: false, 모드: :CBC) ⇒ string

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

AES 암호화 또는 암호 해독 메서드입니다.

매개변수:

  • (string)

    32바이트 AES 암호화 키

  • iv (string)

    16바이트 AES IV

  • 입력 (string)

    암호화/복호화할 데이터

  • 암호 해독 (true | false) (기본값은 false)

    이 메서드가 해독 중인지 여부입니다. 기본값은 false이며, 이는 이 메서드가 기본값 암호화 암호를 생성함을 의미합니다.

  • 모드 (기호) (기본값: :CBC)

    AES 모드

반환합니다:

  • (string)

    출력

다음을 발생시킵니다.

  • (Exception)

    암호화 중에 발생한 예외는 호출자에게 전파됩니다.



43
44
45
46
47
48
49
50
51
52
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', 줄 43

def aes(, iv, 입력, 암호 해독: 거짓, 모드: :CBC)
  암호 = OpenSSL::암호::AES.신규(256, 모드)

  암호 해독 ? 암호.암호 해독 : 암호.암호화
  암호. = 
  암호.iv = iv
  암호.패딩 = 0

  암호화됨 = 암호.update(입력)
end

.hash_sha256(입력) ⇒ string

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

암호화 해시(SHA-256) 함수

매개변수:

  • 입력 (string)

    해시할 데이터

반환합니다:

  • (string)

다음을 발생시킵니다.

  • (Exception)

    암호화 중에 발생한 예외는 호출자에게 전파됩니다.



88
89
90
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', 줄 88

def hash_sha256(입력)
  다이제스트::SHA2.신규(256).다이제스트(입력)
end

.hmac_sha(digest_name, 키, 입력) ⇒ string

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

HMAC SHA-512 또는 SHA-256 함수

매개변수:

  • 다이제스트 이름 (string)

    다이제스트의 이름으로, 'SHA256 ' 또는 'SHA512 ' 중 하나입니다.

  • (string)

    32바이트 AES 암호화 키

  • 입력 (string)

    태그를 지정할 데이터

반환합니다:

  • (string)

다음을 발생시킵니다.

  • (Exception)

    암호화 중에 발생한 예외는 호출자에게 전파됩니다.



76
77
78
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', 줄 76

def hmac_sha(다이제스트 이름, , 입력)
  OpenSSL::HMAC.다이제스트(다이제스트 이름, , 입력)
end

.random(num_bytes) ⇒ string

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

암호화 보안 랜덤 함수

매개변수:

  • num_bytes (정수)

    요청된 임의 바이트 수

반환합니다:

  • (string)

다음을 발생시킵니다.

  • (Exception)

    암호화 중에 발생한 예외는 호출자에게 전파됩니다.



62
63
64
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', 줄 62

def 랜덤(num_bytes)
  SecureRandom.random_bytes(num_bytes)
end

.rsaes_pkcs_signature(키, 입력) ⇒ string

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

SHA-256 서명 함수가 있는 RSASSA-PKCS1-v1_5 .

매개변수:

  • (string)

    DER 형식의 PKCS#8 비공개 키(기본64 인코딩)입니다.

  • 입력 (string)

    서명할 데이터입니다.

반환합니다:

  • (string)

    서명.



99
100
101
102
103
104
105
106
107
108
109
110
111
112
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', 줄 99

def rsaes_pkcs_signature(, 입력)
  PRIVATE_KEY = 만약 BSON::환경.jruby?
    # JRuby는 DER 형식을 읽을 수 없으므로 먼저 키를 PEM으로 변환해야 합니다.
    key_pem = [
      "-----BEGIN PRIVATE KEY-----",
      Base64.strict_encode64(Base64.디코딩64()).스캔(/.{1,64}/),
      "-----END 개인 키-----",
    ].가입("\n")
    OpenSSL::PKey::RSA.신규(key_pem)
  other
    OpenSSL::PKey.읽기(Base64.디코딩64())
  end
  PRIVATE_KEY.기호(OpenSSL::다이제스트::SHA256.신규, 입력)
end