/* * 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; } } } }