Microsoft Information Protection SDK — koncepcje programu obsługi ochrony
Zestaw SDK ochrony przed zabezpieczeniami MIP udostępnia funkcje do szyfrowania i odszyfrowywania chronionych strumieni i buforów, sprawdzania dostępu, uzyskiwania licencji publikowania i uzyskiwania atrybutów z chronionych mip::ProtectionHandler informacji.
Wymagania
Do utworzenia ProtectionHandler pliku do pracy z określonym plikiem są wymagane:
- A
mip::MipContext - A
mip::ProtectionProfile - A
mip::ProtectionEngineadded to theProtectionProfile - Klasa dziedzicząca
mip::ProtectionHandler::Observer. - Licencja
mip::ProtectionDescriptorna publikację lub licencję
Tworzenie programu obsługi ochrony
mip::ProtectionHandler Obiekty są skonstruowane przez udostępnienie albo licencji publikowania ProtectionDescriptor szeregowego, albo przez jedną z dwóch ProtectionEngine funkcji. Deskryptor ochrony musi zostać wygenerowany w celu ochrony informacji w formacie zwykłego tekstu, które nie mają jeszcze licencji publikowania. Licencja publikowania będzie używana podczas odszyfrowywania już chronionej zawartości lub ochrony zawartości, w której licencja została już skonstruowana. Zawartości chronionej nie można odszyfrować bez skojarzonej licencji publikowania.
mip::ProtectionEngine udostępnia dwie funkcje służące do ProtectionHandler tworzenia Parametry są takie same, z wyjątkiem programu obsługi lub licencji publikowania jako pierwszego parametru.
mip::ProtectionEngine::CreateProtectionHandlerFromDescriptorAsync- Wymaga
ProtectionDescriptorpierwszego parametru.
- Wymaga
mip::ProtectionEngine::CreateProtectionHandlerFromPublishingLicenseAsync- Wymaga licencji publikowania szeregowego,
std::vector<unint8_t>przechowywanej jako pierwszy parametr.
- Wymaga licencji publikowania szeregowego,
Tworzenie z deskryptora
Jeśli chronienie zawartości, która nie jest jeszcze chroniona, lub zastosowanie nowej ochrony do zawartości, co oznacza, że została odszyfrowana, musi mip::ProtectionDescriptor zostać skonstruowana. Po skonstruowaniu jest przekazywana mip::ProtectionEngine::CreateProtectionHandlerFromDescriptorAsync() do, a wynik jest zwracany za pośrednictwem mip::ProtectionHandler::Observer .
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<ProtectionHandler>>>();
auto handlerFuture = handlerPromise->get_future();
auto observer = std::make_shared<ProtectionHandlerObserverImpl>();
//Refer to ProtectionDescriptor docs for details on creating the descriptor
auto descriptor = CreateProtectionDescriptor(); //Stub function
mEngine->CreateProtectionHandlerFromDescriptorAsync(
descriptor,
mip::ProtectionHandlerCreationOptions::None,
observer,
handlerPromise);
auto handler = handlerFuture.get();
Po pomyślnym utworzeniu obiektu można wykonywać operacje na ProtectionHandler plikach (get/set/delete/commit).
Tworzenie z licencji publikowania
W tym przykładzie przyjęto założenie, że licencja publikowania została już odczytana z części źródłowej i zapisana w 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);
auto handlerPromise = std::make_shared<std::promise<std::shared_ptr<ProtectionHandler>>>();
auto handlerFuture = handlerPromise->get_future();
shared_ptr<ProtectionHandlerObserverImpl> handleObserver =
std::make_shared<ProtectionHandlerObserverImpl>();
mEngine->CreateProtectionHandlerFromPublishingLicenseAsync(
serializedPublishingLicense,
mip::ProtectionHandlerCreationOptions::None,
handleObserver,
handlerPromise);
auto handler = handlerFuture.get();