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
- FontFamilyIdentifier.cs
- DrawingGroup.cs
- X509Chain.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- remotingproxy.cs
- MoveSizeWinEventHandler.cs
- TraceFilter.cs
- StringResourceManager.cs
- DefaultTextStore.cs
- SingleAnimationBase.cs
- DynamicPropertyReader.cs
- SystemSounds.cs
- HostedTransportConfigurationManager.cs
- Compiler.cs
- GridViewRowPresenterBase.cs
- Section.cs
- DialogWindow.cs
- Compiler.cs
- DbgCompiler.cs
- RSAOAEPKeyExchangeFormatter.cs
- StorageInfo.cs
- FunctionCommandText.cs
- WebPartHeaderCloseVerb.cs
- WebHeaderCollection.cs
- NotConverter.cs
- CaseStatement.cs
- IteratorDescriptor.cs
- XmlAnyAttributeAttribute.cs
- DataTrigger.cs
- initElementDictionary.cs
- RequestBringIntoViewEventArgs.cs
- MemberProjectionIndex.cs
- CancelEventArgs.cs
- SerializerProvider.cs
- RotateTransform.cs
- CommonDialog.cs
- Int32Converter.cs
- DiagnosticsConfigurationHandler.cs
- HtmlGenericControl.cs
- DataTableClearEvent.cs
- GeometryValueSerializer.cs
- Codec.cs
- LocalClientSecuritySettings.cs
- AuthorizationPolicyTypeElement.cs
- OdbcRowUpdatingEvent.cs
- serverconfig.cs
- StylusButton.cs
- HtmlElementCollection.cs
- HasActivatableWorkflowEvent.cs
- ModuleBuilder.cs
- QueryOptionExpression.cs
- RoutedEventValueSerializer.cs
- FixedDocumentPaginator.cs
- OracleParameterBinding.cs
- CacheModeValueSerializer.cs
- BulletedList.cs
- ImageSource.cs
- BamlWriter.cs
- HtmlDocument.cs
- DmlSqlGenerator.cs
- PointF.cs
- FunctionNode.cs
- DbConnectionHelper.cs
- DataSourceProvider.cs
- DataGridViewTextBoxEditingControl.cs
- ConnectionProviderAttribute.cs
- RegexCaptureCollection.cs
- WindowsScroll.cs
- SortQueryOperator.cs
- Brush.cs
- CompatibleIComparer.cs
- ProjectionPathBuilder.cs
- InternalBufferManager.cs
- Stroke2.cs
- StylusPlugInCollection.cs
- ProcessHost.cs
- HtmlInputText.cs
- XmlILModule.cs
- CommunicationObjectFaultedException.cs
- Oid.cs
- AutomationProperties.cs
- SchemaCollectionCompiler.cs
- SecureStringHasher.cs
- NativeMethods.cs
- ToolStripSeparatorRenderEventArgs.cs
- DbUpdateCommandTree.cs
- XmlTextReader.cs
- OleAutBinder.cs
- BamlCollectionHolder.cs
- EntityDataSourceDataSelection.cs
- RemotingConfigParser.cs
- ObfuscateAssemblyAttribute.cs
- IResourceProvider.cs
- IdnMapping.cs
- ListBoxItem.cs
- DataError.cs
- shaperfactoryquerycachekey.cs
- RIPEMD160Managed.cs
- TypeNameHelper.cs
- ExceptionUtil.cs