Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Base / MS / Internal / IO / Zip / ZipIOCentralDirectoryDigitalSignature.cs / 1 / ZipIOCentralDirectoryDigitalSignature.cs
//------------------------------------------------------------------------------ //------------- *** WARNING *** //------------- This file is part of a legally monitored development project. //------------- Do not check in changes to this project. Do not raid bugs on this //------------- code in the main PS database. Do not contact the owner of this //------------- code directly. Contact the legal team at ‘ZSLegal’ for assistance. //------------- *** WARNING *** //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // This is an internal class that enables interactions with Zip archives // for OPC scenarios // // History: // 11/19/2004: IgorBel: Initial creation. // 09/14/2005: BruceMac: Disable creation of signatures and throw on parse if signature found: // If we encounter archive with encrypted and /or signed data we consider those as // “invalid OPC packages”. Even in case when client application has never requested // read/write operations with the encrypted and/or signed area of the archive. Motivations include: // 1. Security based // 2. It is inappropriate to silently ignore digital signatures because this may lead to users // assuming that the signature has been validated when in fact it has not. // //----------------------------------------------------------------------------- using System; using System.IO; using System.Diagnostics; using System.Collections; using System.Runtime.Serialization; using System.Windows; namespace MS.Internal.IO.Zip { internal class ZipIOCentralDirectoryDigitalSignature { #if false internal static ZipIOCentralDirectoryDigitalSignature CreateNew() { ZipIOCentralDirectoryDigitalSignature record = new ZipIOCentralDirectoryDigitalSignature (); return record; } #endif internal static ZipIOCentralDirectoryDigitalSignature ParseRecord(BinaryReader reader) { // this record is optional, so let's check for presence of signature rightaway //let's ensure we have at least enough data to cover _fixedMinimalRecordSize bytes of signature if ((reader.BaseStream.Length - reader.BaseStream.Position) < _fixedMinimalRecordSize) { return null; } UInt32 signatureValue = reader.ReadUInt32(); if (signatureValue != _signatureConstant) { return null; } //at this point we can assume that Digital Signature Record is there // Convention is to throw throw new NotSupportedException(SR.Get(SRID.ZipNotSupportedSignedArchive)); // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled ZipIOCentralDirectoryDigitalSignature record = new ZipIOCentralDirectoryDigitalSignature (); record._signature = signatureValue; record._sizeOfData = reader.ReadUInt16(); record._signatureData = reader.ReadBytes(record._sizeOfData ); record.Validate(); return record; #endif } // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled internal void Save(BinaryWriter writer) { writer.Write(_signatureConstant); writer.Write(_sizeOfData); if (_sizeOfData > 0) { writer.Write(_signatureData , 0, _sizeOfData); } writer.Flush(); } internal long Size { get { return _fixedMinimalRecordSize + _sizeOfData; } } #endif private ZipIOCentralDirectoryDigitalSignature() { } // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled private void Validate () { if (_signature != _signatureConstant) { throw new FileFormatException(SR.Get(SRID.CorruptedData)); } if (_sizeOfData != _signatureData.Length) { throw new FileFormatException(SR.Get(SRID.CorruptedData)); } } #endif private const long _fixedMinimalRecordSize = 6; private const UInt32 _signatureConstant = 0x05054b50; // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled private UInt16 _sizeOfData; private UInt32 _signature = _signatureConstant; private byte[] _signatureData = null; #endif } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //------------- *** WARNING *** //------------- This file is part of a legally monitored development project. //------------- Do not check in changes to this project. Do not raid bugs on this //------------- code in the main PS database. Do not contact the owner of this //------------- code directly. Contact the legal team at ‘ZSLegal’ for assistance. //------------- *** WARNING *** //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // This is an internal class that enables interactions with Zip archives // for OPC scenarios // // History: // 11/19/2004: IgorBel: Initial creation. // 09/14/2005: BruceMac: Disable creation of signatures and throw on parse if signature found: // If we encounter archive with encrypted and /or signed data we consider those as // “invalid OPC packages”. Even in case when client application has never requested // read/write operations with the encrypted and/or signed area of the archive. Motivations include: // 1. Security based // 2. It is inappropriate to silently ignore digital signatures because this may lead to users // assuming that the signature has been validated when in fact it has not. // //----------------------------------------------------------------------------- using System; using System.IO; using System.Diagnostics; using System.Collections; using System.Runtime.Serialization; using System.Windows; namespace MS.Internal.IO.Zip { internal class ZipIOCentralDirectoryDigitalSignature { #if false internal static ZipIOCentralDirectoryDigitalSignature CreateNew() { ZipIOCentralDirectoryDigitalSignature record = new ZipIOCentralDirectoryDigitalSignature (); return record; } #endif internal static ZipIOCentralDirectoryDigitalSignature ParseRecord(BinaryReader reader) { // this record is optional, so let's check for presence of signature rightaway //let's ensure we have at least enough data to cover _fixedMinimalRecordSize bytes of signature if ((reader.BaseStream.Length - reader.BaseStream.Position) < _fixedMinimalRecordSize) { return null; } UInt32 signatureValue = reader.ReadUInt32(); if (signatureValue != _signatureConstant) { return null; } //at this point we can assume that Digital Signature Record is there // Convention is to throw throw new NotSupportedException(SR.Get(SRID.ZipNotSupportedSignedArchive)); // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled ZipIOCentralDirectoryDigitalSignature record = new ZipIOCentralDirectoryDigitalSignature (); record._signature = signatureValue; record._sizeOfData = reader.ReadUInt16(); record._signatureData = reader.ReadBytes(record._sizeOfData ); record.Validate(); return record; #endif } // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled internal void Save(BinaryWriter writer) { writer.Write(_signatureConstant); writer.Write(_sizeOfData); if (_sizeOfData > 0) { writer.Write(_signatureData , 0, _sizeOfData); } writer.Flush(); } internal long Size { get { return _fixedMinimalRecordSize + _sizeOfData; } } #endif private ZipIOCentralDirectoryDigitalSignature() { } // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled private void Validate () { if (_signature != _signatureConstant) { throw new FileFormatException(SR.Get(SRID.CorruptedData)); } if (_sizeOfData != _signatureData.Length) { throw new FileFormatException(SR.Get(SRID.CorruptedData)); } } #endif private const long _fixedMinimalRecordSize = 6; private const UInt32 _signatureConstant = 0x05054b50; // Zeus PS 3: disable creation/parsing of zip archive digital signatures #if ArchiveSignaturesEnabled private UInt16 _sizeOfData; private UInt32 _signature = _signatureConstant; private byte[] _signatureData = null; #endif } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataControlHelper.cs
- DomainUpDown.cs
- AddIn.cs
- CrossContextChannel.cs
- SafeCoTaskMem.cs
- SocketInformation.cs
- RequestQueryProcessor.cs
- RouteCollection.cs
- EdmFunction.cs
- XmlCompatibilityReader.cs
- APCustomTypeDescriptor.cs
- ExpandoObject.cs
- _CookieModule.cs
- ConstantSlot.cs
- TransformerConfigurationWizardBase.cs
- HttpRequest.cs
- ReadOnlyTernaryTree.cs
- NullableFloatMinMaxAggregationOperator.cs
- EmbeddedMailObject.cs
- _UncName.cs
- AppDomainManager.cs
- InkPresenterAutomationPeer.cs
- WebBrowserBase.cs
- ListView.cs
- LambdaCompiler.Address.cs
- DataBindingExpressionBuilder.cs
- HtmlValidationSummaryAdapter.cs
- DecimalStorage.cs
- ButtonFlatAdapter.cs
- HitTestResult.cs
- MeasureItemEvent.cs
- MessageBuffer.cs
- HttpCachePolicyElement.cs
- Style.cs
- SqlCommand.cs
- OdbcPermission.cs
- XPathSingletonIterator.cs
- BufferModesCollection.cs
- ChangeNode.cs
- basevalidator.cs
- UserControlCodeDomTreeGenerator.cs
- SQLStringStorage.cs
- IList.cs
- DataContractJsonSerializer.cs
- RadioButtonList.cs
- HtmlWindow.cs
- BoolLiteral.cs
- DataGridCaption.cs
- Translator.cs
- SystemWebSectionGroup.cs
- ViewBase.cs
- dsa.cs
- OutputWindow.cs
- MessageDescriptionCollection.cs
- IsolatedStorageFile.cs
- DoubleConverter.cs
- ImageMap.cs
- ExternalException.cs
- DateTimePicker.cs
- CacheAxisQuery.cs
- cache.cs
- ElementHost.cs
- ResourcePart.cs
- WsatServiceAddress.cs
- ReadOnlyHierarchicalDataSourceView.cs
- RequestQueue.cs
- InstanceData.cs
- OneOfTypeConst.cs
- ResizeGrip.cs
- NavigationService.cs
- ManagementInstaller.cs
- WebPartConnectionCollection.cs
- XmlSchemaSimpleContentRestriction.cs
- ConversionValidationRule.cs
- BinaryObjectReader.cs
- autovalidator.cs
- PlatformCulture.cs
- VisualStyleInformation.cs
- DataGridViewColumnCollection.cs
- RuntimeConfigurationRecord.cs
- FrameworkContextData.cs
- ProgressBar.cs
- AsyncCompletedEventArgs.cs
- DataControlFieldHeaderCell.cs
- WindowCollection.cs
- KnownAssemblyEntry.cs
- TcpAppDomainProtocolHandler.cs
- PasswordDeriveBytes.cs
- EnumType.cs
- CachingHintValidation.cs
- DataSourceNameHandler.cs
- BoundingRectTracker.cs
- CompositeDuplexBindingElement.cs
- DetailsViewDesigner.cs
- XamlParser.cs
- SystemResources.cs
- OpenTypeCommon.cs
- WebOperationContext.cs
- PolyBezierSegment.cs
- GenerateScriptTypeAttribute.cs