Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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::ProtectionEnginedodany do elementuProtectionProfile - Klasa, która dziedziczy
mip::ProtectionHandler::Observer. - Licencja
mip::ProtectionDescriptorlub 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:
- Utwórz obiekt
mip::ProtectionDescriptor. - Użyj
mip::ProtectionDescriptordo utworzeniamip::ProtectionHandler::PublishingSettings. - Wywołaj
mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync(), przekazując w nim obiektPublishingSettings, 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:
- Wyodrębnij serializowaną licencję publikowania jako
std::vector<uint8_t>z chronionej zawartości. - Użyj szeregowej licencji publikacyjnej, aby utworzyć wystąpienie
mip::ProtectionHandler::ConsumptionSettings. - Wywołaj
mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync(), przekazując obiektConsumptionSettings, 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();