Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / EncryptedData.cs / 1 / EncryptedData.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.Security.Cryptography; using System.ServiceModel.Channels; using System.Xml; class EncryptedData : EncryptedType { internal static readonly XmlDictionaryString ElementName = XD.XmlEncryptionDictionary.EncryptedData; internal static readonly string ElementType = XmlEncryptionStrings.ElementType; internal static readonly string ContentType = XmlEncryptionStrings.ContentType; SymmetricAlgorithm algorithm; byte[] decryptedBuffer; ArraySegmentbuffer; byte[] iv; byte[] cipherText; protected override XmlDictionaryString OpeningElementName { get { return ElementName; } } void EnsureDecryptionSet() { if (this.State == EncryptionState.DecryptionSetup) { SetPlainText(); } else if (this.State != EncryptionState.Decrypted) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.BadEncryptionState))); } } protected override void ForceEncryption() { CryptoHelper.GenerateIVAndEncrypt(this.algorithm, this.buffer, out this.iv, out this.cipherText); this.State = EncryptionState.Encrypted; this.buffer = new ArraySegment (CryptoHelper.EmptyBuffer); } public byte[] GetDecryptedBuffer() { EnsureDecryptionSet(); return this.decryptedBuffer; } protected override void ReadCipherData(XmlDictionaryReader reader) { this.cipherText = reader.ReadContentAsBase64(); } protected override void ReadCipherData(XmlDictionaryReader reader, long maxBufferSize) { this.cipherText = SecurityUtils.ReadContentAsBase64(reader, maxBufferSize); } void SetPlainText() { this.decryptedBuffer = CryptoHelper.ExtractIVAndDecrypt(this.algorithm, this.cipherText, 0, this.cipherText.Length); this.State = EncryptionState.Decrypted; } public void SetUpDecryption(SymmetricAlgorithm algorithm) { if (this.State != EncryptionState.Read) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.BadEncryptionState))); } if (algorithm == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("algorithm"); } this.algorithm = algorithm; this.State = EncryptionState.DecryptionSetup; } public void SetUpEncryption(SymmetricAlgorithm algorithm, ArraySegment buffer) { if (this.State != EncryptionState.New) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.BadEncryptionState))); } if (algorithm == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("algorithm"); } this.algorithm = algorithm; this.buffer = buffer; this.State = EncryptionState.EncryptionSetup; } protected override void WriteCipherData(XmlDictionaryWriter writer) { writer.WriteBase64(this.iv, 0, this.iv.Length); writer.WriteBase64(this.cipherText, 0, this.cipherText.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
- PixelFormats.cs
- DependencyObjectProvider.cs
- StringResourceManager.cs
- WebEventCodes.cs
- RandomDelayQueuedSendsAsyncResult.cs
- ButtonChrome.cs
- RequestContext.cs
- SHA512.cs
- DesignerPainter.cs
- QueryTask.cs
- TripleDESCryptoServiceProvider.cs
- ScrollEventArgs.cs
- CompatibleComparer.cs
- HtmlTitle.cs
- ResourceWriter.cs
- VectorValueSerializer.cs
- ImageSource.cs
- ImageClickEventArgs.cs
- AssemblyEvidenceFactory.cs
- fixedPageContentExtractor.cs
- SendMailErrorEventArgs.cs
- XmlSchemaFacet.cs
- ObjectDataSourceMethodEventArgs.cs
- XsltOutput.cs
- _Semaphore.cs
- DataGridTextBox.cs
- ToolboxItemImageConverter.cs
- XmlQualifiedName.cs
- ProtocolElement.cs
- Models.cs
- EventLogStatus.cs
- OleDbWrapper.cs
- bindurihelper.cs
- LinkDescriptor.cs
- OrderByQueryOptionExpression.cs
- UxThemeWrapper.cs
- Matrix.cs
- Baml2006KnownTypes.cs
- KeyInfo.cs
- ZipFileInfo.cs
- PermissionRequestEvidence.cs
- SecUtil.cs
- CodeDomSerializerBase.cs
- NumericUpDownAccelerationCollection.cs
- CodeAccessSecurityEngine.cs
- TextSegment.cs
- StaticFileHandler.cs
- ExceptionTrace.cs
- BehaviorDragDropEventArgs.cs
- HttpProfileGroupBase.cs
- MonthChangedEventArgs.cs
- Message.cs
- DataGridViewSelectedColumnCollection.cs
- CodeAttributeDeclarationCollection.cs
- PopupControlService.cs
- VoiceInfo.cs
- PatternMatchRules.cs
- ChannelRequirements.cs
- _emptywebproxy.cs
- TextEditor.cs
- TdsParameterSetter.cs
- PropertyValueEditor.cs
- ZipArchive.cs
- AbandonedMutexException.cs
- UIElementIsland.cs
- WebResourceAttribute.cs
- WindowsFormsHostAutomationPeer.cs
- sqlmetadatafactory.cs
- ContextProperty.cs
- BinarySerializer.cs
- EnumType.cs
- InputBinder.cs
- FillErrorEventArgs.cs
- ProcessInputEventArgs.cs
- HtmlGenericControl.cs
- connectionpool.cs
- nulltextcontainer.cs
- TypeConverterHelper.cs
- SynchronizingStream.cs
- HealthMonitoringSection.cs
- Nullable.cs
- LayoutEditorPart.cs
- TextEditorSpelling.cs
- TextEditorCharacters.cs
- LayoutManager.cs
- ServiceModelExtensionCollectionElement.cs
- AccessViolationException.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- DictionarySectionHandler.cs
- VisualStyleRenderer.cs
- ConfigViewGenerator.cs
- PathTooLongException.cs
- TextEndOfLine.cs
- AddingNewEventArgs.cs
- ListSourceHelper.cs
- UrlAuthorizationModule.cs
- FunctionDescription.cs
- PeerTransportBindingElement.cs
- ToolStripDesigner.cs
- BasicDesignerLoader.cs