Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / clr / src / ManagedLibraries / Security / System / Security / Cryptography / Xml / EncryptedKey.cs / 1 / EncryptedKey.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // EncryptedKey.cs // // This object implements the EncryptedKey element. // // 04/01/2002 // namespace System.Security.Cryptography.Xml { using System; using System.Collections; using System.Xml; [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class EncryptedKey : EncryptedType { private string m_recipient; private string m_carriedKeyName; private ReferenceList m_referenceList; public EncryptedKey () {} public string Recipient { get { // an unspecified value for an XmlAttribute is String.Empty if (m_recipient == null) m_recipient = String.Empty; return m_recipient; } set { m_recipient = value; m_cachedXml = null; } } public string CarriedKeyName { get { return m_carriedKeyName; } set { m_carriedKeyName = value; m_cachedXml = null; } } public ReferenceList ReferenceList { get { if (m_referenceList == null) m_referenceList = new ReferenceList(); return m_referenceList; } } public void AddReference (DataReference dataReference) { ReferenceList.Add(dataReference); } public void AddReference (KeyReference keyReference) { ReferenceList.Add(keyReference); } public override void LoadXml (XmlElement value) { if (value == null) throw new ArgumentNullException("value"); XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); nsm.AddNamespace("ds",SignedXml.XmlDsigNamespaceUrl); this.Id = Utils.GetAttribute(value, "Id", EncryptedXml.XmlEncNamespaceUrl); this.Type = Utils.GetAttribute(value, "Type", EncryptedXml.XmlEncNamespaceUrl); this.MimeType = Utils.GetAttribute(value, "MimeType", EncryptedXml.XmlEncNamespaceUrl); this.Encoding = Utils.GetAttribute(value, "Encoding", EncryptedXml.XmlEncNamespaceUrl); this.Recipient = Utils.GetAttribute(value, "Recipient", EncryptedXml.XmlEncNamespaceUrl); XmlNode encryptionMethodNode = value.SelectSingleNode("enc:EncryptionMethod", nsm); // EncryptionMethod this.EncryptionMethod = new EncryptionMethod(); if (encryptionMethodNode != null) this.EncryptionMethod.LoadXml(encryptionMethodNode as XmlElement); // Key Info this.KeyInfo = new KeyInfo(); XmlNode keyInfoNode = value.SelectSingleNode("ds:KeyInfo", nsm); if (keyInfoNode != null) this.KeyInfo.LoadXml(keyInfoNode as XmlElement); // CipherData XmlNode cipherDataNode = value.SelectSingleNode("enc:CipherData", nsm); if (cipherDataNode == null) throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_MissingCipherData")); this.CipherData = new CipherData(); this.CipherData.LoadXml(cipherDataNode as XmlElement); // EncryptionProperties XmlNode encryptionPropertiesNode = value.SelectSingleNode("enc:EncryptionProperties", nsm); if (encryptionPropertiesNode != null) { // Select the EncryptionProperty elements inside the EncryptionProperties element XmlNodeList encryptionPropertyNodes = encryptionPropertiesNode.SelectNodes("enc:EncryptionProperty", nsm); if (encryptionPropertyNodes != null) { foreach (XmlNode node in encryptionPropertyNodes) { EncryptionProperty ep = new EncryptionProperty(); ep.LoadXml(node as XmlElement); this.EncryptionProperties.Add(ep); } } } // CarriedKeyName XmlNode carriedKeyNameNode = value.SelectSingleNode("enc:CarriedKeyName", nsm); if (carriedKeyNameNode != null) { this.CarriedKeyName = carriedKeyNameNode.InnerText; } // ReferenceList XmlNode referenceListNode = value.SelectSingleNode("enc:ReferenceList", nsm); if (referenceListNode != null) { // Select the DataReference elements inside the ReferenceList element XmlNodeList dataReferenceNodes = referenceListNode.SelectNodes("enc:DataReference", nsm); if (dataReferenceNodes != null) { foreach (XmlNode node in dataReferenceNodes) { DataReference dr = new DataReference(); dr.LoadXml(node as XmlElement); this.ReferenceList.Add(dr); } } // Select the KeyReference elements inside the ReferenceList element XmlNodeList keyReferenceNodes = referenceListNode.SelectNodes("enc:KeyReference", nsm); if (keyReferenceNodes != null) { foreach (XmlNode node in keyReferenceNodes) { KeyReference kr = new KeyReference(); kr.LoadXml(node as XmlElement); this.ReferenceList.Add(kr); } } } // Save away the cached value m_cachedXml = value; } public override XmlElement GetXml () { if (CacheValid) return m_cachedXml; XmlDocument document = new XmlDocument(); document.PreserveWhitespace = true; return GetXml(document); } internal XmlElement GetXml (XmlDocument document) { // Create the EncryptedKey element XmlElement encryptedKeyElement = (XmlElement) document.CreateElement("EncryptedKey", EncryptedXml.XmlEncNamespaceUrl); // Deal with attributes if (!String.IsNullOrEmpty(this.Id)) encryptedKeyElement.SetAttribute("Id", this.Id); if (!String.IsNullOrEmpty(this.Type)) encryptedKeyElement.SetAttribute("Type", this.Type); if (!String.IsNullOrEmpty(this.MimeType)) encryptedKeyElement.SetAttribute("MimeType", this.MimeType); if (!String.IsNullOrEmpty(this.Encoding)) encryptedKeyElement.SetAttribute("Encoding", this.Encoding); if (!String.IsNullOrEmpty(this.Recipient)) encryptedKeyElement.SetAttribute("Recipient", this.Recipient); // EncryptionMethod if (this.EncryptionMethod != null) encryptedKeyElement.AppendChild(this.EncryptionMethod.GetXml(document)); // KeyInfo if (this.KeyInfo.Count > 0) encryptedKeyElement.AppendChild(this.KeyInfo.GetXml(document)); // CipherData if (this.CipherData == null) throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_MissingCipherData")); encryptedKeyElement.AppendChild(this.CipherData.GetXml(document)); // EncryptionProperties if (this.EncryptionProperties.Count > 0) { XmlElement encryptionPropertiesElement = document.CreateElement("EncryptionProperties", EncryptedXml.XmlEncNamespaceUrl); for (int index = 0; index < this.EncryptionProperties.Count; index++) { EncryptionProperty ep = this.EncryptionProperties.Item(index); encryptionPropertiesElement.AppendChild(ep.GetXml(document)); } encryptedKeyElement.AppendChild(encryptionPropertiesElement); } // ReferenceList if (this.ReferenceList.Count > 0) { XmlElement referenceListElement = document.CreateElement("ReferenceList", EncryptedXml.XmlEncNamespaceUrl); for (int index = 0; index < this.ReferenceList.Count; index++) { referenceListElement.AppendChild(this.ReferenceList[index].GetXml(document)); } encryptedKeyElement.AppendChild(referenceListElement); } // CarriedKeyName if (this.CarriedKeyName != null) { XmlElement carriedKeyNameElement = (XmlElement) document.CreateElement("CarriedKeyName", EncryptedXml.XmlEncNamespaceUrl); XmlText carriedKeyNameText = document.CreateTextNode(this.CarriedKeyName); carriedKeyNameElement.AppendChild(carriedKeyNameText); encryptedKeyElement.AppendChild(carriedKeyNameElement); } return encryptedKeyElement; } } [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class ReferenceList : IList { private ArrayList m_references; public ReferenceList() { m_references = new ArrayList(); } public IEnumerator GetEnumerator() { return m_references.GetEnumerator(); } public int Count { get { return m_references.Count; } } public int Add(Object value) { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); return m_references.Add(value); } public void Clear() { m_references.Clear(); } public bool Contains(Object value) { return m_references.Contains(value); } public int IndexOf(Object value) { return m_references.IndexOf(value); } public void Insert(int index, Object value) { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); m_references.Insert(index, value); } public void Remove(Object value) { m_references.Remove(value); } public void RemoveAt(int index) { m_references.RemoveAt(index); } public EncryptedReference Item(int index) { return (EncryptedReference) m_references[index]; } [System.Runtime.CompilerServices.IndexerName ("ItemOf")] public EncryptedReference this[int index] { get { return this.Item(index); } set { ((IList) this)[index] = value; } } ///Object IList.this[int index] { get { return m_references[index]; } set { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); m_references[index] = value; } } public void CopyTo(Array array, int index) { m_references.CopyTo(array, index); } Boolean IList.IsFixedSize { get { return m_references.IsFixedSize; } } Boolean IList.IsReadOnly { get { return m_references.IsReadOnly; } } public Object SyncRoot { get { return m_references.SyncRoot; } } public bool IsSynchronized { get { return m_references.IsSynchronized; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // EncryptedKey.cs // // This object implements the EncryptedKey element. // // 04/01/2002 // namespace System.Security.Cryptography.Xml { using System; using System.Collections; using System.Xml; [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class EncryptedKey : EncryptedType { private string m_recipient; private string m_carriedKeyName; private ReferenceList m_referenceList; public EncryptedKey () {} public string Recipient { get { // an unspecified value for an XmlAttribute is String.Empty if (m_recipient == null) m_recipient = String.Empty; return m_recipient; } set { m_recipient = value; m_cachedXml = null; } } public string CarriedKeyName { get { return m_carriedKeyName; } set { m_carriedKeyName = value; m_cachedXml = null; } } public ReferenceList ReferenceList { get { if (m_referenceList == null) m_referenceList = new ReferenceList(); return m_referenceList; } } public void AddReference (DataReference dataReference) { ReferenceList.Add(dataReference); } public void AddReference (KeyReference keyReference) { ReferenceList.Add(keyReference); } public override void LoadXml (XmlElement value) { if (value == null) throw new ArgumentNullException("value"); XmlNamespaceManager nsm = new XmlNamespaceManager(value.OwnerDocument.NameTable); nsm.AddNamespace("enc", EncryptedXml.XmlEncNamespaceUrl); nsm.AddNamespace("ds",SignedXml.XmlDsigNamespaceUrl); this.Id = Utils.GetAttribute(value, "Id", EncryptedXml.XmlEncNamespaceUrl); this.Type = Utils.GetAttribute(value, "Type", EncryptedXml.XmlEncNamespaceUrl); this.MimeType = Utils.GetAttribute(value, "MimeType", EncryptedXml.XmlEncNamespaceUrl); this.Encoding = Utils.GetAttribute(value, "Encoding", EncryptedXml.XmlEncNamespaceUrl); this.Recipient = Utils.GetAttribute(value, "Recipient", EncryptedXml.XmlEncNamespaceUrl); XmlNode encryptionMethodNode = value.SelectSingleNode("enc:EncryptionMethod", nsm); // EncryptionMethod this.EncryptionMethod = new EncryptionMethod(); if (encryptionMethodNode != null) this.EncryptionMethod.LoadXml(encryptionMethodNode as XmlElement); // Key Info this.KeyInfo = new KeyInfo(); XmlNode keyInfoNode = value.SelectSingleNode("ds:KeyInfo", nsm); if (keyInfoNode != null) this.KeyInfo.LoadXml(keyInfoNode as XmlElement); // CipherData XmlNode cipherDataNode = value.SelectSingleNode("enc:CipherData", nsm); if (cipherDataNode == null) throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_MissingCipherData")); this.CipherData = new CipherData(); this.CipherData.LoadXml(cipherDataNode as XmlElement); // EncryptionProperties XmlNode encryptionPropertiesNode = value.SelectSingleNode("enc:EncryptionProperties", nsm); if (encryptionPropertiesNode != null) { // Select the EncryptionProperty elements inside the EncryptionProperties element XmlNodeList encryptionPropertyNodes = encryptionPropertiesNode.SelectNodes("enc:EncryptionProperty", nsm); if (encryptionPropertyNodes != null) { foreach (XmlNode node in encryptionPropertyNodes) { EncryptionProperty ep = new EncryptionProperty(); ep.LoadXml(node as XmlElement); this.EncryptionProperties.Add(ep); } } } // CarriedKeyName XmlNode carriedKeyNameNode = value.SelectSingleNode("enc:CarriedKeyName", nsm); if (carriedKeyNameNode != null) { this.CarriedKeyName = carriedKeyNameNode.InnerText; } // ReferenceList XmlNode referenceListNode = value.SelectSingleNode("enc:ReferenceList", nsm); if (referenceListNode != null) { // Select the DataReference elements inside the ReferenceList element XmlNodeList dataReferenceNodes = referenceListNode.SelectNodes("enc:DataReference", nsm); if (dataReferenceNodes != null) { foreach (XmlNode node in dataReferenceNodes) { DataReference dr = new DataReference(); dr.LoadXml(node as XmlElement); this.ReferenceList.Add(dr); } } // Select the KeyReference elements inside the ReferenceList element XmlNodeList keyReferenceNodes = referenceListNode.SelectNodes("enc:KeyReference", nsm); if (keyReferenceNodes != null) { foreach (XmlNode node in keyReferenceNodes) { KeyReference kr = new KeyReference(); kr.LoadXml(node as XmlElement); this.ReferenceList.Add(kr); } } } // Save away the cached value m_cachedXml = value; } public override XmlElement GetXml () { if (CacheValid) return m_cachedXml; XmlDocument document = new XmlDocument(); document.PreserveWhitespace = true; return GetXml(document); } internal XmlElement GetXml (XmlDocument document) { // Create the EncryptedKey element XmlElement encryptedKeyElement = (XmlElement) document.CreateElement("EncryptedKey", EncryptedXml.XmlEncNamespaceUrl); // Deal with attributes if (!String.IsNullOrEmpty(this.Id)) encryptedKeyElement.SetAttribute("Id", this.Id); if (!String.IsNullOrEmpty(this.Type)) encryptedKeyElement.SetAttribute("Type", this.Type); if (!String.IsNullOrEmpty(this.MimeType)) encryptedKeyElement.SetAttribute("MimeType", this.MimeType); if (!String.IsNullOrEmpty(this.Encoding)) encryptedKeyElement.SetAttribute("Encoding", this.Encoding); if (!String.IsNullOrEmpty(this.Recipient)) encryptedKeyElement.SetAttribute("Recipient", this.Recipient); // EncryptionMethod if (this.EncryptionMethod != null) encryptedKeyElement.AppendChild(this.EncryptionMethod.GetXml(document)); // KeyInfo if (this.KeyInfo.Count > 0) encryptedKeyElement.AppendChild(this.KeyInfo.GetXml(document)); // CipherData if (this.CipherData == null) throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_MissingCipherData")); encryptedKeyElement.AppendChild(this.CipherData.GetXml(document)); // EncryptionProperties if (this.EncryptionProperties.Count > 0) { XmlElement encryptionPropertiesElement = document.CreateElement("EncryptionProperties", EncryptedXml.XmlEncNamespaceUrl); for (int index = 0; index < this.EncryptionProperties.Count; index++) { EncryptionProperty ep = this.EncryptionProperties.Item(index); encryptionPropertiesElement.AppendChild(ep.GetXml(document)); } encryptedKeyElement.AppendChild(encryptionPropertiesElement); } // ReferenceList if (this.ReferenceList.Count > 0) { XmlElement referenceListElement = document.CreateElement("ReferenceList", EncryptedXml.XmlEncNamespaceUrl); for (int index = 0; index < this.ReferenceList.Count; index++) { referenceListElement.AppendChild(this.ReferenceList[index].GetXml(document)); } encryptedKeyElement.AppendChild(referenceListElement); } // CarriedKeyName if (this.CarriedKeyName != null) { XmlElement carriedKeyNameElement = (XmlElement) document.CreateElement("CarriedKeyName", EncryptedXml.XmlEncNamespaceUrl); XmlText carriedKeyNameText = document.CreateTextNode(this.CarriedKeyName); carriedKeyNameElement.AppendChild(carriedKeyNameText); encryptedKeyElement.AppendChild(carriedKeyNameElement); } return encryptedKeyElement; } } [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class ReferenceList : IList { private ArrayList m_references; public ReferenceList() { m_references = new ArrayList(); } public IEnumerator GetEnumerator() { return m_references.GetEnumerator(); } public int Count { get { return m_references.Count; } } public int Add(Object value) { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); return m_references.Add(value); } public void Clear() { m_references.Clear(); } public bool Contains(Object value) { return m_references.Contains(value); } public int IndexOf(Object value) { return m_references.IndexOf(value); } public void Insert(int index, Object value) { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); m_references.Insert(index, value); } public void Remove(Object value) { m_references.Remove(value); } public void RemoveAt(int index) { m_references.RemoveAt(index); } public EncryptedReference Item(int index) { return (EncryptedReference) m_references[index]; } [System.Runtime.CompilerServices.IndexerName ("ItemOf")] public EncryptedReference this[int index] { get { return this.Item(index); } set { ((IList) this)[index] = value; } } /// Object IList.this[int index] { get { return m_references[index]; } set { if (value == null) throw new ArgumentNullException("value"); if (!(value is DataReference) && !(value is KeyReference)) throw new ArgumentException(SecurityResources.GetResourceString("Cryptography_Xml_IncorrectObjectType"), "value"); m_references[index] = value; } } public void CopyTo(Array array, int index) { m_references.CopyTo(array, index); } Boolean IList.IsFixedSize { get { return m_references.IsFixedSize; } } Boolean IList.IsReadOnly { get { return m_references.IsReadOnly; } } public Object SyncRoot { get { return m_references.SyncRoot; } } public bool IsSynchronized { get { return m_references.IsSynchronized; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridView.cs
- BinHexEncoder.cs
- WebPartVerbCollection.cs
- ClockGroup.cs
- DbTransaction.cs
- TextBox.cs
- XmlSchemaAny.cs
- EntityParameter.cs
- DynamicDataManager.cs
- CookieProtection.cs
- PropertyDescriptorGridEntry.cs
- FirstMatchCodeGroup.cs
- CustomErrorsSectionWrapper.cs
- AdPostCacheSubstitution.cs
- XPathNodeHelper.cs
- PackWebResponse.cs
- MembershipAdapter.cs
- SafeProcessHandle.cs
- ADRole.cs
- RequestCacheEntry.cs
- Crypto.cs
- Helpers.cs
- TextCompositionEventArgs.cs
- SRef.cs
- MenuTracker.cs
- SessionPageStatePersister.cs
- SQLSingleStorage.cs
- TemplateComponentConnector.cs
- SvcMapFileSerializer.cs
- HttpListenerResponse.cs
- CollectionsUtil.cs
- LocalClientSecuritySettingsElement.cs
- NameValueConfigurationCollection.cs
- StorageFunctionMapping.cs
- NavigatingCancelEventArgs.cs
- ToolBarButton.cs
- ProxyElement.cs
- DataFieldConverter.cs
- UserControlCodeDomTreeGenerator.cs
- ValidationHelper.cs
- MasterPageCodeDomTreeGenerator.cs
- EntityDataSourceChangedEventArgs.cs
- TextComposition.cs
- FocusWithinProperty.cs
- CalendarDay.cs
- InertiaRotationBehavior.cs
- HelpProvider.cs
- PeerApplication.cs
- WaitHandleCannotBeOpenedException.cs
- DataGridColumnDropSeparator.cs
- DataSet.cs
- XmlQueryType.cs
- CommandManager.cs
- WorkflowRuntimeElement.cs
- SingleKeyFrameCollection.cs
- Wow64ConfigurationLoader.cs
- ToolStripDropDownItem.cs
- TextChangedEventArgs.cs
- QuestionEventArgs.cs
- DictionaryChange.cs
- InstanceDataCollection.cs
- Int64Animation.cs
- XmlDataCollection.cs
- GeneralTransform3DTo2DTo3D.cs
- MenuTracker.cs
- FormViewActionList.cs
- BuildProvider.cs
- StringExpressionSet.cs
- ComboBoxAutomationPeer.cs
- OSFeature.cs
- ElementNotAvailableException.cs
- PassportAuthentication.cs
- WebPartConnectionsCancelEventArgs.cs
- DataGridSortingEventArgs.cs
- FileDialogCustomPlace.cs
- PhysicalAddress.cs
- DeferredTextReference.cs
- Claim.cs
- DecimalKeyFrameCollection.cs
- InvokeFunc.cs
- ListViewSortEventArgs.cs
- FileDialogPermission.cs
- PropertyGrid.cs
- DPAPIProtectedConfigurationProvider.cs
- JavaScriptString.cs
- ContainerSelectorActiveEvent.cs
- RIPEMD160.cs
- ValidationSummary.cs
- XmlHelper.cs
- TaskFileService.cs
- ListViewItemMouseHoverEvent.cs
- MimeAnyImporter.cs
- XmlMemberMapping.cs
- dataSvcMapFileLoader.cs
- SqlConnectionPoolGroupProviderInfo.cs
- RoleBoolean.cs
- HttpCookiesSection.cs
- Rectangle.cs
- ItemChangedEventArgs.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs