Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / EncryptedKey.cs / 1 / EncryptedKey.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Security
{
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
sealed class EncryptedKey : EncryptedType
{
internal static readonly XmlDictionaryString CarriedKeyElementName = XD.XmlEncryptionDictionary.CarriedKeyName;
internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.EncryptedKey;
internal static readonly XmlDictionaryString RecipientAttribute = XD.XmlEncryptionDictionary.Recipient;
string carriedKeyName;
string recipient;
ReferenceList referenceList;
byte[] wrappedKey;
public string CarriedKeyName
{
get { return this.carriedKeyName; }
set { this.carriedKeyName = value; }
}
public string Recipient
{
get { return this.recipient; }
set { this.recipient = value; }
}
public ReferenceList ReferenceList
{
get { return this.referenceList; }
set { this.referenceList = value; }
}
protected override XmlDictionaryString OpeningElementName
{
get { return ElementName; }
}
protected override void ForceEncryption()
{
// no work to be done here since, unlike bulk encryption, key wrapping is done eagerly
}
public byte[] GetWrappedKey()
{
if (this.State == EncryptionState.New)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.BadEncryptionState)));
}
return this.wrappedKey;
}
public void SetUpKeyWrap(byte[] wrappedKey)
{
if (this.State != EncryptionState.New)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.BadEncryptionState)));
}
if (wrappedKey == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("wrappedKey");
}
this.wrappedKey = wrappedKey;
this.State = EncryptionState.Encrypted;
}
protected override void ReadAdditionalAttributes(XmlDictionaryReader reader)
{
this.recipient = reader.GetAttribute(RecipientAttribute, null);
}
protected override void ReadAdditionalElements(XmlDictionaryReader reader)
{
if (reader.IsStartElement(ReferenceList.ElementName, EncryptedType.NamespaceUri))
{
this.referenceList = new ReferenceList();
this.referenceList.ReadFrom(reader);
}
if (reader.IsStartElement(CarriedKeyElementName, EncryptedType.NamespaceUri))
{
reader.ReadStartElement(CarriedKeyElementName, EncryptedType.NamespaceUri);
this.carriedKeyName = reader.ReadString();
reader.ReadEndElement();
}
}
protected override void ReadCipherData(XmlDictionaryReader reader)
{
this.wrappedKey = reader.ReadContentAsBase64();
}
protected override void ReadCipherData(XmlDictionaryReader reader, long maxBufferSize)
{
this.wrappedKey = SecurityUtils.ReadContentAsBase64(reader, maxBufferSize);
}
protected override void WriteAdditionalAttributes(XmlDictionaryWriter writer)
{
if (this.recipient != null)
{
writer.WriteAttributeString(RecipientAttribute, null, this.recipient);
}
}
protected override void WriteAdditionalElements(XmlDictionaryWriter writer)
{
if (this.carriedKeyName != null)
{
writer.WriteStartElement(CarriedKeyElementName, EncryptedType.NamespaceUri);
writer.WriteString(this.carriedKeyName);
writer.WriteEndElement(); // CarriedKeyName
}
if (this.referenceList != null)
{
this.referenceList.WriteTo(writer, ServiceModelDictionaryManager.Instance);
}
}
protected override void WriteCipherData(XmlDictionaryWriter writer)
{
writer.WriteBase64(this.wrappedKey, 0, this.wrappedKey.Length);
}
}
}
// 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
- Geometry.cs
- Timeline.cs
- CommandDevice.cs
- TaiwanCalendar.cs
- ExpressionBuilderCollection.cs
- OpenTypeLayoutCache.cs
- InstanceOwnerException.cs
- StringBuilder.cs
- SafeHGlobalHandleCritical.cs
- WebPartEditorCancelVerb.cs
- CommentAction.cs
- ColumnBinding.cs
- ObjectSet.cs
- ICspAsymmetricAlgorithm.cs
- SmiRecordBuffer.cs
- TimestampInformation.cs
- BindingList.cs
- SqlDependencyUtils.cs
- BoundField.cs
- EdmEntityTypeAttribute.cs
- NamespaceQuery.cs
- GrammarBuilder.cs
- SingleAnimationUsingKeyFrames.cs
- QilChoice.cs
- TextServicesCompartment.cs
- ColumnWidthChangedEvent.cs
- PartialTrustVisibleAssemblyCollection.cs
- CompiledXpathExpr.cs
- MessageHeaderInfoTraceRecord.cs
- AspNetHostingPermission.cs
- NetworkInformationException.cs
- TagPrefixAttribute.cs
- WhitespaceRuleLookup.cs
- BufferedReceiveElement.cs
- DataGridViewColumnCollection.cs
- RtfControls.cs
- Constraint.cs
- TextRunCache.cs
- CryptoProvider.cs
- TableCellCollection.cs
- IdleTimeoutMonitor.cs
- Lock.cs
- FilteredDataSetHelper.cs
- CreateInstanceBinder.cs
- ProcessHostConfigUtils.cs
- XslCompiledTransform.cs
- NumericUpDown.cs
- SHA512.cs
- TableCellCollection.cs
- FontCacheLogic.cs
- BidirectionalDictionary.cs
- PropertyValueUIItem.cs
- Message.cs
- MouseGestureConverter.cs
- GuidelineSet.cs
- ConstraintCollection.cs
- CompilerError.cs
- StyleSelector.cs
- WorkflowElementDialog.cs
- FormsAuthenticationCredentials.cs
- DynamicDataRouteHandler.cs
- CheckBox.cs
- ControlBuilder.cs
- PseudoWebRequest.cs
- FormatConvertedBitmap.cs
- DetailsViewInsertEventArgs.cs
- EntityDataSourceEntityTypeFilterItem.cs
- SingleResultAttribute.cs
- DrawListViewItemEventArgs.cs
- Subtree.cs
- SrgsElementFactoryCompiler.cs
- DispatcherExceptionEventArgs.cs
- FrameworkPropertyMetadata.cs
- QueryGenerator.cs
- XhtmlStyleClass.cs
- FileLoadException.cs
- util.cs
- SymmetricAlgorithm.cs
- UniqueConstraint.cs
- XmlBinaryReader.cs
- TextReader.cs
- EmptyReadOnlyDictionaryInternal.cs
- CategoryAttribute.cs
- PlatformCulture.cs
- MimeFormReflector.cs
- ResourceManager.cs
- TextDecorationUnitValidation.cs
- ProtocolsConfigurationEntry.cs
- TextEditorSelection.cs
- XmlConvert.cs
- X509ThumbprintKeyIdentifierClause.cs
- UnknownBitmapDecoder.cs
- XslAstAnalyzer.cs
- XmlReflectionImporter.cs
- XmlSerializationReader.cs
- NavigationHelper.cs
- StatusBarDrawItemEvent.cs
- CreateUserWizardStep.cs
- HyperLinkDesigner.cs
- WpfSharedBamlSchemaContext.cs