Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / X509Certificates / AuthenticodeSignatureInformation.cs / 1305376 / AuthenticodeSignatureInformation.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Security.Permissions; namespace System.Security.Cryptography.X509Certificates { ////// Details about the Authenticode signature of a manifest /// [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class AuthenticodeSignatureInformation { private string m_description; private Uri m_descriptionUrl; private CapiNative.AlgorithmId m_hashAlgorithmId; private X509Chain m_signatureChain; private TimestampInformation m_timestamp; private SignatureVerificationResult m_verificationResult; private X509Certificate2 m_signingCertificate; internal AuthenticodeSignatureInformation(X509Native.AXL_AUTHENTICODE_SIGNER_INFO signer, X509Chain signatureChain, TimestampInformation timestamp) { m_verificationResult = (SignatureVerificationResult)signer.dwError; m_hashAlgorithmId = signer.algHash; if (signer.pwszDescription != IntPtr.Zero) { m_description = Marshal.PtrToStringUni(signer.pwszDescription); } if (signer.pwszDescriptionUrl != IntPtr.Zero) { string descriptionUrl = Marshal.PtrToStringUni(signer.pwszDescriptionUrl); Uri.TryCreate(descriptionUrl, UriKind.RelativeOrAbsolute, out m_descriptionUrl); } m_signatureChain = signatureChain; // If there was a timestamp, and it was not valid we need to invalidate the entire Authenticode // signature as well, since we cannot assume that the signature would have verified without // the timestamp. if (timestamp != null && timestamp.VerificationResult != SignatureVerificationResult.MissingSignature) { if (timestamp.IsValid) { m_timestamp = timestamp; } else { m_verificationResult = SignatureVerificationResult.InvalidTimestamp; } } else { m_timestamp = null; } } ////// Create an Authenticode signature information for a signature which is not valid /// internal AuthenticodeSignatureInformation(SignatureVerificationResult error) { Debug.Assert(error != SignatureVerificationResult.Valid); m_verificationResult = error; } ////// Description of the signing certificate /// public string Description { get { return m_description; } } ////// Description URL of the signing certificate /// public Uri DescriptionUrl { get { return m_descriptionUrl; } } ////// Hash algorithm the signature was computed with /// public string HashAlgorithm { get { return CapiNative.GetAlgorithmName(m_hashAlgorithmId); } } ////// HRESULT from verifying the signature /// public int HResult { get { return CapiNative.HResultForVerificationResult(m_verificationResult); } } ////// X509 chain used to verify the Authenticode signature /// public X509Chain SignatureChain { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { return m_signatureChain; } } ////// Certificate the manifest was signed with /// public X509Certificate2 SigningCertificate { [StorePermission(SecurityAction.Demand, OpenStore = true, EnumerateCertificates = true)] get { if (m_signingCertificate == null && SignatureChain != null) { Debug.Assert(SignatureChain.ChainElements.Count > 0, "SignatureChain.ChainElements.Count > 0"); m_signingCertificate = SignatureChain.ChainElements[0].Certificate; } return m_signingCertificate; } } ////// Timestamp, if any, applied to the Authenticode signature /// ////// Note that this is only available in the trusted publisher case /// public TimestampInformation Timestamp { get { return m_timestamp; } } ////// Trustworthiness of the Authenticode signature /// public TrustStatus TrustStatus { get { switch (VerificationResult) { case SignatureVerificationResult.Valid: return TrustStatus.Trusted; case SignatureVerificationResult.CertificateNotExplicitlyTrusted: return TrustStatus.KnownIdentity; case SignatureVerificationResult.CertificateExplicitlyDistrusted: return TrustStatus.Untrusted; default: return TrustStatus.UnknownIdentity; } } } ////// Result of verifying the Authenticode 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
- NumberAction.cs
- PrinterResolution.cs
- AudioDeviceOut.cs
- NullableConverter.cs
- AutoGeneratedField.cs
- RequestCachePolicy.cs
- PrimitiveXmlSerializers.cs
- LayoutEngine.cs
- HttpApplication.cs
- QilUnary.cs
- SByteConverter.cs
- EntityConnectionStringBuilderItem.cs
- PageTheme.cs
- WindowsListViewItem.cs
- Int32AnimationBase.cs
- TrackingWorkflowEventArgs.cs
- GradientSpreadMethodValidation.cs
- AddInControllerImpl.cs
- XPathDocument.cs
- SoapIncludeAttribute.cs
- XmlCharacterData.cs
- DynamicMethod.cs
- FormParameter.cs
- ChangeBlockUndoRecord.cs
- ClientProtocol.cs
- SqlTrackingWorkflowInstance.cs
- SiteMapProvider.cs
- NativeMethods.cs
- PropertyValueUIItem.cs
- TextRangeAdaptor.cs
- SectionXmlInfo.cs
- CommentAction.cs
- CodeRemoveEventStatement.cs
- SBCSCodePageEncoding.cs
- WindowsAltTab.cs
- StringCollection.cs
- TaskExtensions.cs
- ReadOnlyDataSource.cs
- PageOrientation.cs
- ExpressionTextBoxAutomationPeer.cs
- SingleTagSectionHandler.cs
- ToolbarAUtomationPeer.cs
- RawStylusInputCustomDataList.cs
- LocatorPart.cs
- IsolatedStorageFile.cs
- CheckedListBox.cs
- TableRow.cs
- FullTextState.cs
- EpmSyndicationContentDeSerializer.cs
- ActiveXHost.cs
- TraceSwitch.cs
- HttpRequest.cs
- InternalSafeNativeMethods.cs
- SHA512.cs
- EventPropertyMap.cs
- BitmapEffectDrawingContent.cs
- TextParagraph.cs
- ProviderUtil.cs
- QueryConverter.cs
- DataServiceBuildProvider.cs
- UInt64Storage.cs
- SamlAdvice.cs
- TextDecorations.cs
- KeyPressEvent.cs
- DataControlImageButton.cs
- BindingNavigator.cs
- PolicyLevel.cs
- SqlUtil.cs
- ClientApiGenerator.cs
- TraceEventCache.cs
- PanelDesigner.cs
- precedingsibling.cs
- FileUtil.cs
- Font.cs
- ButtonBaseAutomationPeer.cs
- BuildDependencySet.cs
- ThicknessAnimationUsingKeyFrames.cs
- PageBreakRecord.cs
- DesignerProperties.cs
- UTF8Encoding.cs
- DesignerDataParameter.cs
- XmlNamespaceMapping.cs
- DataServiceRequestArgs.cs
- ArrowControl.xaml.cs
- SchemaTableColumn.cs
- BigInt.cs
- UndirectedGraph.cs
- CacheAxisQuery.cs
- DataObjectSettingDataEventArgs.cs
- ClientTargetCollection.cs
- PerfCounterSection.cs
- infer.cs
- PixelFormat.cs
- GenericIdentity.cs
- CheckoutException.cs
- StrokeRenderer.cs
- CodeGeneratorOptions.cs
- XmlNodeWriter.cs
- Cloud.cs
- WindowsFont.cs