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
- PageAsyncTask.cs
- OleServicesContext.cs
- ListSortDescription.cs
- VariableQuery.cs
- Boolean.cs
- WindowsSysHeader.cs
- DesignerCategoryAttribute.cs
- DataPointer.cs
- PropertyGridCommands.cs
- ContentElement.cs
- httpapplicationstate.cs
- XmlNamespaceManager.cs
- FontDifferentiator.cs
- StreamedFramingRequestChannel.cs
- DelegatingHeader.cs
- ReadOnlyCollection.cs
- InfoCardRSACryptoProvider.cs
- EnvironmentPermission.cs
- FileEnumerator.cs
- OuterGlowBitmapEffect.cs
- _NegotiateClient.cs
- MemberBinding.cs
- Int64.cs
- Effect.cs
- SplineQuaternionKeyFrame.cs
- RtType.cs
- WebBrowserNavigatingEventHandler.cs
- DynamicValueConverter.cs
- TextWriterEngine.cs
- RandomNumberGenerator.cs
- TextEditorParagraphs.cs
- MediaEntryAttribute.cs
- WorkflowRuntimeServiceElement.cs
- IdentityReference.cs
- TileModeValidation.cs
- FormViewInsertedEventArgs.cs
- Run.cs
- ResourceBinder.cs
- DataViewManagerListItemTypeDescriptor.cs
- AppDomainManager.cs
- DataGridCellInfo.cs
- EntityDataSourceDataSelectionPanel.cs
- ADMembershipUser.cs
- StackSpiller.Bindings.cs
- DetailsViewPagerRow.cs
- ObjectParameterCollection.cs
- ResourceSet.cs
- HiddenFieldPageStatePersister.cs
- ErrorWebPart.cs
- ExpressionBuilderCollection.cs
- EntityCommandDefinition.cs
- ExplicitDiscriminatorMap.cs
- ControlParameter.cs
- RolePrincipal.cs
- SmiEventSink.cs
- BindingValueChangedEventArgs.cs
- Visitors.cs
- StylusButtonEventArgs.cs
- PersonalizationDictionary.cs
- DynamicValueConverter.cs
- NativeMethods.cs
- WebPartPersonalization.cs
- DataBinding.cs
- SecurityTokenSerializer.cs
- ObjectTag.cs
- SmiContextFactory.cs
- PenContext.cs
- XmlSchemaParticle.cs
- AuthenticationService.cs
- RegistryConfigurationProvider.cs
- UpdateManifestForBrowserApplication.cs
- TableCell.cs
- ConfigsHelper.cs
- UserControlParser.cs
- SqlRetyper.cs
- ConfigurationStrings.cs
- GeometryCombineModeValidation.cs
- ThreadPool.cs
- SubtreeProcessor.cs
- IgnoreSection.cs
- HtmlAnchor.cs
- ICspAsymmetricAlgorithm.cs
- StructuralCache.cs
- PaperSize.cs
- XmlSchemaAll.cs
- Method.cs
- TableLayoutCellPaintEventArgs.cs
- SHA384Cng.cs
- XmlExpressionDumper.cs
- DbParameterCollectionHelper.cs
- MatrixStack.cs
- ProfilePropertyMetadata.cs
- ApplicationContext.cs
- NamespaceTable.cs
- ViewEventArgs.cs
- EventSinkHelperWriter.cs
- DbProviderManifest.cs
- IdnElement.cs
- VerificationAttribute.cs
- XappLauncher.cs