/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace mediapackagev2 { namespace Model { /** *

The parameters for the SPEKE key provider.

See Also:

AWS * API Reference

*/ class SpekeKeyProvider { public: AWS_MEDIAPACKAGEV2_API SpekeKeyProvider(); AWS_MEDIAPACKAGEV2_API SpekeKeyProvider(Aws::Utils::Json::JsonView jsonValue); AWS_MEDIAPACKAGEV2_API SpekeKeyProvider& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_MEDIAPACKAGEV2_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline const EncryptionContractConfiguration& GetEncryptionContractConfiguration() const{ return m_encryptionContractConfiguration; } /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline bool EncryptionContractConfigurationHasBeenSet() const { return m_encryptionContractConfigurationHasBeenSet; } /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline void SetEncryptionContractConfiguration(const EncryptionContractConfiguration& value) { m_encryptionContractConfigurationHasBeenSet = true; m_encryptionContractConfiguration = value; } /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline void SetEncryptionContractConfiguration(EncryptionContractConfiguration&& value) { m_encryptionContractConfigurationHasBeenSet = true; m_encryptionContractConfiguration = std::move(value); } /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline SpekeKeyProvider& WithEncryptionContractConfiguration(const EncryptionContractConfiguration& value) { SetEncryptionContractConfiguration(value); return *this;} /** *

Configure one or more content encryption keys for your endpoints that use * SPEKE Version 2.0. The encryption contract defines which content keys are used * to encrypt the audio and video tracks in your stream. To configure the * encryption contract, specify which audio and video encryption presets to * use.

*/ inline SpekeKeyProvider& WithEncryptionContractConfiguration(EncryptionContractConfiguration&& value) { SetEncryptionContractConfiguration(std::move(value)); return *this;} /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline const Aws::String& GetResourceId() const{ return m_resourceId; } /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline bool ResourceIdHasBeenSet() const { return m_resourceIdHasBeenSet; } /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline void SetResourceId(const Aws::String& value) { m_resourceIdHasBeenSet = true; m_resourceId = value; } /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline void SetResourceId(Aws::String&& value) { m_resourceIdHasBeenSet = true; m_resourceId = std::move(value); } /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline void SetResourceId(const char* value) { m_resourceIdHasBeenSet = true; m_resourceId.assign(value); } /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline SpekeKeyProvider& WithResourceId(const Aws::String& value) { SetResourceId(value); return *this;} /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline SpekeKeyProvider& WithResourceId(Aws::String&& value) { SetResourceId(std::move(value)); return *this;} /** *

The unique identifier for the content. The service sends this to the key * server to identify the current endpoint. How unique you make this depends on how * fine-grained you want access controls to be. The service does not permit you to * use the same ID for two simultaneous encryption processes. The resource ID is * also known as the content ID.

The following example shows a resource ID: * MovieNight20171126093045

*/ inline SpekeKeyProvider& WithResourceId(const char* value) { SetResourceId(value); return *this;} /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline const Aws::Vector& GetDrmSystems() const{ return m_drmSystems; } /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline bool DrmSystemsHasBeenSet() const { return m_drmSystemsHasBeenSet; } /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline void SetDrmSystems(const Aws::Vector& value) { m_drmSystemsHasBeenSet = true; m_drmSystems = value; } /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline void SetDrmSystems(Aws::Vector&& value) { m_drmSystemsHasBeenSet = true; m_drmSystems = std::move(value); } /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline SpekeKeyProvider& WithDrmSystems(const Aws::Vector& value) { SetDrmSystems(value); return *this;} /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline SpekeKeyProvider& WithDrmSystems(Aws::Vector&& value) { SetDrmSystems(std::move(value)); return *this;} /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline SpekeKeyProvider& AddDrmSystems(const DrmSystem& value) { m_drmSystemsHasBeenSet = true; m_drmSystems.push_back(value); return *this; } /** *

The DRM solution provider you're using to protect your content during * distribution.

*/ inline SpekeKeyProvider& AddDrmSystems(DrmSystem&& value) { m_drmSystemsHasBeenSet = true; m_drmSystems.push_back(std::move(value)); return *this; } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline const Aws::String& GetRoleArn() const{ return m_roleArn; } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline bool RoleArnHasBeenSet() const { return m_roleArnHasBeenSet; } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline void SetRoleArn(const Aws::String& value) { m_roleArnHasBeenSet = true; m_roleArn = value; } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline void SetRoleArn(Aws::String&& value) { m_roleArnHasBeenSet = true; m_roleArn = std::move(value); } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline void SetRoleArn(const char* value) { m_roleArnHasBeenSet = true; m_roleArn.assign(value); } /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline SpekeKeyProvider& WithRoleArn(const Aws::String& value) { SetRoleArn(value); return *this;} /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline SpekeKeyProvider& WithRoleArn(Aws::String&& value) { SetRoleArn(std::move(value)); return *this;} /** *

The ARN for the IAM role granted by the key provider that provides access to * the key provider API. This role must have a trust policy that allows * MediaPackage to assume the role, and it must have a sufficient permissions * policy to allow access to the specific key retrieval URL. Get this from your DRM * solution provider.

Valid format: * arn:aws:iam::{accountID}:role/{name}. The following example shows a * role ARN: arn:aws:iam::444455556666:role/SpekeAccess

*/ inline SpekeKeyProvider& WithRoleArn(const char* value) { SetRoleArn(value); return *this;} /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline const Aws::String& GetUrl() const{ return m_url; } /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline bool UrlHasBeenSet() const { return m_urlHasBeenSet; } /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline void SetUrl(const Aws::String& value) { m_urlHasBeenSet = true; m_url = value; } /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline void SetUrl(Aws::String&& value) { m_urlHasBeenSet = true; m_url = std::move(value); } /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline void SetUrl(const char* value) { m_urlHasBeenSet = true; m_url.assign(value); } /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline SpekeKeyProvider& WithUrl(const Aws::String& value) { SetUrl(value); return *this;} /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline SpekeKeyProvider& WithUrl(Aws::String&& value) { SetUrl(std::move(value)); return *this;} /** *

The URL of the API Gateway proxy that you set up to talk to your key server. * The API Gateway proxy must reside in the same AWS Region as MediaPackage and * must start with https://.

The following example shows a URL: * https://1wm2dx1f33.execute-api.us-west-2.amazonaws.com/SpekeSample/copyProtection *

*/ inline SpekeKeyProvider& WithUrl(const char* value) { SetUrl(value); return *this;} private: EncryptionContractConfiguration m_encryptionContractConfiguration; bool m_encryptionContractConfigurationHasBeenSet = false; Aws::String m_resourceId; bool m_resourceIdHasBeenSet = false; Aws::Vector m_drmSystems; bool m_drmSystemsHasBeenSet = false; Aws::String m_roleArn; bool m_roleArnHasBeenSet = false; Aws::String m_url; bool m_urlHasBeenSet = false; }; } // namespace Model } // namespace mediapackagev2 } // namespace Aws