| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817 |
- //------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.ServiceModel.Security
- {
- using System.Collections.Generic;
- using System.ServiceModel.Channels;
- using System.ServiceModel;
- using System.Collections.ObjectModel;
- using System.IdentityModel.Claims;
- using System.IdentityModel.Policy;
- using System.IdentityModel.Tokens;
- using System.IdentityModel.Selectors;
- using System.Security.Cryptography;
- using System.ServiceModel.Security.Tokens;
-
- using System.Text;
- using System.Runtime.Serialization;
- using System.Xml;
- using System.ComponentModel;
- [TypeConverter(typeof(System.ServiceModel.Configuration.SecurityAlgorithmSuiteConverter))]
- public abstract class SecurityAlgorithmSuite
- {
- static SecurityAlgorithmSuite basic256;
- static SecurityAlgorithmSuite basic192;
- static SecurityAlgorithmSuite basic128;
- static SecurityAlgorithmSuite tripleDes;
- static SecurityAlgorithmSuite basic256Rsa15;
- static SecurityAlgorithmSuite basic192Rsa15;
- static SecurityAlgorithmSuite basic128Rsa15;
- static SecurityAlgorithmSuite tripleDesRsa15;
- static SecurityAlgorithmSuite basic256Sha256;
- static SecurityAlgorithmSuite basic192Sha256;
- static SecurityAlgorithmSuite basic128Sha256;
- static SecurityAlgorithmSuite tripleDesSha256;
- static SecurityAlgorithmSuite basic256Sha256Rsa15;
- static SecurityAlgorithmSuite basic192Sha256Rsa15;
- static SecurityAlgorithmSuite basic128Sha256Rsa15;
- static SecurityAlgorithmSuite tripleDesSha256Rsa15;
- static internal SecurityAlgorithmSuite KerberosDefault
- {
- get
- {
- return Basic128;
- }
- }
- static public SecurityAlgorithmSuite Default
- {
- get
- {
- return Basic256;
- }
- }
- static public SecurityAlgorithmSuite Basic256
- {
- get
- {
- if (basic256 == null)
- basic256 = new Basic256SecurityAlgorithmSuite();
- return basic256;
- }
- }
- static public SecurityAlgorithmSuite Basic192
- {
- get
- {
- if (basic192 == null)
- basic192 = new Basic192SecurityAlgorithmSuite();
- return basic192;
- }
- }
- static public SecurityAlgorithmSuite Basic128
- {
- get
- {
- if (basic128 == null)
- basic128 = new Basic128SecurityAlgorithmSuite();
- return basic128;
- }
- }
- static public SecurityAlgorithmSuite TripleDes
- {
- get
- {
- if (tripleDes == null)
- tripleDes = new TripleDesSecurityAlgorithmSuite();
- return tripleDes;
- }
- }
- static public SecurityAlgorithmSuite Basic256Rsa15
- {
- get
- {
- if (basic256Rsa15 == null)
- basic256Rsa15 = new Basic256Rsa15SecurityAlgorithmSuite();
- return basic256Rsa15;
- }
- }
- static public SecurityAlgorithmSuite Basic192Rsa15
- {
- get
- {
- if (basic192Rsa15 == null)
- basic192Rsa15 = new Basic192Rsa15SecurityAlgorithmSuite();
- return basic192Rsa15;
- }
- }
- static public SecurityAlgorithmSuite Basic128Rsa15
- {
- get
- {
- if (basic128Rsa15 == null)
- basic128Rsa15 = new Basic128Rsa15SecurityAlgorithmSuite();
- return basic128Rsa15;
- }
- }
- static public SecurityAlgorithmSuite TripleDesRsa15
- {
- get
- {
- if (tripleDesRsa15 == null)
- tripleDesRsa15 = new TripleDesRsa15SecurityAlgorithmSuite();
- return tripleDesRsa15;
- }
- }
- static public SecurityAlgorithmSuite Basic256Sha256
- {
- get
- {
- if (basic256Sha256 == null)
- basic256Sha256 = new Basic256Sha256SecurityAlgorithmSuite();
- return basic256Sha256;
- }
- }
- static public SecurityAlgorithmSuite Basic192Sha256
- {
- get
- {
- if (basic192Sha256 == null)
- basic192Sha256 = new Basic192Sha256SecurityAlgorithmSuite();
- return basic192Sha256;
- }
- }
- static public SecurityAlgorithmSuite Basic128Sha256
- {
- get
- {
- if (basic128Sha256 == null)
- basic128Sha256 = new Basic128Sha256SecurityAlgorithmSuite();
- return basic128Sha256;
- }
- }
- static public SecurityAlgorithmSuite TripleDesSha256
- {
- get
- {
- if (tripleDesSha256 == null)
- tripleDesSha256 = new TripleDesSha256SecurityAlgorithmSuite();
- return tripleDesSha256;
- }
- }
- static public SecurityAlgorithmSuite Basic256Sha256Rsa15
- {
- get
- {
- if (basic256Sha256Rsa15 == null)
- basic256Sha256Rsa15 = new Basic256Sha256Rsa15SecurityAlgorithmSuite();
- return basic256Sha256Rsa15;
- }
- }
- static public SecurityAlgorithmSuite Basic192Sha256Rsa15
- {
- get
- {
- if (basic192Sha256Rsa15 == null)
- basic192Sha256Rsa15 = new Basic192Sha256Rsa15SecurityAlgorithmSuite();
- return basic192Sha256Rsa15;
- }
- }
- static public SecurityAlgorithmSuite Basic128Sha256Rsa15
- {
- get
- {
- if (basic128Sha256Rsa15 == null)
- basic128Sha256Rsa15 = new Basic128Sha256Rsa15SecurityAlgorithmSuite();
- return basic128Sha256Rsa15;
- }
- }
- static public SecurityAlgorithmSuite TripleDesSha256Rsa15
- {
- get
- {
- if (tripleDesSha256Rsa15 == null)
- tripleDesSha256Rsa15 = new TripleDesSha256Rsa15SecurityAlgorithmSuite();
- return tripleDesSha256Rsa15;
- }
- }
-
- public abstract string DefaultCanonicalizationAlgorithm { get; }
- public abstract string DefaultDigestAlgorithm { get; }
- public abstract string DefaultEncryptionAlgorithm { get; }
- public abstract int DefaultEncryptionKeyDerivationLength { get; }
- public abstract string DefaultSymmetricKeyWrapAlgorithm { get; }
- public abstract string DefaultAsymmetricKeyWrapAlgorithm { get; }
- public abstract string DefaultSymmetricSignatureAlgorithm { get; }
- public abstract string DefaultAsymmetricSignatureAlgorithm { get; }
- public abstract int DefaultSignatureKeyDerivationLength { get; }
- public abstract int DefaultSymmetricKeyLength { get; }
- internal virtual XmlDictionaryString DefaultCanonicalizationAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultEncryptionAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultSymmetricKeyWrapAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return null; } }
- internal virtual XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return null; } }
- protected SecurityAlgorithmSuite() { }
- public virtual bool IsCanonicalizationAlgorithmSupported(string algorithm) { return algorithm == DefaultCanonicalizationAlgorithm; }
- public virtual bool IsDigestAlgorithmSupported(string algorithm) { return algorithm == DefaultDigestAlgorithm; }
- public virtual bool IsEncryptionAlgorithmSupported(string algorithm) { return algorithm == DefaultEncryptionAlgorithm; }
- public virtual bool IsEncryptionKeyDerivationAlgorithmSupported(string algorithm) { return (algorithm == SecurityAlgorithms.Psha1KeyDerivation) || (algorithm == SecurityAlgorithms.Psha1KeyDerivationDec2005); }
- public virtual bool IsSymmetricKeyWrapAlgorithmSupported(string algorithm) { return algorithm == DefaultSymmetricKeyWrapAlgorithm; }
- public virtual bool IsAsymmetricKeyWrapAlgorithmSupported(string algorithm) { return algorithm == DefaultAsymmetricKeyWrapAlgorithm; }
- public virtual bool IsSymmetricSignatureAlgorithmSupported(string algorithm) { return algorithm == DefaultSymmetricSignatureAlgorithm; }
- public virtual bool IsAsymmetricSignatureAlgorithmSupported(string algorithm) { return algorithm == DefaultAsymmetricSignatureAlgorithm; }
- public virtual bool IsSignatureKeyDerivationAlgorithmSupported(string algorithm) { return (algorithm == SecurityAlgorithms.Psha1KeyDerivation) || (algorithm == SecurityAlgorithms.Psha1KeyDerivationDec2005); }
- public abstract bool IsSymmetricKeyLengthSupported(int length);
- public abstract bool IsAsymmetricKeyLengthSupported(int length);
- internal static bool IsRsaSHA256(SecurityAlgorithmSuite suite)
- {
- if ( suite == null )
- return false;
- return (suite == Basic128Sha256 || suite == Basic128Sha256Rsa15 || suite == Basic192Sha256 || suite == Basic192Sha256Rsa15 ||
- suite == Basic256Sha256 || suite == Basic256Sha256Rsa15 || suite == TripleDesSha256 || suite == TripleDesSha256Rsa15);
-
- }
- internal string GetEncryptionKeyDerivationAlgorithm(SecurityToken token, SecureConversationVersion version)
- {
- if (token == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
- string derivationAlgorithm = SecurityUtils.GetKeyDerivationAlgorithm(version);
- if (SecurityUtils.IsSupportedAlgorithm(derivationAlgorithm, token))
- return derivationAlgorithm;
- else
- return null;
- }
- internal int GetEncryptionKeyDerivationLength(SecurityToken token, SecureConversationVersion version)
- {
- if (token == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
- string derivationAlgorithm = SecurityUtils.GetKeyDerivationAlgorithm(version);
- if (SecurityUtils.IsSupportedAlgorithm(derivationAlgorithm, token))
- {
- if (this.DefaultEncryptionKeyDerivationLength % 8 != 0)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.Psha1KeyLengthInvalid, this.DefaultEncryptionKeyDerivationLength)));
- return this.DefaultEncryptionKeyDerivationLength / 8;
- }
- else
- return 0;
- }
- internal void GetKeyWrapAlgorithm(SecurityToken token, out string keyWrapAlgorithm, out XmlDictionaryString keyWrapAlgorithmDictionaryString)
- {
- if (token == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
- if (SecurityUtils.IsSupportedAlgorithm(this.DefaultSymmetricKeyWrapAlgorithm, token))
- {
- keyWrapAlgorithm = this.DefaultSymmetricKeyWrapAlgorithm;
- keyWrapAlgorithmDictionaryString = this.DefaultSymmetricKeyWrapAlgorithmDictionaryString;
- }
- else
- {
- keyWrapAlgorithm = this.DefaultAsymmetricKeyWrapAlgorithm;
- keyWrapAlgorithmDictionaryString = this.DefaultAsymmetricKeyWrapAlgorithmDictionaryString;
- }
- }
- internal void GetSignatureAlgorithmAndKey(SecurityToken token, out string signatureAlgorithm, out SecurityKey key, out XmlDictionaryString signatureAlgorithmDictionaryString)
- {
- ReadOnlyCollection<SecurityKey> keys = token.SecurityKeys;
- if (keys == null || keys.Count == 0)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SigningTokenHasNoKeys, token)));
- }
- for (int i = 0; i < keys.Count; i++)
- {
- if (keys[i].IsSupportedAlgorithm(this.DefaultSymmetricSignatureAlgorithm))
- {
- signatureAlgorithm = this.DefaultSymmetricSignatureAlgorithm;
- signatureAlgorithmDictionaryString = this.DefaultSymmetricSignatureAlgorithmDictionaryString;
- key = keys[i];
- return;
- }
- else if (keys[i].IsSupportedAlgorithm(this.DefaultAsymmetricSignatureAlgorithm))
- {
- signatureAlgorithm = this.DefaultAsymmetricSignatureAlgorithm;
- signatureAlgorithmDictionaryString = this.DefaultAsymmetricSignatureAlgorithmDictionaryString;
- key = keys[i];
- return;
- }
- }
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SigningTokenHasNoKeysSupportingTheAlgorithmSuite, token, this)));
- }
- internal string GetSignatureKeyDerivationAlgorithm(SecurityToken token, SecureConversationVersion version)
- {
- if (token == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
- string derivationAlgorithm = SecurityUtils.GetKeyDerivationAlgorithm(version);
- if (SecurityUtils.IsSupportedAlgorithm(derivationAlgorithm, token))
- return derivationAlgorithm;
- else
- return null;
- }
- internal int GetSignatureKeyDerivationLength(SecurityToken token, SecureConversationVersion version)
- {
- if (token == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("token");
- string derivationAlgorithm = SecurityUtils.GetKeyDerivationAlgorithm(version);
- if (SecurityUtils.IsSupportedAlgorithm(derivationAlgorithm, token))
- {
- if (this.DefaultSignatureKeyDerivationLength % 8 != 0)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.Psha1KeyLengthInvalid, this.DefaultSignatureKeyDerivationLength)));
- return this.DefaultSignatureKeyDerivationLength / 8;
- }
- else
- return 0;
- }
- internal void EnsureAcceptableSymmetricSignatureAlgorithm(string algorithm)
- {
- if (!IsSymmetricSignatureAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "SymmetricSignature", this)));
- }
- }
- internal void EnsureAcceptableSignatureKeySize(SecurityKey securityKey, SecurityToken token)
- {
- AsymmetricSecurityKey asymmetricSecurityKey = securityKey as AsymmetricSecurityKey;
- if (asymmetricSecurityKey != null)
- {
- if (!IsAsymmetricKeyLengthSupported(asymmetricSecurityKey.KeySize))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(
- SR.GetString(SR.TokenDoesNotMeetKeySizeRequirements, this, token, asymmetricSecurityKey.KeySize)));
- }
- }
- else
- {
- SymmetricSecurityKey symmetricSecurityKey = securityKey as SymmetricSecurityKey;
- if (symmetricSecurityKey == null)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.UnknownICryptoType, symmetricSecurityKey)));
- }
- EnsureAcceptableSignatureSymmetricKeySize(symmetricSecurityKey, token);
- }
- }
- // Ensure acceptable signing symmetric key.
- // 1) if derived key, validate derived key against DefaultSignatureKeyDerivationLength and validate
- // source key against DefaultSymmetricKeyLength
- // 2) if not derived key, validate key against DefaultSymmetricKeyLength
- internal void EnsureAcceptableSignatureSymmetricKeySize(SymmetricSecurityKey securityKey, SecurityToken token)
- {
- int keySize;
- DerivedKeySecurityToken dkt = token as DerivedKeySecurityToken;
- if (dkt != null)
- {
- token = dkt.TokenToDerive;
- keySize = ((SymmetricSecurityKey)token.SecurityKeys[0]).KeySize;
- // doing special case for derived key token signing length since
- // the sending side doesn't honor the algorithm suite. It used the DefaultSignatureKeyDerivationLength instead
- if (dkt.SecurityKeys[0].KeySize < this.DefaultSignatureKeyDerivationLength)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(
- SR.GetString(SR.TokenDoesNotMeetKeySizeRequirements, this, dkt, dkt.SecurityKeys[0].KeySize)));
- }
- }
- else
- {
- keySize = securityKey.KeySize;
- }
- if (!IsSymmetricKeyLengthSupported(keySize))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(
- SR.GetString(SR.TokenDoesNotMeetKeySizeRequirements, this, token, keySize)));
- }
- }
- // Ensure acceptable decrypting symmetric key.
- // 1) if derived key, validate derived key against DefaultEncryptionKeyDerivationLength and validate
- // source key against DefaultSymmetricKeyLength
- // 2) if not derived key, validate key against DefaultSymmetricKeyLength
- internal void EnsureAcceptableDecryptionSymmetricKeySize(SymmetricSecurityKey securityKey, SecurityToken token)
- {
- int keySize;
- DerivedKeySecurityToken dkt = token as DerivedKeySecurityToken;
- if (dkt != null)
- {
- token = dkt.TokenToDerive;
- keySize = ((SymmetricSecurityKey)token.SecurityKeys[0]).KeySize;
- // doing special case for derived key token signing length since
- // the sending side doesn't honor the algorithm suite. It used the DefaultSignatureKeyDerivationLength instead
- if (dkt.SecurityKeys[0].KeySize < this.DefaultEncryptionKeyDerivationLength)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(
- SR.GetString(SR.TokenDoesNotMeetKeySizeRequirements, this, dkt, dkt.SecurityKeys[0].KeySize)));
- }
- }
- else
- {
- keySize = securityKey.KeySize;
- }
- if (!IsSymmetricKeyLengthSupported(keySize))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(
- SR.GetString(SR.TokenDoesNotMeetKeySizeRequirements, this, token, keySize)));
- }
- }
- internal void EnsureAcceptableSignatureAlgorithm(SecurityKey verificationKey, string algorithm)
- {
- InMemorySymmetricSecurityKey symmeticKey = verificationKey as InMemorySymmetricSecurityKey;
- if (symmeticKey != null)
- {
- this.EnsureAcceptableSymmetricSignatureAlgorithm(algorithm);
- }
- else
- {
- AsymmetricSecurityKey asymmetricKey = verificationKey as AsymmetricSecurityKey;
- if (asymmetricKey == null)
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.UnknownICryptoType, verificationKey)));
- }
- this.EnsureAcceptableAsymmetricSignatureAlgorithm(algorithm);
- }
- }
- internal void EnsureAcceptableAsymmetricSignatureAlgorithm(string algorithm)
- {
- if (!IsAsymmetricSignatureAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "AsymmetricSignature", this)));
- }
- }
- internal void EnsureAcceptableKeyWrapAlgorithm(string algorithm, bool isAsymmetric)
- {
- if (isAsymmetric)
- {
- if (!IsAsymmetricKeyWrapAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "AsymmetricKeyWrap", this)));
- }
- }
- else
- {
- if (!IsSymmetricKeyWrapAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "SymmetricKeyWrap", this)));
- }
- }
- }
- internal void EnsureAcceptableEncryptionAlgorithm(string algorithm)
- {
- if (!IsEncryptionAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "Encryption", this)));
- }
- }
- internal void EnsureAcceptableSignatureKeyDerivationAlgorithm(string algorithm)
- {
- if (!IsSignatureKeyDerivationAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "SignatureKeyDerivation", this)));
- }
- }
- internal void EnsureAcceptableEncryptionKeyDerivationAlgorithm(string algorithm)
- {
- if (!IsEncryptionKeyDerivationAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "EncryptionKeyDerivation", this)));
- }
- }
- internal void EnsureAcceptableDigestAlgorithm(string algorithm)
- {
- if (!IsDigestAlgorithmSupported(algorithm))
- {
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.SuiteDoesNotAcceptAlgorithm,
- algorithm, "Digest", this)));
- }
- }
- }
- public class Basic256SecurityAlgorithmSuite : SecurityAlgorithmSuite
- {
- public Basic256SecurityAlgorithmSuite() : base() { }
- public override string DefaultCanonicalizationAlgorithm { get { return DefaultCanonicalizationAlgorithmDictionaryString.Value; } }
- public override string DefaultDigestAlgorithm { get { return DefaultDigestAlgorithmDictionaryString.Value; } }
- public override string DefaultEncryptionAlgorithm { get { return DefaultEncryptionAlgorithmDictionaryString.Value; } }
- public override int DefaultEncryptionKeyDerivationLength { get { return 256; } }
- public override string DefaultSymmetricKeyWrapAlgorithm { get { return DefaultSymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricKeyWrapAlgorithm { get { return DefaultAsymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultSymmetricSignatureAlgorithm { get { return DefaultSymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricSignatureAlgorithm { get { return DefaultAsymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override int DefaultSignatureKeyDerivationLength { get { return 192; } }
- public override int DefaultSymmetricKeyLength { get { return 256; } }
- public override bool IsSymmetricKeyLengthSupported(int length) { return length == 256; }
- public override bool IsAsymmetricKeyLengthSupported(int length) { return length >= 1024 && length <= 4096; }
- internal override XmlDictionaryString DefaultCanonicalizationAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.ExclusiveC14n; } }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha1Digest; } }
- internal override XmlDictionaryString DefaultEncryptionAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes256Encryption; } }
- internal override XmlDictionaryString DefaultSymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes256KeyWrap; } }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaOaepKeyWrap; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha1Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha1Signature; } }
- public override string ToString()
- {
- return "Basic256";
- }
- }
- public class Basic192SecurityAlgorithmSuite : SecurityAlgorithmSuite
- {
- public Basic192SecurityAlgorithmSuite() : base() { }
- public override string DefaultCanonicalizationAlgorithm { get { return DefaultCanonicalizationAlgorithmDictionaryString.Value; } }
- public override string DefaultDigestAlgorithm { get { return DefaultDigestAlgorithmDictionaryString.Value; } }
- public override string DefaultEncryptionAlgorithm { get { return DefaultEncryptionAlgorithmDictionaryString.Value; } }
- public override int DefaultEncryptionKeyDerivationLength { get { return 192; } }
- public override string DefaultSymmetricKeyWrapAlgorithm { get { return DefaultSymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricKeyWrapAlgorithm { get { return DefaultAsymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultSymmetricSignatureAlgorithm { get { return DefaultSymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricSignatureAlgorithm { get { return DefaultAsymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override int DefaultSignatureKeyDerivationLength { get { return 192; } }
- public override int DefaultSymmetricKeyLength { get { return 192; } }
- public override bool IsSymmetricKeyLengthSupported(int length) { return length >= 192 && length <= 256; }
- public override bool IsAsymmetricKeyLengthSupported(int length) { return length >= 1024 && length <= 4096; }
- internal override XmlDictionaryString DefaultCanonicalizationAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.ExclusiveC14n; } }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha1Digest; } }
- internal override XmlDictionaryString DefaultEncryptionAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes192Encryption; } }
- internal override XmlDictionaryString DefaultSymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes192KeyWrap; } }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaOaepKeyWrap; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha1Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha1Signature; } }
- public override string ToString()
- {
- return "Basic192";
- }
- }
- public class Basic128SecurityAlgorithmSuite : SecurityAlgorithmSuite
- {
- public Basic128SecurityAlgorithmSuite() : base() { }
- public override string DefaultCanonicalizationAlgorithm { get { return this.DefaultCanonicalizationAlgorithmDictionaryString.Value; } }
- public override string DefaultDigestAlgorithm { get { return this.DefaultDigestAlgorithmDictionaryString.Value; } }
- public override string DefaultEncryptionAlgorithm { get { return this.DefaultEncryptionAlgorithmDictionaryString.Value; } }
- public override int DefaultEncryptionKeyDerivationLength { get { return 128; } }
- public override string DefaultSymmetricKeyWrapAlgorithm { get { return this.DefaultSymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricKeyWrapAlgorithm { get { return this.DefaultAsymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultSymmetricSignatureAlgorithm { get { return this.DefaultSymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricSignatureAlgorithm { get { return this.DefaultAsymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override int DefaultSignatureKeyDerivationLength { get { return 128; } }
- public override int DefaultSymmetricKeyLength { get { return 128; } }
- public override bool IsSymmetricKeyLengthSupported(int length) { return length >= 128 && length <= 256; }
- public override bool IsAsymmetricKeyLengthSupported(int length) { return length >= 1024 && length <= 4096; }
- internal override XmlDictionaryString DefaultCanonicalizationAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.ExclusiveC14n; } }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha1Digest; } }
- internal override XmlDictionaryString DefaultEncryptionAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes128Encryption; } }
- internal override XmlDictionaryString DefaultSymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Aes128KeyWrap; } }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaOaepKeyWrap; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha1Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha1Signature; } }
- public override string ToString()
- {
- return "Basic128";
- }
- }
- public class TripleDesSecurityAlgorithmSuite : SecurityAlgorithmSuite
- {
- public TripleDesSecurityAlgorithmSuite() : base() { }
- public override string DefaultCanonicalizationAlgorithm { get { return DefaultCanonicalizationAlgorithmDictionaryString.Value; } }
- public override string DefaultDigestAlgorithm { get { return DefaultDigestAlgorithmDictionaryString.Value; } }
- public override string DefaultEncryptionAlgorithm { get { return DefaultEncryptionAlgorithmDictionaryString.Value; } }
- public override int DefaultEncryptionKeyDerivationLength { get { return 192; } }
- public override string DefaultSymmetricKeyWrapAlgorithm { get { return DefaultSymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricKeyWrapAlgorithm { get { return this.DefaultAsymmetricKeyWrapAlgorithmDictionaryString.Value; } }
- public override string DefaultSymmetricSignatureAlgorithm { get { return DefaultSymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override string DefaultAsymmetricSignatureAlgorithm { get { return DefaultAsymmetricSignatureAlgorithmDictionaryString.Value; } }
- public override int DefaultSignatureKeyDerivationLength { get { return 192; } }
- public override int DefaultSymmetricKeyLength { get { return 192; } }
- public override bool IsSymmetricKeyLengthSupported(int length) { return length >= 192 && length <= 256; }
- public override bool IsAsymmetricKeyLengthSupported(int length) { return length >= 1024 && length <= 4096; }
- internal override XmlDictionaryString DefaultCanonicalizationAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.ExclusiveC14n; } }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha1Digest; } }
- internal override XmlDictionaryString DefaultEncryptionAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.TripleDesEncryption; } }
- internal override XmlDictionaryString DefaultSymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.TripleDesKeyWrap; } }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaOaepKeyWrap; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha1Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha1Signature; } }
- public override string ToString()
- {
- return "TripleDes";
- }
- }
- class Basic128Rsa15SecurityAlgorithmSuite : Basic128SecurityAlgorithmSuite
- {
- public Basic128Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaV15KeyWrap; } }
- public override string ToString()
- {
- return "Basic128Rsa15";
- }
- }
- class Basic192Rsa15SecurityAlgorithmSuite : Basic192SecurityAlgorithmSuite
- {
- public Basic192Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaV15KeyWrap; } }
- public override string ToString()
- {
- return "Basic192Rsa15";
- }
- }
- class Basic256Rsa15SecurityAlgorithmSuite : Basic256SecurityAlgorithmSuite
- {
- public Basic256Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaV15KeyWrap; } }
- public override string ToString()
- {
- return "Basic256Rsa15";
- }
- }
- class TripleDesRsa15SecurityAlgorithmSuite : TripleDesSecurityAlgorithmSuite
- {
- public TripleDesRsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultAsymmetricKeyWrapAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaV15KeyWrap; } }
- public override string ToString()
- {
- return "TripleDesRsa15";
- }
- }
- class Basic256Sha256SecurityAlgorithmSuite : Basic256SecurityAlgorithmSuite
- {
- public Basic256Sha256SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic256Sha256";
- }
- }
- class Basic192Sha256SecurityAlgorithmSuite : Basic192SecurityAlgorithmSuite
- {
- public Basic192Sha256SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic192Sha256";
- }
- }
- class Basic128Sha256SecurityAlgorithmSuite : Basic128SecurityAlgorithmSuite
- {
- public Basic128Sha256SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic128Sha256";
- }
- }
- class TripleDesSha256SecurityAlgorithmSuite : TripleDesSecurityAlgorithmSuite
- {
- public TripleDesSha256SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "TripleDesSha256";
- }
- }
- class Basic256Sha256Rsa15SecurityAlgorithmSuite : Basic256Rsa15SecurityAlgorithmSuite
- {
- public Basic256Sha256Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic256Sha256Rsa15";
- }
- }
- class Basic192Sha256Rsa15SecurityAlgorithmSuite : Basic192Rsa15SecurityAlgorithmSuite
- {
- public Basic192Sha256Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic192Sha256Rsa15";
- }
- }
- class Basic128Sha256Rsa15SecurityAlgorithmSuite : Basic128Rsa15SecurityAlgorithmSuite
- {
- public Basic128Sha256Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "Basic128Sha256Rsa15";
- }
- }
- class TripleDesSha256Rsa15SecurityAlgorithmSuite : TripleDesRsa15SecurityAlgorithmSuite
- {
- public TripleDesSha256Rsa15SecurityAlgorithmSuite() : base() { }
- internal override XmlDictionaryString DefaultDigestAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.Sha256Digest; } }
- internal override XmlDictionaryString DefaultSymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.HmacSha256Signature; } }
- internal override XmlDictionaryString DefaultAsymmetricSignatureAlgorithmDictionaryString { get { return XD.SecurityAlgorithmDictionary.RsaSha256Signature; } }
- public override string ToString()
- {
- return "TripleDesSha256Rsa15";
- }
- }
- }
|