Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В пакете SDK защиты mip::ProtectionHandler MIP предоставляются функции для шифрования и расшифровки защищенных потоков и буферов, выполнения проверок доступа, получения лицензии на публикацию и получения атрибутов из защищенной информации.
Требования
Для создания ProtectionHandler, чтобы работать с определенным файлом, требуется:
- Один
mip::MipContext -
mip::ProtectionProfile - Добавлено
mip::ProtectionEngineвProtectionProfile - Класс, наследующий
mip::ProtectionHandler::Observer. - Лицензия на публикацию
mip::ProtectionDescriptor
Создание обработчика защиты
mip::ProtectionHandler объекты создаются для операций защиты или потребления . Обработчик создается с помощью одной из четырех функций в зависимости от сценария.
mip::ProtectionEngine->CreateProtectionHandlerForConsumptionAsync()mip::ProtectionEngine->CreateProtectionHandlerForConsumption()mip::ProtectionEngine->CreateProtectionHandlerForPublishingAsync()mip::ProtectionEngine->CreateProtectionHandlerForPublishing()
Эти функции принимают либо mip::ProtectionHandler::PublishingSettings, либо mip::ProtectionHandler::ConsumptionSettings объект.
Создание обработчика публикации
Для создания обработчика публикации требуется три шага.
- Создайте объект
mip::ProtectionDescriptor. - Используйте
mip::ProtectionDescriptorчтобы создать экземплярmip::ProtectionHandler::PublishingSettings. - Вызовите
mip::ProtectionEngine::CreateProtectionHandlerForPublishingAsync(), передав объектPublishingSettings, наблюдателя и обещание.
Создать из дескриптора
Если требуется защитить содержимое, которое еще не было защищено, или применить к содержимому новую защиту, что подразумевает, что оно было расшифровано, необходимо создать mip::ProtectionDescriptor. После создания он используется для создания экземпляра mip::ProtectionHandler::PublishingSettings() объекта. Результат возвращается через 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;
После успешного ProtectionHandler создания объекта можно выполнить операции защиты (шифрование и расшифровка).
Лицензия на публикацию должна быть получена из обработчика и сохранена с зашифрованным содержимым. Лицензия на публикацию может быть получена путем вызова: handler->GetSerializedPublishingLicense();
Защищенное содержимое без соответствующей лицензии на публикацию не может быть расшифровывается.
Создание обработчика потребления
Для создания обработчика публикации требуется три шага.
- Извлеките сериализованную лицензию на публикацию из
std::vector<uint8_t>защищенного содержимого. - Используйте сериализованную лицензию публикации для инициализации
mip::ProtectionHandler::ConsumptionSettings. - Вызовите
mip::ProtectionEngine::CreateProtectionHandlerForConsumptionAsync(), передав объектConsumptionSettings, наблюдателя и обещание.
В этом примере предполагается, что лицензия на публикацию уже была считана из некоторого источника и находится в 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();