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
- SQLMoney.cs
- MetadataCacheItem.cs
- SoapCodeExporter.cs
- RowToFieldTransformer.cs
- CategoryGridEntry.cs
- UTF7Encoding.cs
- GridViewDeletedEventArgs.cs
- Bold.cs
- ContextInformation.cs
- LeaseManager.cs
- KeyNotFoundException.cs
- formatter.cs
- CopyCodeAction.cs
- GridPatternIdentifiers.cs
- BuiltInExpr.cs
- PackageProperties.cs
- WebPartCatalogCloseVerb.cs
- BindStream.cs
- PopupEventArgs.cs
- WebPartAddingEventArgs.cs
- ObjectPersistData.cs
- SQLSingle.cs
- ExtensibleClassFactory.cs
- ContentPresenter.cs
- ServicesExceptionNotHandledEventArgs.cs
- MissingSatelliteAssemblyException.cs
- DebugView.cs
- ToolTip.cs
- ProxyGenerator.cs
- MdImport.cs
- HtmlUtf8RawTextWriter.cs
- CodeExporter.cs
- DocumentOrderComparer.cs
- HostProtectionPermission.cs
- MissingFieldException.cs
- ParseNumbers.cs
- MarshalByRefObject.cs
- AsyncPostBackErrorEventArgs.cs
- PageContentAsyncResult.cs
- WindowsListViewGroup.cs
- XmlSchemaAnyAttribute.cs
- HttpFileCollectionBase.cs
- newinstructionaction.cs
- ResourceManagerWrapper.cs
- SortedList.cs
- MetadataArtifactLoaderFile.cs
- WindowsFormsSynchronizationContext.cs
- NewArray.cs
- RowToParametersTransformer.cs
- Parser.cs
- EntityDataSourceView.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- ipaddressinformationcollection.cs
- InkCanvasInnerCanvas.cs
- IdentifierService.cs
- SkinBuilder.cs
- xmlsaver.cs
- TextSelection.cs
- IntSecurity.cs
- StorageBasedPackageProperties.cs
- BitmapEffect.cs
- SemaphoreSlim.cs
- LiteralTextParser.cs
- DataSvcMapFile.cs
- ComponentResourceManager.cs
- GroupBoxRenderer.cs
- ValidatingPropertiesEventArgs.cs
- JournalEntryListConverter.cs
- RequiredFieldValidator.cs
- ShapeTypeface.cs
- HtmlTableRow.cs
- ScriptingJsonSerializationSection.cs
- DataGridViewRowStateChangedEventArgs.cs
- XmlDataCollection.cs
- SuppressMessageAttribute.cs
- BrowserTree.cs
- SqlCrossApplyToCrossJoin.cs
- ZipIOLocalFileHeader.cs
- XmlAttributeProperties.cs
- FloaterParagraph.cs
- ScrollableControl.cs
- SessionState.cs
- DictionaryEntry.cs
- HostingEnvironment.cs
- ImageBrush.cs
- ContextMenuStrip.cs
- PropertyCondition.cs
- PermissionSetTriple.cs
- TaskExceptionHolder.cs
- MimeReturn.cs
- PartialCachingAttribute.cs
- Int16AnimationUsingKeyFrames.cs
- KnownTypesHelper.cs
- Options.cs
- IntPtr.cs
- Matrix3D.cs
- OrderToken.cs
- ComplexType.cs
- StorageEntityContainerMapping.cs
- XmlSchemaValidationException.cs