Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / Tokens / BinarySecretSecurityToken.cs / 1 / BinarySecretSecurityToken.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Security.Tokens
{
using System.Collections;
using System.ServiceModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.IdentityModel.Tokens;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
public class BinarySecretSecurityToken : SecurityToken
{
string id;
DateTime effectiveTime;
byte[] key;
ReadOnlyCollection securityKeys;
public BinarySecretSecurityToken(int keySizeInBits)
: this(SecurityUniqueId.Create().Value, keySizeInBits)
{
}
public BinarySecretSecurityToken(string id, int keySizeInBits)
: this(id, keySizeInBits, true)
{
}
public BinarySecretSecurityToken(byte[] key)
: this(SecurityUniqueId.Create().Value, key)
{
}
public BinarySecretSecurityToken(string id, byte[] key)
: this(id, key, true)
{
}
protected BinarySecretSecurityToken(string id, int keySizeInBits, bool allowCrypto)
{
if (keySizeInBits <= 0 || keySizeInBits >= 512)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("keySizeInBits", SR.GetString(SR.ValueMustBeInRange, 0, 512)));
}
if ((keySizeInBits % 8) != 0)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("keySizeInBits", SR.GetString(SR.KeyLengthMustBeMultipleOfEight, keySizeInBits)));
}
this.id = id;
this.effectiveTime = DateTime.UtcNow;
this.key = new byte[keySizeInBits / 8];
CryptoHelper.FillRandomBytes(this.key);
if (allowCrypto)
{
this.securityKeys = SecurityUtils.CreateSymmetricSecurityKeys(this.key);
}
else
{
this.securityKeys = EmptyReadOnlyCollection.Instance;
}
}
protected BinarySecretSecurityToken(string id, byte[] key, bool allowCrypto)
{
if (key == null)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("key");
this.id = id;
this.effectiveTime = DateTime.UtcNow;
this.key = new byte[key.Length];
Buffer.BlockCopy(key, 0, this.key, 0, key.Length);
if (allowCrypto)
{
this.securityKeys = SecurityUtils.CreateSymmetricSecurityKeys(this.key);
}
else
{
this.securityKeys = EmptyReadOnlyCollection.Instance;
}
}
public override string Id
{
get { return this.id; }
}
public override DateTime ValidFrom
{
get { return this.effectiveTime; }
}
public override DateTime ValidTo
{
// Never expire
get { return DateTime.MaxValue; }
}
public int KeySize
{
get { return (this.key.Length * 8); }
}
public override ReadOnlyCollection SecurityKeys
{
get { return this.securityKeys; }
}
public byte[] GetKeyBytes()
{
return SecurityUtils.CloneBuffer(this.key);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlTextReaderImplHelpers.cs
- OutputScope.cs
- ManipulationPivot.cs
- PageThemeBuildProvider.cs
- HtmlTitle.cs
- CompoundFileDeflateTransform.cs
- SelectionEditingBehavior.cs
- SecurityChannel.cs
- DocumentXPathNavigator.cs
- DataGridViewColumnHeaderCell.cs
- Configuration.cs
- HostingEnvironmentSection.cs
- RequestQueryParser.cs
- ServiceAuthorizationManager.cs
- KeySpline.cs
- AutomationElement.cs
- SHA512.cs
- DesignSurfaceManager.cs
- HealthMonitoringSection.cs
- EntitySetBase.cs
- WorkflowServiceHostFactory.cs
- AutomationIdentifierGuids.cs
- DataGridViewComboBoxCell.cs
- XmlDocumentType.cs
- DataGridColumn.cs
- XNodeValidator.cs
- ToolStripItemEventArgs.cs
- DataServiceProviderWrapper.cs
- ScrollData.cs
- PictureBox.cs
- CellRelation.cs
- SqlMethods.cs
- DbConnectionPoolGroup.cs
- GridView.cs
- QueryComponents.cs
- ObjectSet.cs
- ConditionalAttribute.cs
- ObjectItemConventionAssemblyLoader.cs
- ModelUIElement3D.cs
- XhtmlCssHandler.cs
- XsltArgumentList.cs
- MultiSelectRootGridEntry.cs
- ConfigurationHelpers.cs
- ExtensionSurface.cs
- TextAutomationPeer.cs
- BaseInfoTable.cs
- DecoderFallback.cs
- CustomTokenProvider.cs
- ColorKeyFrameCollection.cs
- FontUnit.cs
- Guid.cs
- RichTextBoxAutomationPeer.cs
- LambdaCompiler.ControlFlow.cs
- RepeaterItem.cs
- Int32.cs
- XPathDocumentIterator.cs
- GPStream.cs
- XpsDocument.cs
- TraversalRequest.cs
- RelativeSource.cs
- NamedPipeTransportSecurity.cs
- XmlMapping.cs
- AnnotationAuthorChangedEventArgs.cs
- Method.cs
- GridViewColumnCollectionChangedEventArgs.cs
- SqlRecordBuffer.cs
- ModelItemCollectionImpl.cs
- ToolStripComboBox.cs
- RepeaterItem.cs
- XmlCharCheckingReader.cs
- NamespaceExpr.cs
- DynamicPhysicalDiscoSearcher.cs
- DataGridSortCommandEventArgs.cs
- Image.cs
- EntityKeyElement.cs
- AsymmetricSignatureFormatter.cs
- CacheChildrenQuery.cs
- ReadWriteObjectLock.cs
- GridSplitterAutomationPeer.cs
- NativeMethods.cs
- SwitchAttribute.cs
- DataGridViewCellStyle.cs
- WizardStepBase.cs
- UniformGrid.cs
- MaterialGroup.cs
- Ipv6Element.cs
- Quack.cs
- PathSegmentCollection.cs
- Substitution.cs
- ConfigXmlDocument.cs
- AssemblyCollection.cs
- NonClientArea.cs
- PaperSize.cs
- BaseCollection.cs
- GroupByQueryOperator.cs
- FullTextLine.cs
- XPathNodeIterator.cs
- LongTypeConverter.cs
- TextBlockAutomationPeer.cs
- OracleParameter.cs