/*
* 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.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace Amazon.S3.Encryption
{
///
/// The "key encrypting key" materials used in encrypt/decryption.
/// These materials may be an asymmetric key, a symmetric key, or a KMS key ID.
///
public class EncryptionMaterials
{
private Dictionary materialsDescription;
///
/// Constructs a new EncryptionMaterials object, storing an asymmetric key.
///
///
public EncryptionMaterials(AsymmetricAlgorithm algorithm) : this(algorithm, null, null)
{
}
///
/// Constructs a new EncryptionMaterials object, storing a symmetric key.
///
///
public EncryptionMaterials(SymmetricAlgorithm algorithm) : this(null, algorithm, null)
{
}
///
/// Constructs a new EncryptionMaterials object, storing a KMS Key ID
///
///
public EncryptionMaterials(string kmsKeyID) : this(null, null, kmsKeyID)
{
materialsDescription.Add(EncryptionUtils.KMSCmkIDKey, kmsKeyID);
}
private EncryptionMaterials(AsymmetricAlgorithm asymmetricAlgorithm, SymmetricAlgorithm symmetricAlgorithm, string kmsKeyID)
{
AsymmetricProvider = asymmetricAlgorithm;
SymmetricProvider = symmetricAlgorithm;
KMSKeyID = kmsKeyID;
materialsDescription = new Dictionary();
}
internal AsymmetricAlgorithm AsymmetricProvider { get; private set; }
internal SymmetricAlgorithm SymmetricProvider { get; private set; }
internal string KMSKeyID { get; private set; }
internal Dictionary MaterialsDescription
{
get
{
return materialsDescription;
}
}
}
}