| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- //-----------------------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //-----------------------------------------------------------------------------
- namespace System.ServiceModel.Security.Tokens
- {
- using System.Collections.ObjectModel;
- using System.Diagnostics;
- using System.Globalization;
- using System.ServiceModel.Diagnostics;
- using System.Text;
- public class SupportingTokenParameters
- {
- Collection<SecurityTokenParameters> signed = new Collection<SecurityTokenParameters>();
- Collection<SecurityTokenParameters> signedEncrypted = new Collection<SecurityTokenParameters>();
- Collection<SecurityTokenParameters> endorsing = new Collection<SecurityTokenParameters>();
- Collection<SecurityTokenParameters> signedEndorsing = new Collection<SecurityTokenParameters>();
- SupportingTokenParameters(SupportingTokenParameters other)
- {
- if (other == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("other");
- foreach (SecurityTokenParameters p in other.signed)
- this.signed.Add((SecurityTokenParameters)p.Clone());
- foreach (SecurityTokenParameters p in other.signedEncrypted)
- this.signedEncrypted.Add((SecurityTokenParameters)p.Clone());
- foreach (SecurityTokenParameters p in other.endorsing)
- this.endorsing.Add((SecurityTokenParameters)p.Clone());
- foreach (SecurityTokenParameters p in other.signedEndorsing)
- this.signedEndorsing.Add((SecurityTokenParameters)p.Clone());
- }
- public SupportingTokenParameters()
- {
- // empty
- }
- public Collection<SecurityTokenParameters> Endorsing
- {
- get
- {
- return this.endorsing;
- }
- }
- public Collection<SecurityTokenParameters> SignedEndorsing
- {
- get
- {
- return this.signedEndorsing;
- }
- }
- public Collection<SecurityTokenParameters> Signed
- {
- get
- {
- return this.signed;
- }
- }
- public Collection<SecurityTokenParameters> SignedEncrypted
- {
- get
- {
- return this.signedEncrypted;
- }
- }
- public void SetKeyDerivation(bool requireDerivedKeys)
- {
- foreach (SecurityTokenParameters t in this.endorsing)
- {
- if (t.HasAsymmetricKey)
- {
- t.RequireDerivedKeys = false;
- }
- else
- {
- t.RequireDerivedKeys = requireDerivedKeys;
- }
- }
- foreach (SecurityTokenParameters t in this.signedEndorsing)
- {
- if (t.HasAsymmetricKey)
- {
- t.RequireDerivedKeys = false;
- }
- else
- {
- t.RequireDerivedKeys = requireDerivedKeys;
- }
- }
- }
- internal bool IsSetKeyDerivation(bool requireDerivedKeys)
- {
- foreach (SecurityTokenParameters t in this.endorsing)
- if (t.RequireDerivedKeys != requireDerivedKeys)
- return false;
- foreach (SecurityTokenParameters t in this.signedEndorsing)
- if (t.RequireDerivedKeys != requireDerivedKeys)
- return false;
- return true;
- }
- public override string ToString()
- {
- StringBuilder sb = new StringBuilder();
- int k;
- if (this.endorsing.Count == 0)
- sb.AppendLine("No endorsing tokens.");
- else
- for (k = 0; k < this.endorsing.Count; k++)
- {
- sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "Endorsing[{0}]", k.ToString(CultureInfo.InvariantCulture)));
- sb.AppendLine(" " + this.endorsing[k].ToString().Trim().Replace("\n", "\n "));
- }
- if (this.signed.Count == 0)
- sb.AppendLine("No signed tokens.");
- else
- for (k = 0; k < this.signed.Count; k++)
- {
- sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "Signed[{0}]", k.ToString(CultureInfo.InvariantCulture)));
- sb.AppendLine(" " + this.signed[k].ToString().Trim().Replace("\n", "\n "));
- }
- if (this.signedEncrypted.Count == 0)
- sb.AppendLine("No signed encrypted tokens.");
- else
- for (k = 0; k < this.signedEncrypted.Count; k++)
- {
- sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "SignedEncrypted[{0}]", k.ToString(CultureInfo.InvariantCulture)));
- sb.AppendLine(" " + this.signedEncrypted[k].ToString().Trim().Replace("\n", "\n "));
- }
- if (this.signedEndorsing.Count == 0)
- sb.AppendLine("No signed endorsing tokens.");
- else
- for (k = 0; k < this.signedEndorsing.Count; k++)
- {
- sb.AppendLine(String.Format(CultureInfo.InvariantCulture, "SignedEndorsing[{0}]", k.ToString(CultureInfo.InvariantCulture)));
- sb.AppendLine(" " + this.signedEndorsing[k].ToString().Trim().Replace("\n", "\n "));
- }
- return sb.ToString().Trim();
- }
- public SupportingTokenParameters Clone()
- {
- SupportingTokenParameters parameters = this.CloneCore();
- if (parameters == null || parameters.GetType() != this.GetType())
- {
- TraceUtility.TraceEvent(
- TraceEventType.Error,
- TraceCode.Security,
- SR.GetString(SR.CloneNotImplementedCorrectly, new object[] { this.GetType(), (parameters != null) ? parameters.ToString() : "null" }));
- }
- return parameters;
- }
- protected virtual SupportingTokenParameters CloneCore()
- {
- return new SupportingTokenParameters(this);
- }
- internal bool IsEmpty()
- {
- return signed.Count == 0 && signedEncrypted.Count == 0 && endorsing.Count == 0 && signedEndorsing.Count == 0;
- }
- }
- }
|