Freigeben über


CertificateEmbeddingOption Enumeration

Definition

Gibt den Speicherort an, an dem das X.509-Zertifikat, das beim Signieren verwendet wird, gespeichert ist.

public enum class CertificateEmbeddingOption
public enum CertificateEmbeddingOption
type CertificateEmbeddingOption = 
Public Enum CertificateEmbeddingOption
Vererbung
CertificateEmbeddingOption

Felder

Name Wert Beschreibung
InCertificatePart 0

Das Zertifikat ist in ein eigenes PackagePartEingebettet.

InSignaturePart 1

Das Zertifikat ist in das SignaturePart Zertifikat eingebettet, das für die hinzugefügte Signatur erstellt wird.

NotEmbedded 2

Das Zertifikat, das nicht in das Paket eingebettet ist.

Beispiele

Das folgende Beispiel zeigt, wie sie zum Festlegen der PackageDigitalSignatureManager.CertificateOption Eigenschaft verwendet CertificateEmbeddingOption werden.

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()

Hinweise

Wenn sich das Zertifikat NotEmbedded im Paket befindet, muss eine Anwendung, die Signaturen überprüft, eine Kopie des Zertifikats bereitstellen, um die von ihr signierten Signaturen zu überprüfen.

InSignaturePart fügt zwei Informationselemente hinzu, <KeyName> und <KeyValue>, als Teil des KeyInfo Felds der gespeicherten digitalen Signatur. Die <KeyName> Elemente <KeyValue> werden nicht als Teil der Signaturüberprüfung verarbeitet und sind daher nicht sicher vor Änderungen. Anträge sollten keine Annahmen hinsichtlich der Gültigkeit dieser beiden Elemente treffen. Um nicht erkannte Änderungen und mögliche Verwirrungen zu vermeiden, sollten Anwendungen die InCertificatePart Option anstelle von InSignaturePart. Die InCertificatePart Option bietet oder macht keines <KeyName> oder <KeyValue>verfügbar.

Gilt für:

Weitere Informationen