Udostępnij przez


Microsoft Information Protection SDK — pojęcia dotyczące procedury obsługi ochrony

W zestawie MIP Protection SDK mip::ProtectionHandler udostępnia funkcje do szyfrowania i odszyfrowywania chronionych strumieni i buforów, przeprowadzania kontroli dostępu, uzyskiwania licencji publikowania oraz pobierania atrybutów z chronionych informacji.

Wymagania

Utworzenie elementu ProtectionHandler do pracy z określonym plikiem wymaga:

  • Polecenie mip::MipContext
  • Polecenie mip::ProtectionProfile
  • Element mip::ProtectionEngine dodany do elementu ProtectionProfile
  • Klasa, która dziedziczy mip::ProtectionHandler::Observer.
  • Licencja mip::ProtectionDescriptor lub na publikowanie

Utwórz moduł obsługi ochrony

mip::ProtectionHandler obiekty są tworzone na potrzeby operacji ochrony lub zużycia . Procedura obsługi jest tworzona przy użyciu jednej z czterech funkcji w zależności od scenariusza.

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

Te funkcje akceptują obiekt mip::ProtectionHandler::PublishingSettings albo mip::ProtectionHandler::ConsumptionSettings.

Tworzenie programu obsługi publikowania

Utworzenie programu obsługi publikowania wymaga trzech kroków:

  1. Utwórz obiekt mip::ProtectionDescriptor.
  2. Użyj mip::ProtectionDescriptor do utworzenia mip::ProtectionHandler::PublishingSettings.
  3. Wywołaj mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync(), przekazując w nim obiekt PublishingSettings, obserwatora i obietnicę.

Tworzenie na podstawie deskryptora

Jeśli zabezpiecza się zawartość, która jeszcze nie była chroniona, lub nakłada się nową ochronę na zawartość, co oznacza, że została ona wcześniej odszyfrowana, należy skonstruować mip::ProtectionDescriptor. Po utworzeniu mip::ProtectionHandler::PublishingSettings() jest używany do zainicjowania obiektu. Wynik jest zwracany za pośrednictwem .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;

Po pomyślnym utworzeniu ProtectionHandler obiektu można wykonać operacje ochrony (szyfrowanie/odszyfrowywanie). Licencja publikowania musi zostać pobrana z programu obsługi i przechowywana z zaszyfrowaną zawartością. Licencję publikowania można pobrać, wywołując następujące wywołanie: handler->GetSerializedPublishingLicense();

Nie można odszyfrować chronionej zawartości bez odpowiedniej licencji publikowania.

Utwórz obsługę zużycia

Utworzenie programu obsługi publikowania wymaga trzech kroków:

  1. Wyodrębnij serializowaną licencję publikowania jako std::vector<uint8_t> z chronionej zawartości.
  2. Użyj szeregowej licencji publikacyjnej, aby utworzyć wystąpienie mip::ProtectionHandler::ConsumptionSettings.
  3. Wywołaj mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync(), przekazując obiekt ConsumptionSettings, obserwatora i obietnicę.

W tym przykładzie przyjęto założenie, że licencja publikowania została już odczytowana ze źródła i przechowywana w programie 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();