Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / X509Certificates / TimestampInformation.cs / 1305376 / TimestampInformation.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics; using System.Security.Cryptography; using System.Security.Permissions; namespace System.Security.Cryptography.X509Certificates { ////// Details about the timestamp applied to a manifest's Authenticode signature /// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class TimestampInformation { private CapiNative.AlgorithmId m_hashAlgorithmId; private DateTime m_timestamp; private X509Chain m_timestampChain; private SignatureVerificationResult m_verificationResult; private X509Certificate2 m_timestamper; //// [System.Security.SecurityCritical] internal TimestampInformation(X509Native.AXL_AUTHENTICODE_TIMESTAMPER_INFO timestamper) { m_hashAlgorithmId = timestamper.algHash; m_verificationResult = (SignatureVerificationResult)timestamper.dwError; ulong filetime = ((ulong)((uint)timestamper.ftTimestamp.dwHighDateTime) << 32) | (ulong)((uint)timestamper.ftTimestamp.dwLowDateTime); m_timestamp = DateTime.FromFileTimeUtc((long)filetime); if (timestamper.pChainContext != IntPtr.Zero) { m_timestampChain = new X509Chain(timestamper.pChainContext); } } internal TimestampInformation(SignatureVerificationResult error) { Debug.Assert(error != SignatureVerificationResult.Valid, "error != SignatureVerificationResult.Valid"); m_verificationResult = error; } ///// /// Hash algorithm the timestamp signature was calculated with /// public string HashAlgorithm { get { return CapiNative.GetAlgorithmName(m_hashAlgorithmId); } } ////// HRESULT from verifying the timestamp /// public int HResult { get { return CapiNative.HResultForVerificationResult(m_verificationResult); } } ////// Is the signature of the timestamp valid /// public bool IsValid { get { // Timestamp signatures are valid only if they were created by a trusted chain return VerificationResult == SignatureVerificationResult.Valid || VerificationResult == SignatureVerificationResult.CertificateNotExplicitlyTrusted; } } ////// Chain of certificates used to verify the timestamp /// public X509Chain SignatureChain { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { return m_timestampChain; } } ////// Certificate that signed the timestamp /// public X509Certificate2 SigningCertificate { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { if (m_timestamper == null && SignatureChain != null) { m_timestamper = SignatureChain.ChainElements[0].Certificate; } return m_timestamper; } } ////// When the timestamp was applied, expressed in local time /// public DateTime Timestamp { get { return m_timestamp.ToLocalTime(); } } ////// Result of verifying the timestamp signature /// public SignatureVerificationResult VerificationResult { get { return m_verificationResult; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics; using System.Security.Cryptography; using System.Security.Permissions; namespace System.Security.Cryptography.X509Certificates { ////// Details about the timestamp applied to a manifest's Authenticode signature /// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class TimestampInformation { private CapiNative.AlgorithmId m_hashAlgorithmId; private DateTime m_timestamp; private X509Chain m_timestampChain; private SignatureVerificationResult m_verificationResult; private X509Certificate2 m_timestamper; //// [System.Security.SecurityCritical] internal TimestampInformation(X509Native.AXL_AUTHENTICODE_TIMESTAMPER_INFO timestamper) { m_hashAlgorithmId = timestamper.algHash; m_verificationResult = (SignatureVerificationResult)timestamper.dwError; ulong filetime = ((ulong)((uint)timestamper.ftTimestamp.dwHighDateTime) << 32) | (ulong)((uint)timestamper.ftTimestamp.dwLowDateTime); m_timestamp = DateTime.FromFileTimeUtc((long)filetime); if (timestamper.pChainContext != IntPtr.Zero) { m_timestampChain = new X509Chain(timestamper.pChainContext); } } internal TimestampInformation(SignatureVerificationResult error) { Debug.Assert(error != SignatureVerificationResult.Valid, "error != SignatureVerificationResult.Valid"); m_verificationResult = error; } ///// /// Hash algorithm the timestamp signature was calculated with /// public string HashAlgorithm { get { return CapiNative.GetAlgorithmName(m_hashAlgorithmId); } } ////// HRESULT from verifying the timestamp /// public int HResult { get { return CapiNative.HResultForVerificationResult(m_verificationResult); } } ////// Is the signature of the timestamp valid /// public bool IsValid { get { // Timestamp signatures are valid only if they were created by a trusted chain return VerificationResult == SignatureVerificationResult.Valid || VerificationResult == SignatureVerificationResult.CertificateNotExplicitlyTrusted; } } ////// Chain of certificates used to verify the timestamp /// public X509Chain SignatureChain { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { return m_timestampChain; } } ////// Certificate that signed the timestamp /// public X509Certificate2 SigningCertificate { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { if (m_timestamper == null && SignatureChain != null) { m_timestamper = SignatureChain.ChainElements[0].Certificate; } return m_timestamper; } } ////// When the timestamp was applied, expressed in local time /// public DateTime Timestamp { get { return m_timestamp.ToLocalTime(); } } ////// Result of verifying the timestamp signature /// public SignatureVerificationResult VerificationResult { get { return m_verificationResult; } } } } // 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
- ColorTypeConverter.cs
- ExpressionContext.cs
- CompilerResults.cs
- DependentList.cs
- ShapingEngine.cs
- BackStopAuthenticationModule.cs
- Stopwatch.cs
- ButtonBaseAdapter.cs
- ScrollableControl.cs
- WebPartConnectionCollection.cs
- ValueType.cs
- GetPageNumberCompletedEventArgs.cs
- EntityProviderFactory.cs
- Int16Animation.cs
- RealizationContext.cs
- SectionUpdates.cs
- DecoderBestFitFallback.cs
- Int64.cs
- ButtonBaseAdapter.cs
- Matrix3DConverter.cs
- RemotingException.cs
- LogicalCallContext.cs
- __FastResourceComparer.cs
- LocalizableAttribute.cs
- FixedNode.cs
- BypassElement.cs
- RoutedEventValueSerializer.cs
- ConfigXmlCDataSection.cs
- ColorContextHelper.cs
- _ConnectStream.cs
- SortAction.cs
- SqlConnectionPoolProviderInfo.cs
- EpmAttributeNameBuilder.cs
- ProcessHostConfigUtils.cs
- ComponentTray.cs
- PolyLineSegment.cs
- NavigationHelper.cs
- XsdDataContractExporter.cs
- RowUpdatedEventArgs.cs
- Parameter.cs
- QuaternionValueSerializer.cs
- NameValueFileSectionHandler.cs
- SimpleWorkerRequest.cs
- HatchBrush.cs
- CodeMethodInvokeExpression.cs
- CollectionViewProxy.cs
- WebPartConnectionsCancelVerb.cs
- X500Name.cs
- ListControl.cs
- CurrentChangedEventManager.cs
- ProfileServiceManager.cs
- PolicyException.cs
- SystemEvents.cs
- PersonalizationProvider.cs
- XmlDomTextWriter.cs
- ParsedAttributeCollection.cs
- COM2Properties.cs
- WebConfigurationHostFileChange.cs
- ParseChildrenAsPropertiesAttribute.cs
- DecoratedNameAttribute.cs
- DataGridPagerStyle.cs
- VoiceObjectToken.cs
- RegexCapture.cs
- TypeContext.cs
- AssemblyInfo.cs
- Int32Collection.cs
- UpdateRecord.cs
- MetaModel.cs
- GridViewSelectEventArgs.cs
- Section.cs
- ImmutableObjectAttribute.cs
- ContextMarshalException.cs
- DPCustomTypeDescriptor.cs
- EntityDataReader.cs
- MultipartContentParser.cs
- PermissionListSet.cs
- unsafeIndexingFilterStream.cs
- _FtpDataStream.cs
- NumericUpDown.cs
- HealthMonitoringSection.cs
- PropertyValueChangedEvent.cs
- ValidationError.cs
- FamilyTypeface.cs
- Positioning.cs
- Triplet.cs
- StaticTextPointer.cs
- PersonalizationDictionary.cs
- AsymmetricAlgorithm.cs
- RoutedEvent.cs
- Literal.cs
- WebPartDisplayMode.cs
- InputScope.cs
- XmlSerializerNamespaces.cs
- HiddenField.cs
- ConfigurationSection.cs
- Light.cs
- QueryRewriter.cs
- contentDescriptor.cs
- DataViewSettingCollection.cs
- ProviderManager.cs