Share via


Método SignedData.Sign

[El método Sign está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. En su lugar, use la clase SignedCms en el espacio de nombres System.Security.Cryptography.Pkcs .]

El método Sign crea una firma digital en el contenido que se va a firmar. Una firma digital consta de un hash del contenido que se va a firmar que se cifra mediante la clave privada del firmante. Este método solo se puede usar después de inicializar la propiedad SignedData.Content . Si se llama al método Sign en un objeto que ya tiene una firma, se reemplaza la firma antigua. La firma se crea mediante el algoritmo de firma SHA1.

Sintaxis

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

Parámetros

Firmante [in, opcional]

Referencia al objeto Signer del firmante de los datos. El objeto Signer debe tener acceso a la clave privada del certificado usado para firmar. Este parámetro puede ser NULL; para obtener más información, vea Comentarios.

bDetached [in, optional]

Si es True, los datos que se van a firmar se desasocian; es decir, el contenido firmado no se incluye como parte del objeto firmado. Para comprobar la firma en contenido desasociado, una aplicación debe tener una copia del contenido original. A menudo, el contenido desasociado se usa para reducir el tamaño de un objeto firmado que se enviará a través de la Web, si el destinatario del mensaje firmado tiene una copia original de los datos firmados. El valor predeterminado es False.

EncodingType [in, optional]

Valor de la enumeración CAPICOM_ENCODING_TYPE que indica cómo se van a codificar los datos firmados. El valor predeterminado es CAPICOM_ENCODE_BASE64. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
CAPICOM_ENCODE_ANY
Este tipo de codificación solo se usa cuando los datos de entrada tienen un tipo de codificación desconocido. Si este valor se usa para especificar el tipo de codificación de la salida, se usará CAPICOM_ENCODE_BASE64 en su lugar. Introducido en CAPICOM 2.0.
CAPICOM_ENCODE_BASE64
Los datos se guardan como una cadena codificada en base64.
CAPICOM_ENCODE_BINARY
Los datos se guardan como una secuencia binaria pura.

 

Valor devuelto

Este método devuelve una cadena que contiene los datos codificados y firmados.

Si se produce un error en este método, se producirá un error. El objeto Err contendrá información adicional sobre el error.

Comentarios

Importante

Cuando se llama a este método desde un script web, el script debe usar la clave privada para crear una firma digital. Permitir que los sitios web que no son de confianza usen su clave privada es un riesgo de seguridad. Cuadro de diálogo que pregunta si el sitio web puede usar la clave privada aparece cuando se llama por primera vez a este método. Si permite que el script use la clave privada para crear una firma digital y seleccione "No volver a mostrar este cuadro de diálogo", el cuadro de diálogo ya no aparecerá para ningún script dentro de ese dominio que use la clave privada para crear una firma digital. Sin embargo, los scripts fuera de ese dominio que intentan usar la clave privada para crear una firma digital seguirán provocando que aparezca este cuadro de diálogo. Si no permite que el script use la clave privada y seleccione "No volver a mostrar este cuadro de diálogo", los scripts de ese dominio se rechazarán automáticamente la capacidad de usar la clave privada para crear firmas digitales.

 

Dado que la creación de una firma digital requiere el uso de una clave privada, las aplicaciones basadas en web que intentan usar este método requerirán avisos de interfaz de usuario que permitan al usuario aprobar el uso de la clave privada por motivos de seguridad.

Los resultados siguientes se aplican al valor del parámetro Signer :

  • Si el parámetro Signer no es NULL, este método usa la clave privada a la que apunta el certificado asociado para cifrar la firma. Si la clave privada a la que apunta el certificado no está disponible, se produce un error en el método.
  • Si el parámetro Signer es NULL y hay exactamente un certificado en el almacén my CURRENT_USER que tiene acceso a una clave privada, ese certificado se usa para crear la firma.
  • Si el parámetro Signer es NULL, el valor de la propiedad Settings.EnablePromptForCertificateUI es true y hay más de un certificado en la CURRENT_USER mi almacén con una clave privada disponible, aparece un cuadro de diálogo que permite al usuario seleccionar qué certificado se usa.
  • Si el parámetro Signer es NULL y la propiedad Settings.EnablePromptForCertificateUI es false, se produce un error en el método.
  • Si el parámetro Signer es NULL y no hay ningún certificado en la CURRENT_USER mi almacén con una clave privada disponible, se produce un error en el método .

Requisitos

Requisito Value
Redistribuible
CAPICOM 2.0 o posterior en Windows Server 2003 y Windows XP
Archivo DLL
Capicom.dll

Consulte también

Objetos de criptografía

SignedData