클래스: Mongo::Crypt::Context Private
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
암호화 및 암호 해독을 위한 상태 머신을 관리하는 mongocrypt_ctx_t를 감싸는 래퍼입니다.
이 클래스는 서로 다른 목적으로 초기화되는 컨텍스트 간에 공유 메서드를 정의하는 슈퍼클래스입니다(예: 데이터 키 생성, 암호화, 명시적 암호화 등)
직접 알려진 하위 클래스
AutoDecryptionContext, AutoEncryptionContext, DataKeyContext, ExplicitDecryptionContext, ExplicitEncryptionContext, RewrapManyDataKeyContext
인스턴스 속성 요약 접기
- #ctx_p ⇒ 객체 읽기 전용 비공개
인스턴스 메서드 요약 접기
-
#initialize(mongocrypt_handle, io) ⇒ 컨텍스트
생성자
비공개
새 컨텍스트 객체를 만듭니다.
-
#run_state_ machine(timeout_holder) ⇒ BSON::Document
비공개
mongocrypt_ctx_t 상태 머신을 실행하고 대신 모든 I/O를 처리합니다.
-
#상태 ⇒ 기호
비공개
mongocrypt_ctx_t의 상태 를 반환합니다.
생성자 세부 정보
#initialize(mongocrypt_handle, io) ⇒ 컨텍스트
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
새 컨텍스트 객체 만들기
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 파일 'lib/ Mongo/crypt/context.rb', 줄 41 def 초기화(mongocrypt_handle, io) @mongocrypt_handle = mongocrypt_handle # 이상적으로는 이 수준의 API 는 포인터를 전달하지 않습니다. # 객체 간 참조이므로 이 메서드 서명은 변경될 수 있습니다. # FFI::AutoPointer는 사용자 지정 출시하다 전략을 사용하여 # 이 객체 가 범위를 벗어나면 포인터 @ctx_p = FFI::자동 포인터.신규( 바인딩.mongocrypt_ctx_new(@mongocrypt_handle.ref), 바인딩.메서드(:mongocrypt_ctx_destory) ) @encryption_io = io @cached_azure_token = nil end |
인스턴스 속성 세부 정보
#ctx_p ⇒ 객체 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
56 57 58 |
# 파일 'lib/ Mongo/crypt/context.rb', 줄 56 def ctx_p @ctx_p end |
인스턴스 메서드 세부 정보
#run_state_ machine(timeout_holder) ⇒ BSON::Document
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocrypt_ctx_t 상태 머신을 실행하고 대신 모든 I/O를 처리합니다.
이 메서드는 현재 단위 테스트를 거치지 않습니다. spec/integration/explicit_encryption_spec.rb에서 통합 테스트를 거쳤습니다.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# 파일 'lib/ Mongo/crypt/context.rb', 줄 80 def run_state_ machine(timeout_holder) 동안 true timeout_ms = timeout_holder.잔여 시간 초과_ms! case 상태 when :error 바인딩.check_ctx_status(self) when :ready # 상태 머신을 마무리하고 결과를 BSON::Document로 반환합니다. 반환 바인딩.ctx_finalize(self) when :done 반환 nil when :need_mongo_keys Provide_keys(timeout_ms) when :need_mongo_collinfo Provide_collection_info(timeout_ms) when :need_mongo_markings Provide_markings(timeout_ms) when :need_kms Feed_kms when :need_kms_credentials 바인딩.ctx_provide_kms_providers( self, retrieve_kms_credentials(timeout_holder).to_document ) other 올리다 오류::CRYPTError.신규( "State #{상태} 는 Mongo::Crypt::Context에서 지원되지 않습니다. ) end end end |
#상태 ⇒ 기호
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocrypt_ctx_t의 상태 를 반환합니다.
61 62 63 |
# 파일 'lib/ Mongo/crypt/context.rb', 줄 61 def 상태 바인딩.mongocrypt_ctx_state(@ctx_p) end |