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 elementuProtectionProfile
- Klasa, która dziedziczy
mip::ProtectionHandler::Observer
element . 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:
- Utwórz
mip::ProtectionDescriptor
obiekt. - Użyj elementu ,
mip::ProtectionDescriptor
aby utworzyćmip::ProtectionHandler::PublishingSettings
wystąpienie elementu . - Wywołaj
mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync()
przekazywanie obiektu, obserwatoraPublishingSettings
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:
- Wyodrębnij serializowaną licencję publikowania jako
std::vector<uint8_t>
z chronionej zawartości. - Użyj serializowanej licencji publikowania, aby utworzyć wystąpienie
mip::ProtectionHandler::ConsumptionSettings
programu . - Wywołaj
mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync()
przekazywanie obiektu, obserwatoraConsumptionSettings
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();