Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In de MIP Protection SDK mip::ProtectionHandler worden de functies weergegeven voor het versleutelen en ontsleutelen van beveiligde streams en buffers, het uitvoeren van toegangscontroles, het verkrijgen van de publicatielicentie en het ophalen van kenmerken van de beveiligde informatie.
Behoeften
Voor het maken van een ProtectionHandler bestand om te kunnen werken met een specifiek bestand is het volgende vereist:
- Een
mip::MipContext - Een
mip::ProtectionProfile - Een
mip::ProtectionEngineis toegevoegd aan deProtectionProfile - Een klasse die wordt overgenomen
mip::ProtectionHandler::Observer - Een
mip::ProtectionDescriptorof publicatielicentie
Een beveiligingshandler maken
mip::ProtectionHandler objecten worden gebouwd voor beveiligingsbewerkingen of verbruiksbewerkingen. De handler wordt gemaakt met behulp van een van de vier functies, afhankelijk van het scenario.
mip::ProtectionEngine->CreateProtectionHandlerForConsumptionAsync()mip::ProtectionEngine->CreateProtectionHandlerForConsumption()mip::ProtectionEngine->CreateProtectionHandlerForPublishingAsync()mip::ProtectionEngine->CreateProtectionHandlerForPublishing()
Deze functies accepteren een mip::ProtectionHandler::PublishingSettings of mip::ProtectionHandler::ConsumptionSettings object.
Een publicatiehandler maken
Voor het maken van een publicatie-handler zijn drie stappen vereist:
- Maak een
mip::ProtectionDescriptorobject. - Gebruik de
mip::ProtectionDescriptorfunctie om te instantiërenmip::ProtectionHandler::PublishingSettings. - Roep
mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync()aan met hetPublishingSettingsobject, de waarnemer en de belofte.
Maken op basis van descriptor
Als u inhoud wilt beveiligen die nog niet is beveiligd of als u nieuwe beveiliging wilt toepassen op ontsleutelde inhoud, maakt u een mip::ProtectionDescriptor. Gebruik dit om het mip::ProtectionHandler::PublishingSettings() object te instantiëren. De SDK retourneert het resultaat via de 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<mip::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;
Nadat u het ProtectionHandler object hebt gemaakt, kunt u beveiligingsbewerkingen uitvoeren voor versleuteling en ontsleuteling. Haal de publicatielicentie op uit de handler en sla deze op met de versleutelde inhoud. Als u de publicatielicentie wilt ophalen, belt u handler->GetSerializedPublishingLicense();.
Zonder de bijbehorende publicatielicentie kunt u beveiligde inhoud niet ontsleutelen .
Maak de verbruikshandler
Voor het maken van een verbruikshandler zijn drie stappen vereist:
- Extraheer een geserialiseerde publicatielicentie als
std::vector<uint8_t>vanuit de beveiligde inhoud. - Gebruik de geserialiseerde publicatielicentie om een instantie te maken
mip::ProtectionHandler::ConsumptionSettings. - Roep
mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync()aan met hetConsumptionSettingsobject, de waarnemer en de belofte.
In dit voorbeeld wordt ervan uitgegaan dat de publicatielicentie al is gelezen uit een bepaalde bron en is opgeslagen in 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<mip::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();
Volgende stappen
- Zie het C++-voorbeeld van de MIP Protection SDK op GitHub voor een voorbeeld.