//----------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------- namespace System.IdentityModel.Protocols.WSTrust { using System.IdentityModel.Tokens; /// /// The content of a RequestedProofToken element could be EncryptedSecurityToken which means that EncryptedKey is used /// under the RequestedProofToken. If the security token is a regular token, such as a SCT, /// then its session key will be the material which gets encrypted. Another possibility is where /// we use combined entropy, then RequestedProofToken will only contain a ComputedKey element. /// public class RequestedProofToken { string _computedKeyAlgorithm; ProtectedKey _keys; /// /// In case of combined entropy, construct a requestedprooftoken /// instance with computed key algorithm to specify the algorithm used to /// calculate the session key. /// /// The algorithm used to computed the session key in /// the combined entropy case. public RequestedProofToken(string computedKeyAlgorithm) : base() { if (string.IsNullOrEmpty(computedKeyAlgorithm)) { DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("computedKeyAlgorithm"); } _computedKeyAlgorithm = computedKeyAlgorithm; } /// /// When the requested proof token contains real key in plain text. /// /// The key material. public RequestedProofToken(byte[] secret) { _keys = new ProtectedKey(secret); } /// /// When the requested proof token contains real key encrypted. /// /// The key material. /// The encrypting credentials to encrypt the key material. public RequestedProofToken(byte[] secret, EncryptingCredentials wrappingCredentials) { _keys = new ProtectedKey(secret, wrappingCredentials); } /// /// Constructs a requested proof token instance with the protected key. /// /// The protected key which can be either binary secret or encrypted key. public RequestedProofToken(ProtectedKey protectedKey) { if (protectedKey == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("protectedKey"); } _keys = protectedKey; } /// /// Gets the computed key algorithm used to calculate the session key in the combined /// entropy case. /// public string ComputedKeyAlgorithm { get { return _computedKeyAlgorithm; } } /// /// In the case when the requested proof token contains the real key, /// ProtectedKey getter will returns the real key bytes either encrypted /// or plaintext. /// public ProtectedKey ProtectedKey { get { return _keys; } } } }