Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Security / System / Security / Cryptography / Xml / EncryptedKey.cs / 1305376 / 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
- InputLanguage.cs
- SudsWriter.cs
- ResolveNameEventArgs.cs
- FontTypeConverter.cs
- Image.cs
- InfoCardCryptoHelper.cs
- DescriptionAttribute.cs
- InkCollectionBehavior.cs
- Effect.cs
- AliasedSlot.cs
- _DynamicWinsockMethods.cs
- ArgumentNullException.cs
- RotateTransform.cs
- OperatorExpressions.cs
- WebResourceAttribute.cs
- Stack.cs
- BitArray.cs
- AccessKeyManager.cs
- IconBitmapDecoder.cs
- FrameworkContentElementAutomationPeer.cs
- WindowsRichEditRange.cs
- SymbolType.cs
- XmlDataSource.cs
- Utils.cs
- FullTextLine.cs
- CreatingCookieEventArgs.cs
- ThreadSafeList.cs
- ToReply.cs
- OleStrCAMarshaler.cs
- ToolStripItemRenderEventArgs.cs
- BulletedList.cs
- KnownTypesHelper.cs
- DictionaryKeyPropertyAttribute.cs
- ToolStripDropDownMenu.cs
- Hyperlink.cs
- InternalTypeHelper.cs
- TypeBuilder.cs
- HyperlinkAutomationPeer.cs
- IgnoreDataMemberAttribute.cs
- RegistrationServices.cs
- CorePropertiesFilter.cs
- HostedImpersonationContext.cs
- counter.cs
- SettingsAttributes.cs
- StyleCollection.cs
- _CacheStreams.cs
- Tokenizer.cs
- SerializationBinder.cs
- PerfCounters.cs
- FirstMatchCodeGroup.cs
- EntitySqlQueryBuilder.cs
- Enum.cs
- IncrementalHitTester.cs
- BufferBuilder.cs
- WindowsTab.cs
- BaseHashHelper.cs
- BrowserTree.cs
- InvokePattern.cs
- TextReader.cs
- LowerCaseStringConverter.cs
- FacetChecker.cs
- FixedSOMFixedBlock.cs
- DesignerGeometryHelper.cs
- ResizeGrip.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- CalendarSelectionChangedEventArgs.cs
- WmlLabelAdapter.cs
- FontStyle.cs
- TypeNameConverter.cs
- IconBitmapDecoder.cs
- CompiledRegexRunner.cs
- StrongNameKeyPair.cs
- _DomainName.cs
- DateRangeEvent.cs
- ExpressionNormalizer.cs
- TreeNode.cs
- SecurityTokenAuthenticator.cs
- DataList.cs
- ChtmlPhoneCallAdapter.cs
- StdValidatorsAndConverters.cs
- EmptyQuery.cs
- SerializationException.cs
- DataGridViewImageColumn.cs
- LabelEditEvent.cs
- NavigationService.cs
- UnmanagedMarshal.cs
- ComponentResourceManager.cs
- EventLogPermissionEntryCollection.cs
- Util.cs
- InternalSafeNativeMethods.cs
- LogicalTreeHelper.cs
- Convert.cs
- CodeFieldReferenceExpression.cs
- BinaryWriter.cs
- WindowsScrollBarBits.cs
- BulletedListEventArgs.cs
- TrustSection.cs
- ConfigXmlReader.cs
- ControlParser.cs
- InputLanguageSource.cs