e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
159 lines
6.1 KiB
C#
159 lines
6.1 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Security
|
|
{
|
|
using System.IdentityModel.Claims;
|
|
using System.ServiceModel;
|
|
using System.IdentityModel.Policy;
|
|
using System.IdentityModel.Tokens;
|
|
using System.ServiceModel.Security.Tokens;
|
|
using System.Xml;
|
|
using System.Collections.Generic;
|
|
|
|
using ISecurityElement = System.IdentityModel.ISecurityElement;
|
|
|
|
class SendSecurityHeaderElementContainer
|
|
{
|
|
List<SecurityToken> signedSupportingTokens = null;
|
|
List<SendSecurityHeaderElement> basicSupportingTokens = null;
|
|
List<SecurityToken> endorsingSupportingTokens = null;
|
|
List<SecurityToken> endorsingDerivedSupportingTokens = null;
|
|
List<SecurityToken> signedEndorsingSupportingTokens = null;
|
|
List<SecurityToken> signedEndorsingDerivedSupportingTokens = null;
|
|
List<SendSecurityHeaderElement> signatureConfirmations = null;
|
|
List<SendSecurityHeaderElement> endorsingSignatures = null;
|
|
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;
|
|
|
|
void Add<T>(ref List<T> list, T item)
|
|
{
|
|
if (list == null)
|
|
{
|
|
list = new List<T>();
|
|
}
|
|
list.Add(item);
|
|
}
|
|
|
|
public SecurityToken[] GetSignedSupportingTokens()
|
|
{
|
|
return (this.signedSupportingTokens != null) ? this.signedSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddSignedSupportingToken(SecurityToken token)
|
|
{
|
|
Add<SecurityToken>(ref this.signedSupportingTokens, token);
|
|
}
|
|
|
|
public List<SecurityToken> EndorsingSupportingTokens
|
|
{
|
|
get { return this.endorsingSupportingTokens; }
|
|
}
|
|
|
|
public SendSecurityHeaderElement[] GetBasicSupportingTokens()
|
|
{
|
|
return (this.basicSupportingTokens != null) ? this.basicSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddBasicSupportingToken(SendSecurityHeaderElement tokenElement)
|
|
{
|
|
Add<SendSecurityHeaderElement>(ref this.basicSupportingTokens, tokenElement);
|
|
}
|
|
|
|
public SecurityToken[] GetSignedEndorsingSupportingTokens()
|
|
{
|
|
return (this.signedEndorsingSupportingTokens != null) ? this.signedEndorsingSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddSignedEndorsingSupportingToken(SecurityToken token)
|
|
{
|
|
Add<SecurityToken>(ref this.signedEndorsingSupportingTokens, token);
|
|
}
|
|
|
|
public SecurityToken[] GetSignedEndorsingDerivedSupportingTokens()
|
|
{
|
|
return (this.signedEndorsingDerivedSupportingTokens != null) ? this.signedEndorsingDerivedSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddSignedEndorsingDerivedSupportingToken(SecurityToken token)
|
|
{
|
|
Add<SecurityToken>(ref this.signedEndorsingDerivedSupportingTokens, token);
|
|
}
|
|
|
|
public SecurityToken[] GetEndorsingSupportingTokens()
|
|
{
|
|
return (this.endorsingSupportingTokens != null) ? this.endorsingSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddEndorsingSupportingToken(SecurityToken token)
|
|
{
|
|
Add<SecurityToken>(ref this.endorsingSupportingTokens, token);
|
|
}
|
|
|
|
public SecurityToken[] GetEndorsingDerivedSupportingTokens()
|
|
{
|
|
return (this.endorsingDerivedSupportingTokens != null) ? this.endorsingDerivedSupportingTokens.ToArray() : null;
|
|
}
|
|
|
|
public void AddEndorsingDerivedSupportingToken(SecurityToken token)
|
|
{
|
|
Add<SecurityToken>(ref this.endorsingDerivedSupportingTokens, token);
|
|
}
|
|
|
|
public SendSecurityHeaderElement[] GetSignatureConfirmations()
|
|
{
|
|
return (this.signatureConfirmations != null) ? this.signatureConfirmations.ToArray() : null;
|
|
}
|
|
|
|
public void AddSignatureConfirmation(SendSecurityHeaderElement confirmation)
|
|
{
|
|
Add<SendSecurityHeaderElement>(ref this.signatureConfirmations, confirmation);
|
|
}
|
|
|
|
public SendSecurityHeaderElement[] GetEndorsingSignatures()
|
|
{
|
|
return (this.endorsingSignatures != null) ? this.endorsingSignatures.ToArray() : null;
|
|
}
|
|
|
|
public void AddEndorsingSignature(SendSecurityHeaderElement signature)
|
|
{
|
|
Add<SendSecurityHeaderElement>(ref this.endorsingSignatures, signature);
|
|
}
|
|
|
|
public void MapSecurityTokenToStrClause(SecurityToken securityToken, SecurityKeyIdentifierClause keyIdentifierClause)
|
|
{
|
|
if (this.securityTokenMappedToIdentifierClause == null)
|
|
{
|
|
this.securityTokenMappedToIdentifierClause = new Dictionary<SecurityToken, SecurityKeyIdentifierClause>();
|
|
}
|
|
|
|
if (!this.securityTokenMappedToIdentifierClause.ContainsKey(securityToken))
|
|
{
|
|
this.securityTokenMappedToIdentifierClause.Add(securityToken, keyIdentifierClause);
|
|
}
|
|
}
|
|
|
|
public bool TryGetIdentifierClauseFromSecurityToken(SecurityToken securityToken, out SecurityKeyIdentifierClause keyIdentifierClause)
|
|
{
|
|
keyIdentifierClause = null;
|
|
if (securityToken == null
|
|
|| this.securityTokenMappedToIdentifierClause == null
|
|
|| !this.securityTokenMappedToIdentifierClause.TryGetValue(securityToken, out keyIdentifierClause))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|