CertificateEmbeddingOption Wyliczenie

Definicja

Określa lokalizację przechowywania certyfikatu X.509 używanego podczas podpisywania.

C#
public enum CertificateEmbeddingOption
Dziedziczenie
CertificateEmbeddingOption

Pola

Nazwa Wartość Opis
InCertificatePart 0

Certyfikat jest osadzony we własnym PackagePartobiekcie .

InSignaturePart 1

Certyfikat jest osadzony w SignaturePart obiekcie, który jest tworzony na potrzeby dodawanego podpisu.

NotEmbedded 2

Certyfikat nie jest osadzony w pakiecie.

Przykłady

W poniższym przykładzie pokazano, jak użyć CertificateEmbeddingOption polecenia w celu ustawienia PackageDigitalSignatureManager.CertificateOption właściwości .

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

Uwagi

Jeśli certyfikat znajduje się NotEmbedded w pakiecie, aplikacja, która weryfikuje podpisy, musi podać kopię certyfikatu, aby zweryfikować podpisy podpisane przez niego.

InSignaturePart Dodaje dwa elementy <KeyName> informacyjne i <KeyValue>, jako część KeyInfo pola przechowywanego podpisu cyfrowego. <KeyName> Elementy i <KeyValue> nie są przetwarzane w ramach weryfikacji podpisu i dlatego nie są zabezpieczone przed modyfikacją. Aplikacje nie powinny zakładać ważności tych dwóch elementów. Aby uniknąć niewykrytych modyfikacji i możliwych pomyłek, aplikacje powinny używać InCertificatePart opcji zamiast InSignaturePart. Opcja InCertificatePart nie udostępnia ani nie uwidacznia pliku <KeyName> albo <KeyValue>.

Dotyczy

Produkt Wersje
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Zobacz też