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
- DataShape.cs
- AccessedThroughPropertyAttribute.cs
- StylusCaptureWithinProperty.cs
- ConfigurationElementCollection.cs
- PagesChangedEventArgs.cs
- InputChannel.cs
- TextViewBase.cs
- OleDbErrorCollection.cs
- FontFamily.cs
- LinkTarget.cs
- PrintPreviewGraphics.cs
- Single.cs
- ToolstripProfessionalRenderer.cs
- DataGridViewButtonColumn.cs
- SafeReversePInvokeHandle.cs
- FrameworkTemplate.cs
- CardSpacePolicyElement.cs
- XmlTextReaderImplHelpers.cs
- GroupDescription.cs
- WebPartsPersonalization.cs
- RelatedPropertyManager.cs
- TemplateColumn.cs
- PackUriHelper.cs
- ToolStripGrip.cs
- WebConfigurationHost.cs
- WindowsSolidBrush.cs
- HtmlEmptyTagControlBuilder.cs
- AdapterDictionary.cs
- ThousandthOfEmRealPoints.cs
- TextTreeUndoUnit.cs
- TableRow.cs
- FontWeight.cs
- ErrorHandler.cs
- MILUtilities.cs
- BoundField.cs
- WebConfigurationHost.cs
- BitSet.cs
- Identity.cs
- recordstatefactory.cs
- BidPrivateBase.cs
- StreamGeometry.cs
- MatrixAnimationUsingKeyFrames.cs
- ChooseAction.cs
- X509Certificate.cs
- ApplicationTrust.cs
- ObjectKeyFrameCollection.cs
- GifBitmapDecoder.cs
- KeyManager.cs
- PointCollection.cs
- DataGrid.cs
- HostedTransportConfigurationBase.cs
- SelectionPattern.cs
- SymmetricKey.cs
- ComponentEvent.cs
- OleDbConnectionFactory.cs
- DocumentScope.cs
- CodeGenerator.cs
- Header.cs
- BitConverter.cs
- RuntimeHandles.cs
- MethodBuilder.cs
- ServiceDesigner.xaml.cs
- StructuredType.cs
- HandlerBase.cs
- DataGridViewToolTip.cs
- CreateUserErrorEventArgs.cs
- EtwTrace.cs
- HighlightVisual.cs
- ListViewDeletedEventArgs.cs
- PageAsyncTask.cs
- _ListenerRequestStream.cs
- MetadataItemCollectionFactory.cs
- PromptEventArgs.cs
- RijndaelManaged.cs
- RuntimeConfigurationRecord.cs
- UInt16Storage.cs
- DataGridRelationshipRow.cs
- ObjectResult.cs
- MatrixTransform3D.cs
- SqlParameterCollection.cs
- DataGridDesigner.cs
- ImageClickEventArgs.cs
- HttpContext.cs
- SymbolMethod.cs
- InkCanvasInnerCanvas.cs
- Exceptions.cs
- MarkupCompilePass2.cs
- ExpandSegmentCollection.cs
- PrimitiveSchema.cs
- StreamUpgradeProvider.cs
- WindowsBrush.cs
- ObjectToken.cs
- TreeViewItemAutomationPeer.cs
- AllMembershipCondition.cs
- CdpEqualityComparer.cs
- ApplicationServiceHelper.cs
- _ConnectStream.cs
- RepeatBehavior.cs
- FormsAuthenticationConfiguration.cs
- XPathDocument.cs