Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / security / system / security / cryptography / AsnEncodedData.cs / 1305376 / AsnEncodedData.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// AsnEncodedData.cs
//
namespace System.Security.Cryptography {
using System.Collections;
using System.Globalization;
using System.Runtime.InteropServices;
public class AsnEncodedData {
internal Oid m_oid = null;
internal byte[] m_rawData = null;
internal AsnEncodedData (Oid oid) {
m_oid = oid;
}
internal AsnEncodedData (string oid, CAPI.CRYPTOAPI_BLOB encodedBlob) : this(oid, CAPI.BlobToByteArray(encodedBlob)) {}
internal AsnEncodedData (Oid oid, CAPI.CRYPTOAPI_BLOB encodedBlob) : this(oid, CAPI.BlobToByteArray(encodedBlob)) {}
protected AsnEncodedData () {}
public AsnEncodedData (byte[] rawData) {
Reset(null, rawData);
}
public AsnEncodedData (string oid, byte[] rawData) {
Reset(new Oid(oid), rawData);
}
public AsnEncodedData (Oid oid, byte[] rawData) {
Reset(oid, rawData);
}
public AsnEncodedData (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
Reset(asnEncodedData.m_oid, asnEncodedData.m_rawData);
}
public Oid Oid {
get {
return m_oid;
}
set {
if (value == null)
m_oid = null;
else
m_oid = new Oid(value);
}
}
public byte[] RawData {
get {
return m_rawData;
}
set {
if (value == null)
throw new ArgumentNullException("value");
m_rawData = (byte[]) value.Clone();
}
}
public virtual void CopyFrom (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
Reset(asnEncodedData.m_oid, asnEncodedData.m_rawData);
}
public virtual string Format (bool multiLine) {
// Return empty string if no data to format.
if (m_rawData == null || m_rawData.Length == 0)
return String.Empty;
// If OID is not present, then we can force CryptFormatObject
// to use hex formatting by providing an empty OID string.
string oidValue = String.Empty;
if (m_oid != null && m_oid.Value != null)
oidValue = m_oid.Value;
return CAPI.CryptFormatObject(CAPI.X509_ASN_ENCODING,
multiLine ? CAPI.CRYPT_FORMAT_STR_MULTI_LINE : 0,
oidValue,
m_rawData);
}
private void Reset (Oid oid, byte[] rawData) {
this.Oid = oid;
this.RawData = rawData;
}
}
public sealed class AsnEncodedDataCollection : ICollection {
private ArrayList m_list = null;
private Oid m_oid = null;
public AsnEncodedDataCollection () {
m_list = new ArrayList();
m_oid = null;
}
public AsnEncodedDataCollection(AsnEncodedData asnEncodedData) : this() {
m_list.Add(asnEncodedData);
}
public int Add (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
//
// If m_oid is not null, then OIDs must match.
//
if (m_oid != null) {
string szOid1 = m_oid.Value;
string szOid2 = asnEncodedData.Oid.Value;
if (szOid1 != null && szOid2 != null) {
// Both are not null, so make sure OIDs match.
if (String.Compare(szOid1, szOid2, StringComparison.OrdinalIgnoreCase) != 0)
throw new CryptographicException(SR.GetString(SR.Cryptography_Asn_MismatchedOidInCollection));
}
else if (szOid1 != null || szOid2 != null) {
// Can't be matching, since only one of them is null.
throw new CryptographicException(SR.GetString(SR.Cryptography_Asn_MismatchedOidInCollection));
}
}
return m_list.Add(asnEncodedData);
}
public void Remove (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
m_list.Remove(asnEncodedData);
}
public AsnEncodedData this[int index] {
get {
return (AsnEncodedData) m_list[index];
}
}
public int Count {
get {
return m_list.Count;
}
}
public AsnEncodedDataEnumerator GetEnumerator() {
return new AsnEncodedDataEnumerator(this);
}
///
IEnumerator IEnumerable.GetEnumerator() {
return new AsnEncodedDataEnumerator(this);
}
///
void ICollection.CopyTo(Array array, int index) {
if (array == null)
throw new ArgumentNullException("array");
if (array.Rank != 1)
throw new ArgumentException(SR.GetString(SR.Arg_RankMultiDimNotSupported));
if (index < 0 || index >= array.Length)
throw new ArgumentOutOfRangeException("index", SR.GetString(SR.ArgumentOutOfRange_Index));
if (index + this.Count > array.Length)
throw new ArgumentException(SR.GetString(SR.Argument_InvalidOffLen));
for (int i=0; i < this.Count; i++) {
array.SetValue(this[i], index);
index++;
}
}
public void CopyTo(AsnEncodedData[] array, int index) {
((ICollection)this).CopyTo(array, index);
}
public bool IsSynchronized {
get {
return false;
}
}
public Object SyncRoot {
get {
return this;
}
}
}
public sealed class AsnEncodedDataEnumerator : IEnumerator {
private AsnEncodedDataCollection m_asnEncodedDatas;
private int m_current;
private AsnEncodedDataEnumerator() {}
internal AsnEncodedDataEnumerator(AsnEncodedDataCollection asnEncodedDatas) {
m_asnEncodedDatas = asnEncodedDatas;
m_current = -1;
}
public AsnEncodedData Current {
get {
return m_asnEncodedDatas[m_current];
}
}
///
Object IEnumerator.Current {
get {
return (Object) m_asnEncodedDatas[m_current];
}
}
public bool MoveNext() {
if (m_current == ((int) m_asnEncodedDatas.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.
//
// ==--==
//
// AsnEncodedData.cs
//
namespace System.Security.Cryptography {
using System.Collections;
using System.Globalization;
using System.Runtime.InteropServices;
public class AsnEncodedData {
internal Oid m_oid = null;
internal byte[] m_rawData = null;
internal AsnEncodedData (Oid oid) {
m_oid = oid;
}
internal AsnEncodedData (string oid, CAPI.CRYPTOAPI_BLOB encodedBlob) : this(oid, CAPI.BlobToByteArray(encodedBlob)) {}
internal AsnEncodedData (Oid oid, CAPI.CRYPTOAPI_BLOB encodedBlob) : this(oid, CAPI.BlobToByteArray(encodedBlob)) {}
protected AsnEncodedData () {}
public AsnEncodedData (byte[] rawData) {
Reset(null, rawData);
}
public AsnEncodedData (string oid, byte[] rawData) {
Reset(new Oid(oid), rawData);
}
public AsnEncodedData (Oid oid, byte[] rawData) {
Reset(oid, rawData);
}
public AsnEncodedData (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
Reset(asnEncodedData.m_oid, asnEncodedData.m_rawData);
}
public Oid Oid {
get {
return m_oid;
}
set {
if (value == null)
m_oid = null;
else
m_oid = new Oid(value);
}
}
public byte[] RawData {
get {
return m_rawData;
}
set {
if (value == null)
throw new ArgumentNullException("value");
m_rawData = (byte[]) value.Clone();
}
}
public virtual void CopyFrom (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
Reset(asnEncodedData.m_oid, asnEncodedData.m_rawData);
}
public virtual string Format (bool multiLine) {
// Return empty string if no data to format.
if (m_rawData == null || m_rawData.Length == 0)
return String.Empty;
// If OID is not present, then we can force CryptFormatObject
// to use hex formatting by providing an empty OID string.
string oidValue = String.Empty;
if (m_oid != null && m_oid.Value != null)
oidValue = m_oid.Value;
return CAPI.CryptFormatObject(CAPI.X509_ASN_ENCODING,
multiLine ? CAPI.CRYPT_FORMAT_STR_MULTI_LINE : 0,
oidValue,
m_rawData);
}
private void Reset (Oid oid, byte[] rawData) {
this.Oid = oid;
this.RawData = rawData;
}
}
public sealed class AsnEncodedDataCollection : ICollection {
private ArrayList m_list = null;
private Oid m_oid = null;
public AsnEncodedDataCollection () {
m_list = new ArrayList();
m_oid = null;
}
public AsnEncodedDataCollection(AsnEncodedData asnEncodedData) : this() {
m_list.Add(asnEncodedData);
}
public int Add (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
//
// If m_oid is not null, then OIDs must match.
//
if (m_oid != null) {
string szOid1 = m_oid.Value;
string szOid2 = asnEncodedData.Oid.Value;
if (szOid1 != null && szOid2 != null) {
// Both are not null, so make sure OIDs match.
if (String.Compare(szOid1, szOid2, StringComparison.OrdinalIgnoreCase) != 0)
throw new CryptographicException(SR.GetString(SR.Cryptography_Asn_MismatchedOidInCollection));
}
else if (szOid1 != null || szOid2 != null) {
// Can't be matching, since only one of them is null.
throw new CryptographicException(SR.GetString(SR.Cryptography_Asn_MismatchedOidInCollection));
}
}
return m_list.Add(asnEncodedData);
}
public void Remove (AsnEncodedData asnEncodedData) {
if (asnEncodedData == null)
throw new ArgumentNullException("asnEncodedData");
m_list.Remove(asnEncodedData);
}
public AsnEncodedData this[int index] {
get {
return (AsnEncodedData) m_list[index];
}
}
public int Count {
get {
return m_list.Count;
}
}
public AsnEncodedDataEnumerator GetEnumerator() {
return new AsnEncodedDataEnumerator(this);
}
///
IEnumerator IEnumerable.GetEnumerator() {
return new AsnEncodedDataEnumerator(this);
}
///
void ICollection.CopyTo(Array array, int index) {
if (array == null)
throw new ArgumentNullException("array");
if (array.Rank != 1)
throw new ArgumentException(SR.GetString(SR.Arg_RankMultiDimNotSupported));
if (index < 0 || index >= array.Length)
throw new ArgumentOutOfRangeException("index", SR.GetString(SR.ArgumentOutOfRange_Index));
if (index + this.Count > array.Length)
throw new ArgumentException(SR.GetString(SR.Argument_InvalidOffLen));
for (int i=0; i < this.Count; i++) {
array.SetValue(this[i], index);
index++;
}
}
public void CopyTo(AsnEncodedData[] array, int index) {
((ICollection)this).CopyTo(array, index);
}
public bool IsSynchronized {
get {
return false;
}
}
public Object SyncRoot {
get {
return this;
}
}
}
public sealed class AsnEncodedDataEnumerator : IEnumerator {
private AsnEncodedDataCollection m_asnEncodedDatas;
private int m_current;
private AsnEncodedDataEnumerator() {}
internal AsnEncodedDataEnumerator(AsnEncodedDataCollection asnEncodedDatas) {
m_asnEncodedDatas = asnEncodedDatas;
m_current = -1;
}
public AsnEncodedData Current {
get {
return m_asnEncodedDatas[m_current];
}
}
///
Object IEnumerator.Current {
get {
return (Object) m_asnEncodedDatas[m_current];
}
}
public bool MoveNext() {
if (m_current == ((int) m_asnEncodedDatas.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
- LabelAutomationPeer.cs
- TableLayoutColumnStyleCollection.cs
- GeneratedContractType.cs
- DispatchWrapper.cs
- GroupDescription.cs
- IisTraceWebEventProvider.cs
- CodeArrayIndexerExpression.cs
- securitymgrsite.cs
- EngineSite.cs
- TemplateBindingExtension.cs
- XmlAttributeAttribute.cs
- MemberRelationshipService.cs
- UdpChannelFactory.cs
- GradientStop.cs
- FileDialog_Vista_Interop.cs
- SelectionItemPattern.cs
- PropertyFilterAttribute.cs
- TextTreeExtractElementUndoUnit.cs
- httpstaticobjectscollection.cs
- AnimatedTypeHelpers.cs
- NumberAction.cs
- ChameleonKey.cs
- NullableFloatAverageAggregationOperator.cs
- ReferenceConverter.cs
- ConsoleCancelEventArgs.cs
- NavigationService.cs
- TextParagraphProperties.cs
- Addressing.cs
- PageAsyncTaskManager.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- _StreamFramer.cs
- DataGridViewLayoutData.cs
- SessionStateSection.cs
- ProgressBarHighlightConverter.cs
- QueryOutputWriter.cs
- ProcessThreadDesigner.cs
- ContentElementCollection.cs
- ListViewCommandEventArgs.cs
- ServiceSettingsResponseInfo.cs
- PtsHost.cs
- HtmlElementErrorEventArgs.cs
- Merger.cs
- HashSetEqualityComparer.cs
- VisualBrush.cs
- MissingMethodException.cs
- CharEntityEncoderFallback.cs
- InternalBase.cs
- X509Certificate.cs
- ValidationEventArgs.cs
- XmlAttributeAttribute.cs
- BindUriHelper.cs
- AttributeCollection.cs
- Signature.cs
- CqlLexerHelpers.cs
- Margins.cs
- RijndaelManaged.cs
- DependencyObjectPropertyDescriptor.cs
- NullReferenceException.cs
- Int64Converter.cs
- WebPartChrome.cs
- SqlBuffer.cs
- GlobalizationAssembly.cs
- CompareInfo.cs
- KeyEvent.cs
- DataMemberFieldEditor.cs
- UpnEndpointIdentityExtension.cs
- WebPartManagerInternals.cs
- FramingDecoders.cs
- XmlText.cs
- ListParagraph.cs
- TextServicesLoader.cs
- HtmlControlPersistable.cs
- GlobalEventManager.cs
- GeometryGroup.cs
- FilteredXmlReader.cs
- WorkflowStateRollbackService.cs
- X509CertificateCollection.cs
- DesignerCatalogPartChrome.cs
- ReliableReplySessionChannel.cs
- BindingContext.cs
- DesignerHelpers.cs
- EventLogPermission.cs
- OperationPickerDialog.designer.cs
- Literal.cs
- QuadraticBezierSegment.cs
- LayoutTableCell.cs
- ShapeTypeface.cs
- ValidationHelpers.cs
- HtmlToClrEventProxy.cs
- Serializer.cs
- StringFormat.cs
- DataListCommandEventArgs.cs
- Transform.cs
- ArrayList.cs
- UnsafeNativeMethods.cs
- DataViewManagerListItemTypeDescriptor.cs
- PkcsUtils.cs
- ScaleTransform.cs
- IdentifierService.cs
- ManipulationDeltaEventArgs.cs