| File: System\ServiceModel\Security\SendSecurityHeaderElementContainer.cs | Web Access |
| Project: src\src\System.ServiceModel.Primitives\src\System.ServiceModel.Primitives.csproj (System.ServiceModel.Primitives) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.IdentityModel.Tokens; using System.Collections.Generic; using ISecurityElement = System.IdentityModel.ISecurityElement; namespace System.ServiceModel.Security { internal class SendSecurityHeaderElementContainer { private List<SecurityToken> _signedSupportingTokens = null; private List<SendSecurityHeaderElement> _basicSupportingTokens = null; private List<SecurityToken> _endorsingSupportingTokens = null; private List<SecurityToken> _endorsingDerivedSupportingTokens = null; private List<SecurityToken> _signedEndorsingSupportingTokens = null; private List<SecurityToken> _signedEndorsingDerivedSupportingTokens = null; private List<SendSecurityHeaderElement> _signatureConfirmations = null; private List<SendSecurityHeaderElement> _endorsingSignatures = null; private Dictionary<SecurityToken, SecurityKeyIdentifierClause> _securityTokenMappedToIdentifierClause = null; public SecurityTimestamp Timestamp; public SecurityToken PrerequisiteToken; public SecurityToken SourceSigningToken; public SecurityToken DerivedSigningToken; public SecurityToken SourceEncryptionToken; public SecurityToken WrappedEncryptionToken; public SecurityToken DerivedEncryptionToken; public ISecurityElement ReferenceList; public SendSecurityHeaderElement PrimarySignature; private void Add<T>(ref List<T> list, T item) { if (list == null) { list = new List<T>(); } list.Add(item); } public SecurityToken[] GetSignedSupportingTokens() { return _signedSupportingTokens?.ToArray(); } public void AddSignedSupportingToken(SecurityToken token) { Add(ref _signedSupportingTokens, token); } public List<SecurityToken> EndorsingSupportingTokens { get { return _endorsingSupportingTokens; } } public SendSecurityHeaderElement[] GetBasicSupportingTokens() { return _basicSupportingTokens?.ToArray(); } public void AddBasicSupportingToken(SendSecurityHeaderElement tokenElement) { Add(ref _basicSupportingTokens, tokenElement); } public SecurityToken[] GetSignedEndorsingSupportingTokens() { return _signedEndorsingSupportingTokens?.ToArray(); } public void AddSignedEndorsingSupportingToken(SecurityToken token) { Add(ref _signedEndorsingSupportingTokens, token); } public SecurityToken[] GetSignedEndorsingDerivedSupportingTokens() { return _signedEndorsingDerivedSupportingTokens?.ToArray(); } public void AddSignedEndorsingDerivedSupportingToken(SecurityToken token) { Add(ref _signedEndorsingDerivedSupportingTokens, token); } public SecurityToken[] GetEndorsingSupportingTokens() { return _endorsingSupportingTokens?.ToArray(); } public void AddEndorsingSupportingToken(SecurityToken token) { Add(ref _endorsingSupportingTokens, token); } public SecurityToken[] GetEndorsingDerivedSupportingTokens() { return _endorsingDerivedSupportingTokens?.ToArray(); } public void AddEndorsingDerivedSupportingToken(SecurityToken token) { Add(ref _endorsingDerivedSupportingTokens, token); } public SendSecurityHeaderElement[] GetSignatureConfirmations() { return _signatureConfirmations?.ToArray(); } public void AddSignatureConfirmation(SendSecurityHeaderElement confirmation) { Add(ref _signatureConfirmations, confirmation); } public SendSecurityHeaderElement[] GetEndorsingSignatures() { return _endorsingSignatures?.ToArray(); } public void AddEndorsingSignature(SendSecurityHeaderElement signature) { Add(ref _endorsingSignatures, signature); } public void MapSecurityTokenToStrClause(SecurityToken securityToken, SecurityKeyIdentifierClause keyIdentifierClause) { if (_securityTokenMappedToIdentifierClause == null) { _securityTokenMappedToIdentifierClause = new Dictionary<SecurityToken, SecurityKeyIdentifierClause>(); } if (!_securityTokenMappedToIdentifierClause.ContainsKey(securityToken)) { _securityTokenMappedToIdentifierClause.Add(securityToken, keyIdentifierClause); } } public bool TryGetIdentifierClauseFromSecurityToken(SecurityToken securityToken, out SecurityKeyIdentifierClause keyIdentifierClause) { keyIdentifierClause = null; return securityToken == null || _securityTokenMappedToIdentifierClause == null || !_securityTokenMappedToIdentifierClause.TryGetValue(securityToken, out keyIdentifierClause) ? false : true; } } }