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
- Activator.cs
- SafeReversePInvokeHandle.cs
- MenuCommand.cs
- MenuItem.cs
- MediaContextNotificationWindow.cs
- ConstraintConverter.cs
- ExpressionVisitorHelpers.cs
- HttpFileCollection.cs
- Win32SafeHandles.cs
- UrlPropertyAttribute.cs
- WebServicesSection.cs
- DbParameterHelper.cs
- BuildResult.cs
- CodeTypeDelegate.cs
- ConfigurationLockCollection.cs
- ObjRef.cs
- FormatterServices.cs
- ControlBuilder.cs
- CompilerGeneratedAttribute.cs
- ObjectParameter.cs
- InteropAutomationProvider.cs
- Baml2006Reader.cs
- XmlILAnnotation.cs
- InvalidCastException.cs
- RegexCaptureCollection.cs
- FormViewUpdatedEventArgs.cs
- ScopedKnownTypes.cs
- MemoryStream.cs
- InputScopeNameConverter.cs
- columnmapfactory.cs
- CompilerLocalReference.cs
- ChangePassword.cs
- NavigationProperty.cs
- Pen.cs
- SystemThemeKey.cs
- TableLayoutStyle.cs
- RepeatInfo.cs
- Viewport3DVisual.cs
- GridViewColumnCollection.cs
- StateMachine.cs
- _BufferOffsetSize.cs
- TextAdaptor.cs
- SupportsEventValidationAttribute.cs
- SettingsBindableAttribute.cs
- RelationshipNavigation.cs
- SamlAuthorizationDecisionClaimResource.cs
- EmissiveMaterial.cs
- PenContext.cs
- FileInfo.cs
- AssertSection.cs
- DesignerWebPartChrome.cs
- SiteOfOriginContainer.cs
- XmlNamespaceMappingCollection.cs
- SafeBitVector32.cs
- LinqDataSourceContextData.cs
- ResourcesChangeInfo.cs
- WeakReferenceList.cs
- SqlProvider.cs
- ParserHooks.cs
- MailBnfHelper.cs
- PrintingPermissionAttribute.cs
- SynchronizationLockException.cs
- DbConnectionPool.cs
- MenuItem.cs
- VirtualPathProvider.cs
- ping.cs
- TableItemProviderWrapper.cs
- TypeInformation.cs
- BidPrivateBase.cs
- SqlAliaser.cs
- DataColumnSelectionConverter.cs
- PersistenceTypeAttribute.cs
- OSFeature.cs
- Odbc32.cs
- TraceXPathNavigator.cs
- LoginUtil.cs
- UiaCoreTypesApi.cs
- HttpCacheVaryByContentEncodings.cs
- SafeFileMappingHandle.cs
- SmtpSection.cs
- DataServiceOperationContext.cs
- Timeline.cs
- Size3D.cs
- OptimisticConcurrencyException.cs
- TypeResolvingOptions.cs
- HtmlInputCheckBox.cs
- OperatingSystem.cs
- Convert.cs
- EnumType.cs
- InternalTransaction.cs
- TextBlockAutomationPeer.cs
- RbTree.cs
- CompilerHelpers.cs
- CultureSpecificStringDictionary.cs
- WizardPanelChangingEventArgs.cs
- TextEditorThreadLocalStore.cs
- ChangeTracker.cs
- PersistencePipeline.cs
- ColumnCollectionEditor.cs
- CheckBox.cs