클래스: Mongo::Crypt::Context Private
- 상속:
-
객체
- 객체
- Mongo::Crypt::Context
- 확장자:
- 전달 가능
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/crypt/context.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
암호화 및 암호 해독을 위한 상태 머신을 관리하는 mongocrypt_ctx_t를 감싸는 래퍼입니다.
이 클래스는 서로 다른 목적으로 초기화되는 컨텍스트 간에 공유 메서드를 정의하는 슈퍼클래스입니다(예: 데이터 키 생성, 암호화, 명시적 암호화 등)
직접 알려진 하위 클래스
AutoDecryptionContext, AutoEncryptionContext, DataKeyContext, ExplicitDecryptionContext, ExplicitEncryptionContext, RewrapManyDataKeyContext
인스턴스 속성 요약 접기
- #ctx_p ⇒ 객체 읽기 전용 비공개
인스턴스 메서드 요약 접기
-
#initialize(mongocrypt_handle, io) ⇒ 컨텍스트
생성자
비공개
새 컨텍스트 객체를 만듭니다.
-
#run_state_ machine ⇒ BSON::Document
비공개
mongocrypt_ctx_t 상태 머신을 실행하고 libmongocrypt를 대신하여 모든 I/O를 처리합니다.
-
#상태 ⇒ 기호
비공개
mongocrypt_ctx_t의 상태 를 반환합니다.
생성자 세부 정보
#initialize(mongocrypt_handle, io) ⇒ 컨텍스트
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
새 컨텍스트 객체 만들기
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# 파일 'build/ruby-driver-v2.19/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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
57 58 59 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', 줄 57 def ctx_p @ctx_p end |
인스턴스 메서드 세부 정보
#run_state_ machine ⇒ BSON::Document
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocrypt_ctx_t 상태 머신을 실행하고 libmongocrypt를 대신하여 모든 I/O를 처리합니다.
이 메서드는 현재 단위 테스트를 거치지 않습니다. spec/integration/explicit_encryption_spec.rb에서 통합 테스트를 거쳤습니다.
78 79 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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', 줄 78 def run_state_ machine 동안 true case 상태 when :error 바인딩.check_ctx_status(self) when :ready # 상태 머신을 마무리하고 결과를 BSON::Document로 반환합니다. 반환 바인딩.ctx_finalize(self) when :done 반환 nil when :need_mongo_keys 필터 = 바인딩.ctx_mongo_op(self) @encryption_io.find_keys(필터).각 do |키| mongocrypt_피드(키) 만약 키 end mongocrypt_done when :need_mongo_collinfo 필터 = 바인딩.ctx_mongo_op(self) 결과 = @encryption_io.collection_info(@db_name, 필터) mongocrypt_피드(결과) 만약 결과 mongocrypt_done when :need_mongo_markings cmd = 바인딩.ctx_mongo_op(self) 결과 = @encryption_io.mark_command(cmd) mongocrypt_피드(결과) mongocrypt_done when :need_kms 동안 kms_context = 바인딩.ctx_next_kms_ctx(self) do provider = 바인딩.kms_ctx_get_kms_provider(kms_context) = @mongocrypt_handle.(provider) @encryption_io.Feed_kms(kms_context, ) end 바인딩.ctx_kms_done(self) when :need_kms_credentials 바인딩.ctx_provide_kms_providers( self, retrieve_kms_credentials.to_document ) other 올리다 오류::CRYPTError.신규( "State #{상태} 는 Mongo::Crypt::Context에서 지원되지 않습니다. ) end end end |
#상태 ⇒ 기호
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
mongocrypt_ctx_t의 상태 를 반환합니다.
62 63 64 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', 줄 62 def 상태 바인딩.mongocrypt_ctx_state(@ctx_p) end |