다음을 통해 공유


Microsoft Information Protection SDK - 보호 처리기 개념

MIP 보호 SDK에서 mip::ProtectionHandler는 보호된 스트림 및 버퍼를 암호화 및 해독하고, 액세스 확인을 수행하며, 게시 라이선스를 가져오고, 보호된 정보에서 속성을 가져오는 기능을 노출합니다.

요구 사항

ProtectionHandler 특정 파일로 작업하려면 다음이 필요합니다.

  • mip::MipContext
  • mip::ProtectionProfile
  • A가 mip::ProtectionEngine 에 추가됨 ProtectionProfile
  • mip::ProtectionHandler::Observer를 상속하는 클래스입니다.
  • A mip::ProtectionDescriptor 또는 게시 라이선스

보호 처리기 만들기

mip::ProtectionHandler개체는 보호 또는 소비 작업을 위해 생성됩니다. 처리기는 시나리오에 따라 네 가지 함수 중 하나를 사용하여 생성됩니다.

  • mip::ProtectionEngine->CreateProtectionHandlerForConsumptionAsync()
  • mip::ProtectionEngine->CreateProtectionHandlerForConsumption()
  • mip::ProtectionEngine->CreateProtectionHandlerForPublishingAsync()
  • mip::ProtectionEngine->CreateProtectionHandlerForPublishing()

이러한 함수는 a 또는 mip::ProtectionHandler::ConsumptionSettings 개체를 mip::ProtectionHandler::PublishingSettings 허용합니다.

게시 처리기 만들기

게시 처리기를 만들려면 다음 세 단계가 필요합니다.

  1. mip::ProtectionDescriptor 개체를 만듭니다.
  2. mip::ProtectionDescriptor 사용하여 인스턴스화합니다 mip::ProtectionHandler::PublishingSettings.
  3. 개체, 관찰자 및 약속 전달 PublishingSettings 을 호출 mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync() 합니다.

설명자에서 만들기

아직 보호되지 않은 콘텐츠를 보호하거나 새 보호를 콘텐츠에 적용할 때 암호 해독 mip::ProtectionDescriptor 되었음을 의미하는 경우 생성해야 합니다. 생성되면 개체를 인스턴스화하는 mip::ProtectionHandler::PublishingSettings() 데 사용됩니다. 결과는 .를 통해 반환됩니다 mip::ProtectionHandler::Observer.

// Create the protection descriptor, passing in a templateId. 
auto descriptorBuilder = mip::ProtectionDescriptorBuilder::CreateFromTemplate(protectionOptions.templateId);
std::shared_ptr<mip::ProtectionDescriptor> descriptor = descriptorBuilder->Build();

// Define the handler promise, future, and observer.
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<ProtectionHandler>>>();
auto handlerFuture = handlerPromise->get_future();
auto handlerObserver = std::make_shared<ProtectionHandlerObserverImpl>();

// Create the PublishingSettings object using the previously-created descriptor as input.
mip::ProtectionHandler::PublishingSettings publishingSettings = mip::ProtectionHandler::PublishingSettings(descriptor);

// Create/get the publishing handler from the publishing settings, observer, and promise.
mEngine->CreateProtectionHandlerForPublishingAsync(publishingSettings, handlerObserver, handlerPromise);
auto handler = handlerFuture.get();
return handler;

개체를 ProtectionHandler 성공적으로 만든 후 보호 작업(암호화/암호 해독)을 수행할 수 있습니다. 게시 라이선스처리기에서 가져와 암호화된 콘텐츠와 함께 저장해야 합니다. 게시 라이선스는 다음을 호출하여 가져올 수 있습니다. handler->GetSerializedPublishingLicense();

해당 게시 라이선스 가 없는 보호된 콘텐츠는 암호 해독할 수 없습니다.

소비 처리기 만들기

게시 처리기를 만들려면 다음 세 단계가 필요합니다.

  1. 보호된 콘텐츠에서 직렬화된 게시 라이선스 std::vector<uint8_t> 를 추출합니다.
  2. serialize된 게시 라이선스를 사용하여 인스턴스화합니다 mip::ProtectionHandler::ConsumptionSettings.
  3. 개체, 관찰자 및 약속 전달 ConsumptionSettings 을 호출 mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync() 합니다.

이 예제에서는 게시 라이선스가 이미 일부 원본에서 읽고 저장되어 있다고 std::vector<uint8_t> serializedPublishingLicense가정합니다.

//TODO: Implement GetPublishingLicense()
//Snip implies that function reads PL from source file, database, stream, etc.
std::vector<uint8_t> serializedPublishingLicense = GetPublishingLicense(filePath);

// Define the handler promise, future, and observer.
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<ProtectionHandler>>>();
auto handlerFuture = handlerPromise->get_future();
shared_ptr<ProtectionHandlerObserverImpl> handlerObserver = std::make_shared<ProtectionHandlerObserverImpl>();

// Create the consumption settings object from the publishing license.
mip::ProtectionHandler::ConsumptionSettings consumptionSettings = mip::ProtectionHandler::ConsumptionSettings(serializedPublishingLicense);

// Create/get the publishing handler from the publishing settings, observer, and promise.
mEngine->CreateProtectionHandlerForConsumptionAsync(consumptionSettings, handlerObserver, handlerPromise);
auto handler = handlerFuture.get();