Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Método PackageDigitalSignatureManager.Sign (IEnumerable<Uri>, X509Certificate, IEnumerable<PackageRelationshipSelector>)

Assina uma lista de partes de um pacote e os relacionamentos de pacote com um determinado certificado x. 509.

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (em WindowsBase.dll)

public PackageDigitalSignature Sign(
	IEnumerable<Uri> parts,
	X509Certificate certificate,
	IEnumerable<PackageRelationshipSelector> relationshipSelectors
)

Parâmetros

parts
Tipo: System.Collections.Generic.IEnumerable<Uri>
A lista de uniform resource identifiers (URIs) para o PackagePart objetos para entrar.
certificate
Tipo: System.Security.Cryptography.X509Certificates.X509Certificate
O certificado x. 509 para usar para assinar digitalmente a cada uma das partes especificadas e relacionamentos.
relationshipSelectors
Tipo: System.Collections.Generic.IEnumerable<PackageRelationshipSelector>
A lista de PackageRelationship objetos para entrar.

Valor de retorno

Tipo: System.IO.Packaging.PackageDigitalSignature
A assinatura digital usada para assinar os elementos especificados na parts e relationshipSelectors lista.

ExceçãoCondição
ArgumentException

Nem parts nem relationshipSelectors especificar todos os objetos para entrar.

Entre parts e relationshipSelectors deve haver pelo menos um elemento a ser assinado.

O exemplo a seguir mostra como assinar digitalmente uma lista de partes do pacote. Para obter o exemplo completo, consulte o Criando um pacote com uma amostra de Assinatura Digital.


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



.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft