Udostępnij za pośrednictwem


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

W zestawie MIP Protection SDK mip::ProtectionHandler uwidacznia funkcje szyfrowania i odszyfrowywania chronionych strumieni i buforów, przeprowadzania kontroli dostępu, uzyskiwania licencji publikowania i 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::Observerelement .
  • mip::ProtectionDescriptor Licencja na publikowanie lub

Tworzenie procedury 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ą mip::ProtectionHandler::PublishingSettings obiekt lub mip::ProtectionHandler::ConsumptionSettings .

Tworzenie programu obsługi publikowania

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

  1. Utwórz mip::ProtectionDescriptor obiekt.
  2. Użyj elementu , mip::ProtectionDescriptor aby utworzyć mip::ProtectionHandler::PublishingSettingswystąpienie elementu .
  3. Wywołaj mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync() przekazywanie obiektu, obserwatora PublishingSettings i obietnicy.

Tworzenie na podstawie deskryptora

Jeśli ochrona zawartości, która nie została jeszcze chroniona lub zastosowanie nowej ochrony do zawartości, co oznacza, że została odszyfrowana, mip::ProtectionDescriptor należy skonstruować. Po utworzeniu mip::ProtectionHandler::PublishingSettings() jest używany do tworzenia wystąpienia 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.

Tworzenie programu obsługi uż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 serializowanej licencji publikowania, aby utworzyć wystąpienie mip::ProtectionHandler::ConsumptionSettingsprogramu .
  3. Wywołaj mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync() przekazywanie obiektu, obserwatora ConsumptionSettings i obietnicy.

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();