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
- DefaultTraceListener.cs
- RadioButtonPopupAdapter.cs
- SoapWriter.cs
- TextContainerHelper.cs
- ByteAnimationBase.cs
- ValueQuery.cs
- ContextMenu.cs
- ClipboardProcessor.cs
- DbModificationCommandTree.cs
- EncryptedType.cs
- SortDescriptionCollection.cs
- MD5.cs
- CatalogZone.cs
- Win32SafeHandles.cs
- XmlnsPrefixAttribute.cs
- AbstractSvcMapFileLoader.cs
- GridViewDeletedEventArgs.cs
- UInt16.cs
- ObjectItemCollection.cs
- FastEncoder.cs
- XamlSerializerUtil.cs
- StylusCaptureWithinProperty.cs
- EditorOptionAttribute.cs
- AdministrationHelpers.cs
- UnknownBitmapEncoder.cs
- Matrix.cs
- XmlWellformedWriterHelpers.cs
- ImageInfo.cs
- HealthMonitoringSectionHelper.cs
- XPathNodeList.cs
- HGlobalSafeHandle.cs
- URLString.cs
- CustomErrorsSectionWrapper.cs
- DescendantQuery.cs
- TypeConverterHelper.cs
- FontFamily.cs
- DataMisalignedException.cs
- Context.cs
- DataGridCellItemAutomationPeer.cs
- RegexFCD.cs
- propertytag.cs
- GC.cs
- DataChangedEventManager.cs
- EntityRecordInfo.cs
- SerializerProvider.cs
- ResourcePart.cs
- AutoCompleteStringCollection.cs
- IResourceProvider.cs
- basenumberconverter.cs
- Renderer.cs
- TextStore.cs
- FirstMatchCodeGroup.cs
- CheckPair.cs
- TreeViewBindingsEditorForm.cs
- XmlnsCompatibleWithAttribute.cs
- InstanceCollisionException.cs
- OAVariantLib.cs
- Queue.cs
- InfoCardMetadataExchangeClient.cs
- FixedFindEngine.cs
- TreeBuilder.cs
- SEHException.cs
- AttributeData.cs
- SmiEventSink_DeferedProcessing.cs
- SimpleTextLine.cs
- MetadataUtil.cs
- HttpModuleActionCollection.cs
- Tuple.cs
- PieceDirectory.cs
- ReachPageContentCollectionSerializer.cs
- ViewBox.cs
- ProtocolsConfigurationHandler.cs
- GenerateScriptTypeAttribute.cs
- DotExpr.cs
- wgx_commands.cs
- PreProcessInputEventArgs.cs
- CultureInfoConverter.cs
- ParallelTimeline.cs
- AutoGeneratedFieldProperties.cs
- QueryStringParameter.cs
- loginstatus.cs
- HtmlEncodedRawTextWriter.cs
- TimeoutConverter.cs
- XmlQualifiedName.cs
- TextEndOfSegment.cs
- InvokePatternIdentifiers.cs
- DetailsViewPageEventArgs.cs
- TextFormatterContext.cs
- OleDbStruct.cs
- PartBasedPackageProperties.cs
- TableRowCollection.cs
- SiteMapDataSource.cs
- WebSysDescriptionAttribute.cs
- DataList.cs
- AnnotationHighlightLayer.cs
- UIElement3DAutomationPeer.cs
- Point4DValueSerializer.cs
- XmlDocumentSchema.cs
- FormViewPagerRow.cs
- SerializableAttribute.cs