Método IOpcDigitalSignatureManager::Sign (msopc.h)
Firma el paquete mediante la generación de una firma mediante el certificado especificado y el puntero de interfaz IOpcSigningOptions . La firma resultante se representa mediante un puntero de interfaz IOpcDigitalSignature .
Sintaxis
HRESULT Sign(
[in] const CERT_CONTEXT *certificate,
[in] IOpcSigningOptions *signingOptions,
[out, retval] IOpcDigitalSignature **digitalSignature
);
Parámetros
[in] certificate
Puntero a una estructura de CERT_CONTEXT que contiene el certificado.
[in] signingOptions
Puntero de interfaz IOpcSigningOptions que se usa para generar la firma.
[out, retval] digitalSignature
Nuevo puntero de interfaz IOpcDigitalSignature que representa la firma.
Valor devuelto
El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.
Código o valor devuelto | Descripción |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
Al menos uno de los parámetros certificate, signingOptions y digitalSignature es NULL. |
|
No se ha establecido el método de resumen predeterminado; para establecerlo, llame a IOpcSigningOptions::SetDefaultDigestMethod. |
|
No se puede obtener el valor de resumen de un componente de paquete o un elemento en el marcado de firma al que se hace referencia para la firma. |
|
El formato de hora de la firma no es un valor de enumeración OPC_SIGNATURE_TIME_FORMAT válido. |
|
Una opción de firma de relación indicada no es un valor de enumeración OPC_RELATIONSHIPS_SIGNING_OPTION válido. |
|
Una firma del paquete no tiene el formato correcto. No se puede obtener el valor de firma. |
|
No se ha establecido el método de firma. Llame a IOpcSigningOptions::SetSignatureMethod para establecer el método de firma. |
|
La parte especificada no existe. |
|
Código de error HRESULT de una API de criptografía . |
|
Código de error HRESULT de una API de servicios web de Windows . |
Comentarios
Este método usa objetos Packaging para realizar cambios en un paquete. Los cambios resultantes no se guardan hasta que se guarda el propio paquete.
Antes de llamar a este método para generar una firma, llame a los métodos IOpcSigningOptions::SetDefaultDigestMethod e IOpcSigningOptions::SetSignatureMethod .
Para crear un puntero de interfaz IOpcSigningOptions , que requiere este método, llame al método CreateSigningOptions .
- La parte Origen de la firma digital
- Relación de paquete del tipo de relación de origen de firma digital
- Una parte de firma que contiene el marcado de firma
- Una o varias partes que contienen un certificado
- Una relación que tiene como destino un elemento de firma y que tiene la parte Origen de firma digital como origen
- Una o varias relaciones que tienen como destino un elemento de firma que contiene un certificado y que tiene otra parte de firma como origen
Si se produce un error en Sign, cualquiera de las partes y relaciones anteriores se puede representar, en el paquete, mediante objetos Packaging. Si el método devuelve el OPC_E_DS_SIGNATURE_METHOD_NOT_SET o OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET código de error, el paquete no se ha modificado.
Si Sign se ejecuta correctamente, los valores de resumen se calculan para las entidades firmadas y la firma generada se serializa como marcado de firma. Entre las posibles entidades firmadas se incluyen el elemento Signature , las referencias, los elementos, las relaciones y los elementos Object específicos del paquete y específicos de la aplicación.
Es posible que los errores que se introducen en una firma de paquete cuando el autor de la llamada use la interfaz IOpcSigningOptions para establecer información de firma no se exponga hasta que se llame a Sign .
Seguridad para subprocesos
Los objetos de empaquetado no son seguros para subprocesos.
Para más información, consulte la Introducción con la API de empaquetado.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | msopc.h |
Consulte también
Interfaces de empaquetado principal
Información general sobre firmas digitales
Introducción con la API de empaquetado
Temas de introducción
Guía de programación de api de empaquetado
Referencia de API de empaquetado
Ejemplos de API de empaquetado
Empaquetado de interfaces de firma digital
Referencia