Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Security / System / Security / Cryptography / Pkcs / Pkcs7Recipient.cs / 1305376 / Pkcs7Recipient.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Pkcs7Recipient.cs
//
namespace System.Security.Cryptography.Pkcs {
using System.Collections;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipient {
private SubjectIdentifierType m_recipientIdentifierType;
private X509Certificate2 m_certificate;
//
// Constructors.
//
private CmsRecipient () {}
public CmsRecipient (X509Certificate2 certificate):this(SubjectIdentifierType.IssuerAndSerialNumber, certificate){}
public CmsRecipient (SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate) {
Reset(recipientIdentifierType, certificate);
}
//
// Public APIs.
//
public SubjectIdentifierType RecipientIdentifierType {
get {
return m_recipientIdentifierType;
}
}
public X509Certificate2 Certificate {
get {
return m_certificate;
}
}
//
// Private methods.
//
private void Reset (SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate) {
if (certificate == null)
throw new ArgumentNullException("certificate");
switch (recipientIdentifierType) {
case SubjectIdentifierType.Unknown:
recipientIdentifierType = SubjectIdentifierType.IssuerAndSerialNumber;
break;
case SubjectIdentifierType.IssuerAndSerialNumber:
break;
case SubjectIdentifierType.SubjectKeyIdentifier:
if (!PkcsUtils.CmsSupported())
throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Cms_Not_Supported"));
break;
default:
throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Cms_Invalid_Subject_Identifier_Type"), recipientIdentifierType.ToString());
}
m_recipientIdentifierType = recipientIdentifierType;
m_certificate = certificate;
}
}
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipientCollection : ICollection {
private ArrayList m_recipients;
public CmsRecipientCollection () {
m_recipients = new ArrayList();
}
public CmsRecipientCollection (CmsRecipient recipient) {
m_recipients = new ArrayList(1);
m_recipients.Add(recipient);
}
public CmsRecipientCollection (SubjectIdentifierType recipientIdentifierType, X509Certificate2Collection certificates) {
m_recipients = new ArrayList(certificates.Count);
for (int index = 0; index < certificates.Count; index++) {
m_recipients.Add(new CmsRecipient(recipientIdentifierType, certificates[index]));
}
}
public CmsRecipient this[int index] {
get {
if (index < 0 || index >= m_recipients.Count)
throw new ArgumentOutOfRangeException("index", SecurityResources.GetResourceString("ArgumentOutOfRange_Index"));
return (CmsRecipient) m_recipients[index];
}
}
public int Count {
get {
return m_recipients.Count;
}
}
public int Add (CmsRecipient recipient) {
if (recipient == null)
throw new ArgumentNullException("recipient");
return m_recipients.Add(recipient);
}
public void Remove(CmsRecipient recipient) {
if (recipient == null)
throw new ArgumentNullException("recipient");
m_recipients.Remove(recipient);
}
public CmsRecipientEnumerator GetEnumerator() {
return new CmsRecipientEnumerator(this);
}
///
IEnumerator IEnumerable.GetEnumerator() {
return new CmsRecipientEnumerator(this);
}
public void CopyTo(Array array, int index) {
if (array == null)
throw new ArgumentNullException("array");
if (array.Rank != 1)
throw new ArgumentException(SecurityResources.GetResourceString("Arg_RankMultiDimNotSupported"));
if (index < 0 || index >= array.Length)
throw new ArgumentOutOfRangeException("index", SecurityResources.GetResourceString("ArgumentOutOfRange_Index"));
if (index + this.Count > array.Length)
throw new ArgumentException(SecurityResources.GetResourceString("Argument_InvalidOffLen"));
for (int i=0; i < this.Count; i++) {
array.SetValue(this[i], index);
index++;
}
}
public void CopyTo(CmsRecipient[] array, int index) {
((ICollection)this).CopyTo(array, index);
}
public bool IsSynchronized {
get {
return false;
}
}
public Object SyncRoot {
get {
return this;
}
}
}
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipientEnumerator : IEnumerator {
private CmsRecipientCollection m_recipients;
private int m_current;
private CmsRecipientEnumerator() {}
internal CmsRecipientEnumerator(CmsRecipientCollection recipients) {
m_recipients = recipients;
m_current = -1;
}
public CmsRecipient Current {
get {
return (CmsRecipient) m_recipients[m_current];
}
}
///
Object IEnumerator.Current {
get {
return (Object) m_recipients[m_current];
}
}
public bool MoveNext() {
if (m_current == ((int) m_recipients.Count - 1))
return false;
m_current++;
return true;
}
public void Reset() {
m_current = -1;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// Pkcs7Recipient.cs
//
namespace System.Security.Cryptography.Pkcs {
using System.Collections;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipient {
private SubjectIdentifierType m_recipientIdentifierType;
private X509Certificate2 m_certificate;
//
// Constructors.
//
private CmsRecipient () {}
public CmsRecipient (X509Certificate2 certificate):this(SubjectIdentifierType.IssuerAndSerialNumber, certificate){}
public CmsRecipient (SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate) {
Reset(recipientIdentifierType, certificate);
}
//
// Public APIs.
//
public SubjectIdentifierType RecipientIdentifierType {
get {
return m_recipientIdentifierType;
}
}
public X509Certificate2 Certificate {
get {
return m_certificate;
}
}
//
// Private methods.
//
private void Reset (SubjectIdentifierType recipientIdentifierType, X509Certificate2 certificate) {
if (certificate == null)
throw new ArgumentNullException("certificate");
switch (recipientIdentifierType) {
case SubjectIdentifierType.Unknown:
recipientIdentifierType = SubjectIdentifierType.IssuerAndSerialNumber;
break;
case SubjectIdentifierType.IssuerAndSerialNumber:
break;
case SubjectIdentifierType.SubjectKeyIdentifier:
if (!PkcsUtils.CmsSupported())
throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Cms_Not_Supported"));
break;
default:
throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Cms_Invalid_Subject_Identifier_Type"), recipientIdentifierType.ToString());
}
m_recipientIdentifierType = recipientIdentifierType;
m_certificate = certificate;
}
}
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipientCollection : ICollection {
private ArrayList m_recipients;
public CmsRecipientCollection () {
m_recipients = new ArrayList();
}
public CmsRecipientCollection (CmsRecipient recipient) {
m_recipients = new ArrayList(1);
m_recipients.Add(recipient);
}
public CmsRecipientCollection (SubjectIdentifierType recipientIdentifierType, X509Certificate2Collection certificates) {
m_recipients = new ArrayList(certificates.Count);
for (int index = 0; index < certificates.Count; index++) {
m_recipients.Add(new CmsRecipient(recipientIdentifierType, certificates[index]));
}
}
public CmsRecipient this[int index] {
get {
if (index < 0 || index >= m_recipients.Count)
throw new ArgumentOutOfRangeException("index", SecurityResources.GetResourceString("ArgumentOutOfRange_Index"));
return (CmsRecipient) m_recipients[index];
}
}
public int Count {
get {
return m_recipients.Count;
}
}
public int Add (CmsRecipient recipient) {
if (recipient == null)
throw new ArgumentNullException("recipient");
return m_recipients.Add(recipient);
}
public void Remove(CmsRecipient recipient) {
if (recipient == null)
throw new ArgumentNullException("recipient");
m_recipients.Remove(recipient);
}
public CmsRecipientEnumerator GetEnumerator() {
return new CmsRecipientEnumerator(this);
}
///
IEnumerator IEnumerable.GetEnumerator() {
return new CmsRecipientEnumerator(this);
}
public void CopyTo(Array array, int index) {
if (array == null)
throw new ArgumentNullException("array");
if (array.Rank != 1)
throw new ArgumentException(SecurityResources.GetResourceString("Arg_RankMultiDimNotSupported"));
if (index < 0 || index >= array.Length)
throw new ArgumentOutOfRangeException("index", SecurityResources.GetResourceString("ArgumentOutOfRange_Index"));
if (index + this.Count > array.Length)
throw new ArgumentException(SecurityResources.GetResourceString("Argument_InvalidOffLen"));
for (int i=0; i < this.Count; i++) {
array.SetValue(this[i], index);
index++;
}
}
public void CopyTo(CmsRecipient[] array, int index) {
((ICollection)this).CopyTo(array, index);
}
public bool IsSynchronized {
get {
return false;
}
}
public Object SyncRoot {
get {
return this;
}
}
}
[System.Security.Permissions.HostProtection(MayLeakOnAbort = true)]
public sealed class CmsRecipientEnumerator : IEnumerator {
private CmsRecipientCollection m_recipients;
private int m_current;
private CmsRecipientEnumerator() {}
internal CmsRecipientEnumerator(CmsRecipientCollection recipients) {
m_recipients = recipients;
m_current = -1;
}
public CmsRecipient Current {
get {
return (CmsRecipient) m_recipients[m_current];
}
}
///
Object IEnumerator.Current {
get {
return (Object) m_recipients[m_current];
}
}
public bool MoveNext() {
if (m_current == ((int) m_recipients.Count - 1))
return false;
m_current++;
return true;
}
public void Reset() {
m_current = -1;
}
}
}
// 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
- CodeArgumentReferenceExpression.cs
- DataGridTableCollection.cs
- EdmType.cs
- SizeAnimationUsingKeyFrames.cs
- ToolStripManager.cs
- AuthenticationManager.cs
- CodeArrayCreateExpression.cs
- DeflateStream.cs
- BamlCollectionHolder.cs
- DeferrableContent.cs
- SessionEndingEventArgs.cs
- Tuple.cs
- Graph.cs
- BrowserDefinition.cs
- LicenseManager.cs
- DefaultPropertyAttribute.cs
- WinHttpWebProxyFinder.cs
- Color.cs
- WebPartZoneCollection.cs
- UpdateManifestForBrowserApplication.cs
- FillErrorEventArgs.cs
- NullExtension.cs
- OdbcConnection.cs
- DateTimeFormatInfo.cs
- WebServiceFault.cs
- MenuTracker.cs
- BlurBitmapEffect.cs
- SessionStateItemCollection.cs
- InitializerFacet.cs
- SchemaInfo.cs
- SoapHeaderAttribute.cs
- _TimerThread.cs
- BitmapDownload.cs
- __ConsoleStream.cs
- MenuCommands.cs
- PanelStyle.cs
- SrgsToken.cs
- CellConstantDomain.cs
- ProviderCommandInfoUtils.cs
- FormsAuthenticationEventArgs.cs
- ModifiableIteratorCollection.cs
- UnsafeNativeMethodsTablet.cs
- OleDbDataReader.cs
- NotImplementedException.cs
- messageonlyhwndwrapper.cs
- NativeMethods.cs
- KeyedHashAlgorithm.cs
- ServiceHttpModule.cs
- StylusEditingBehavior.cs
- DbDataAdapter.cs
- HttpChannelBindingToken.cs
- FactoryGenerator.cs
- BinaryUtilClasses.cs
- QilInvokeEarlyBound.cs
- SQLInt16Storage.cs
- Int32RectConverter.cs
- ChannelDispatcherCollection.cs
- AsyncOperation.cs
- RelativeSource.cs
- XmlBinaryReader.cs
- StringWriter.cs
- Component.cs
- DataTable.cs
- SymmetricKeyWrap.cs
- DesignerTransactionCloseEvent.cs
- MSAAEventDispatcher.cs
- XsltOutput.cs
- BaseServiceProvider.cs
- RowsCopiedEventArgs.cs
- DesignerCategoryAttribute.cs
- ProfileService.cs
- Char.cs
- ConfigurationLocation.cs
- DocumentViewerConstants.cs
- NotifyCollectionChangedEventArgs.cs
- DataGridViewCellStateChangedEventArgs.cs
- ErrorWebPart.cs
- ClientViaElement.cs
- Visual3D.cs
- XhtmlConformanceSection.cs
- DBAsyncResult.cs
- CodeTypeParameter.cs
- InputProcessorProfilesLoader.cs
- Image.cs
- _TimerThread.cs
- BindUriHelper.cs
- CombinedGeometry.cs
- ArgumentOutOfRangeException.cs
- ColumnCollection.cs
- NameObjectCollectionBase.cs
- DataGridViewRowsRemovedEventArgs.cs
- PriorityQueue.cs
- DurableMessageDispatchInspector.cs
- Dictionary.cs
- StrongNameMembershipCondition.cs
- LostFocusEventManager.cs
- WindowsHyperlink.cs
- NumberFormatInfo.cs
- XPathNavigatorKeyComparer.cs
- TransformerInfo.cs