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
- XmlHierarchicalEnumerable.cs
- EventSinkHelperWriter.cs
- WindowsBrush.cs
- ZipIOLocalFileBlock.cs
- AnnotationResource.cs
- SecurityUtils.cs
- TabItemAutomationPeer.cs
- DataRow.cs
- IdentifierElement.cs
- ObjectReaderCompiler.cs
- ValueUnavailableException.cs
- DataObjectCopyingEventArgs.cs
- MaterialGroup.cs
- _SSPIWrapper.cs
- XmlSchemaValidationException.cs
- RepeaterItemEventArgs.cs
- GridViewDesigner.cs
- FileDialog.cs
- TextPointerBase.cs
- XmlProcessingInstruction.cs
- XsltConvert.cs
- GroupQuery.cs
- TextInfo.cs
- ProcessStartInfo.cs
- ExpressionLexer.cs
- EndpointAddress.cs
- DynamicValueConverter.cs
- PropertyPathConverter.cs
- DataGridViewCellValueEventArgs.cs
- ActivityInterfaces.cs
- FilterableAttribute.cs
- ZipQueryOperator.cs
- HttpRequestTraceRecord.cs
- BinHexDecoder.cs
- SourceChangedEventArgs.cs
- XAMLParseException.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- InputBuffer.cs
- AuthenticationException.cs
- FreezableDefaultValueFactory.cs
- WorkflowTraceTransfer.cs
- DragEvent.cs
- NullableBoolConverter.cs
- MarkedHighlightComponent.cs
- StructuredProperty.cs
- MessageTransmitTraceRecord.cs
- ThemeConfigurationDialog.cs
- ObjectListTitleAttribute.cs
- VirtualPathProvider.cs
- ModelEditingScope.cs
- StylusTouchDevice.cs
- DataGridViewTopLeftHeaderCell.cs
- UrlEncodedParameterWriter.cs
- UIPropertyMetadata.cs
- BinaryFormatterWriter.cs
- RoleManagerSection.cs
- CompiledELinqQueryState.cs
- TableItemProviderWrapper.cs
- Variant.cs
- InterleavedZipPartStream.cs
- ModuleConfigurationInfo.cs
- PassportAuthenticationEventArgs.cs
- PropertyExpression.cs
- ToolStripContainer.cs
- AnimationClockResource.cs
- PlatformCulture.cs
- Match.cs
- PropertyInfo.cs
- TypeExtension.cs
- DataServiceException.cs
- ConfigXmlAttribute.cs
- CryptoApi.cs
- FileDialogCustomPlace.cs
- CustomAttributeFormatException.cs
- LambdaCompiler.cs
- Win32PrintDialog.cs
- HttpModulesSection.cs
- PasswordDeriveBytes.cs
- DependencyPropertyKey.cs
- BufferedStream2.cs
- _CookieModule.cs
- ServiceObjectContainer.cs
- WebPartConnectionsCancelVerb.cs
- XmlDataImplementation.cs
- SchemaContext.cs
- HttpContextWrapper.cs
- filewebrequest.cs
- KeyValuePair.cs
- ValueUnavailableException.cs
- EncodingNLS.cs
- BuildResult.cs
- MultipartContentParser.cs
- RealProxy.cs
- InstanceView.cs
- DataGridViewColumnCollectionDialog.cs
- CodeGroup.cs
- QilVisitor.cs
- ValueTypeFixupInfo.cs
- SqlRecordBuffer.cs
- SortDescription.cs