/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the kms-2014-11-01.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.KeyManagementService.Model { /// /// Container for the parameters to the GenerateMac operation. /// Generates a hash-based message authentication code (HMAC) for a message using an HMAC /// KMS key and a MAC algorithm that the key supports. HMAC KMS keys and the HMAC algorithms /// that KMS uses conform to industry standards defined in RFC /// 2104. /// /// /// /// You can use value that GenerateMac returns in the VerifyMac operation to demonstrate /// that the original message has not changed. Also, because a secret key is used to create /// the hash, you can verify that the party that generated the hash has the required secret /// key. You can also use the raw result to implement HMAC-based algorithms such as key /// derivation functions. This operation is part of KMS support for HMAC KMS keys. For /// details, see HMAC /// keys in KMS in the Key Management Service Developer Guide . /// /// /// /// Best practices recommend that you limit the time during which any signing mechanism, /// including an HMAC, is effective. This deters an attack where the actor uses a signed /// message to establish validity repeatedly or long after the message is superseded. /// HMAC tags do not include a timestamp, but you can include a timestamp in the token /// or message to help you detect when its time to refresh the HMAC. /// /// /// /// The KMS key that you use for this operation must be in a compatible key state. For /// details, see Key /// states of KMS keys in the Key Management Service Developer Guide. /// /// /// /// Cross-account use: Yes. To perform this operation with a KMS key in a different /// Amazon Web Services account, specify the key ARN or alias ARN in the value of the /// KeyId parameter. /// /// /// /// Required permissions: kms:GenerateMac /// (key policy) /// /// /// /// Related operations: VerifyMac /// /// public partial class GenerateMacRequest : AmazonKeyManagementServiceRequest { private bool? _dryRun; private List _grantTokens = new List(); private string _keyId; private MacAlgorithmSpec _macAlgorithm; private MemoryStream _message; /// /// Gets and sets the property DryRun. /// /// Checks if your request will succeed. DryRun is an optional parameter. /// /// /// /// /// To learn more about how to use this parameter, see Testing /// your KMS API calls in the Key Management Service Developer Guide. /// /// public bool DryRun { get { return this._dryRun.GetValueOrDefault(); } set { this._dryRun = value; } } // Check to see if DryRun property is set internal bool IsSetDryRun() { return this._dryRun.HasValue; } /// /// Gets and sets the property GrantTokens. /// /// A list of grant tokens. /// /// /// /// Use a grant token when your permission to call this operation comes from a new grant /// that has not yet achieved eventual consistency. For more information, see Grant /// token and Using /// a grant token in the Key Management Service Developer Guide. /// /// [AWSProperty(Min=0, Max=10)] public List GrantTokens { get { return this._grantTokens; } set { this._grantTokens = value; } } // Check to see if GrantTokens property is set internal bool IsSetGrantTokens() { return this._grantTokens != null && this._grantTokens.Count > 0; } /// /// Gets and sets the property KeyId. /// /// The HMAC KMS key to use in the operation. The MAC algorithm computes the HMAC for /// the message and the key as described in RFC /// 2104. /// /// /// /// To identify an HMAC KMS key, use the DescribeKey operation and see the KeySpec /// field in the response. /// /// [AWSProperty(Required=true, Min=1, Max=2048)] public string KeyId { get { return this._keyId; } set { this._keyId = value; } } // Check to see if KeyId property is set internal bool IsSetKeyId() { return this._keyId != null; } /// /// Gets and sets the property MacAlgorithm. /// /// The MAC algorithm used in the operation. /// /// /// /// The algorithm must be compatible with the HMAC KMS key that you specify. To find /// the MAC algorithms that your HMAC KMS key supports, use the DescribeKey operation /// and see the MacAlgorithms field in the DescribeKey response. /// /// [AWSProperty(Required=true)] public MacAlgorithmSpec MacAlgorithm { get { return this._macAlgorithm; } set { this._macAlgorithm = value; } } // Check to see if MacAlgorithm property is set internal bool IsSetMacAlgorithm() { return this._macAlgorithm != null; } /// /// Gets and sets the property Message. /// /// The message to be hashed. Specify a message of up to 4,096 bytes. /// /// /// /// GenerateMac and VerifyMac do not provide special handling for /// message digests. If you generate an HMAC for a hash digest of a message, you must /// verify the HMAC of the same hash digest. /// /// [AWSProperty(Required=true, Sensitive=true, Min=1, Max=4096)] public MemoryStream Message { get { return this._message; } set { this._message = value; } } // Check to see if Message property is set internal bool IsSetMessage() { return this._message != null; } } }