CertificateEmbeddingOption Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İmzalamada kullanılan X.509 sertifikasının depolandığı konumu belirtir.
public enum class CertificateEmbeddingOption
public enum CertificateEmbeddingOption
type CertificateEmbeddingOption =
Public Enum CertificateEmbeddingOption
- Devralma
Alanlar
Name | Değer | Description |
---|---|---|
InCertificatePart | 0 | Sertifika kendi PackagePartiçine eklenir. |
InSignaturePart | 1 | Sertifika, eklenen imza için oluşturulan öğesine eklenir SignaturePart . |
NotEmbedded | 2 | içindeki sertifika pakete eklenmedi. |
Örnekler
Aşağıdaki örnekte özelliğini ayarlamak için nasıl kullanılacağı CertificateEmbeddingOption
gösterilmektedir PackageDigitalSignatureManager.CertificateOption .
private static void SignAllParts(Package package)
{
if (package == null)
throw new ArgumentNullException("SignAllParts(package)");
// Create the DigitalSignature Manager
PackageDigitalSignatureManager dsm =
new PackageDigitalSignatureManager(package);
dsm.CertificateOption =
CertificateEmbeddingOption.InSignaturePart;
// Create a list of all the part URIs in the package to sign
// (GetParts() also includes PackageRelationship parts).
System.Collections.Generic.List<Uri> toSign =
new System.Collections.Generic.List<Uri>();
foreach (PackagePart packagePart in package.GetParts())
{
// Add all package parts to the list for signing.
toSign.Add(packagePart.Uri);
}
// Add the URI for SignatureOrigin PackageRelationship part.
// The SignatureOrigin relationship is created when Sign() is called.
// Signing the SignatureOrigin relationship disables counter-signatures.
toSign.Add(PackUriHelper.GetRelationshipPartUri(dsm.SignatureOrigin));
// Also sign the SignatureOrigin part.
toSign.Add(dsm.SignatureOrigin);
// Add the package relationship to the signature origin to be signed.
toSign.Add(PackUriHelper.GetRelationshipPartUri(new Uri("/", UriKind.RelativeOrAbsolute)));
// Sign() will prompt the user to select a Certificate to sign with.
try
{
dsm.Sign(toSign);
}
// If there are no certificates or the SmartCard manager is
// not running, catch the exception and show an error message.
catch (CryptographicException ex)
{
MessageBox.Show(
"Cannot Sign\n" + ex.Message,
"No Digital Certificates Available",
MessageBoxButton.OK,
MessageBoxImage.Exclamation);
}
}// end:SignAllParts()
Private Shared Sub SignAllParts(ByVal package As Package)
If package Is Nothing Then
Throw New ArgumentNullException("SignAllParts(package)")
End If
' Create the DigitalSignature Manager
Dim dsm As New PackageDigitalSignatureManager(package)
dsm.CertificateOption = CertificateEmbeddingOption.InSignaturePart
' Create a list of all the part URIs in the package to sign
' (GetParts() also includes PackageRelationship parts).
Dim toSign As New System.Collections.Generic.List(Of Uri)()
For Each packagePart As PackagePart In package.GetParts()
' Add all package parts to the list for signing.
toSign.Add(packagePart.Uri)
Next
' Add the URI for SignatureOrigin PackageRelationship part.
' The SignatureOrigin relationship is created when Sign() is called.
' Signing the SignatureOrigin relationship disables counter-signatures.
toSign.Add(PackUriHelper.GetRelationshipPartUri(dsm.SignatureOrigin))
' Also sign the SignatureOrigin part.
toSign.Add(dsm.SignatureOrigin)
' Add the package relationship to the signature origin to be signed.
toSign.Add(PackUriHelper.GetRelationshipPartUri(New Uri("/", UriKind.RelativeOrAbsolute)))
' Sign() will prompt the user to select a Certificate to sign with.
Try
dsm.Sign(toSign)
Catch ex As CryptographicException
' If there are no certificates or the SmartCard manager is
' not running, catch the exception and show an error message.
MessageBox.Show("Cannot Sign" & vbLf & ex.Message, "No Digital Certificates Available", MessageBoxButton.OK, MessageBoxImage.Exclamation)
End Try
End Sub
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
target = value
Return value
End Function
' end:SignAllParts()
Açıklamalar
Sertifika paketteyse NotEmbedded
, imzaları doğrulayan bir uygulama tarafından imzalanan imzaları doğrulamak için sertifikanın bir kopyasını sağlamalıdır.
InSignaturePart
depolanan <KeyName>
dijital imza alanının KeyInfo bir parçası olarak ve <KeyValue>
olarak iki bilgi öğesi ekler.
<KeyName>
ve <KeyValue>
öğeleri imza doğrulamasının bir parçası olarak işlenmez ve bu nedenle değişiklikten güvenli değildir. Uygulamalar bu iki öğesinin geçerliliğiyle ilgili herhangi bir varsayımda bulunmamalıdır. Algılanmayan değişiklikleri ve olası karışıklığı önlemek için uygulamalar yerine InSignaturePart
seçeneğini kullanmalıdırInCertificatePart
.
InCertificatePart
seçeneği ya da <KeyName>
<KeyValue>
sağlamaz veya sunmaz.