source: terepaima/signHash/cryptotoken.h @ 0f7c727

Last change on this file since 0f7c727 was 0f7c727, checked in by Antonio Araujo <aaraujo@…>, 7 years ago

Agregado directorio signHash que corrresponde a prueba de concepto para firmar un hash con un dispositivo criptográfico en C++. El objetivo es que desde Terepaima se pueda firmar el hash que se recibe del servicio web Murachí.

  • Property mode set to 100644
File size: 2.3 KB
Line 
1#ifndef CRYPTOTOKEN_H
2#define CRYPTOTOKEN_H
3
4#include <QObject>
5
6#include "pkcs11.h"
7
8class CryptoToken
9{
10
11public:
12
13    /**
14     * @brief Constructor de la clase CryptoToken
15     */
16    explicit CryptoToken();
17
18    /**
19     * @brief Destructor de la clase
20     */
21    virtual ~CryptoToken();
22
23    /**
24     * @brief Inicializa el Criptoki
25     * @return retorna si inicializa el Criptoki
26     */
27    bool initializeCriptoki();
28
29    /**
30     * @brief Finaliza el criptoki
31     */
32    void finalize();
33
34    /**
35     * @brief Abre una sesion en el dispositivo criptografico
36     * @param Pin PIN del dispositivo
37     * @param slotID slot asociado a la sesión en el dispositivo
38     * @param requiredlogin si se requiere el login, por defecto si
39     * @return handle de la sesión
40     */
41    CK_SESSION_HANDLE openSession(char * Pin, CK_SLOT_ID & slotID, bool requiredlogin = true);
42
43    void closeSession(CK_SESSION_HANDLE hSession);
44
45    /**
46     * @brief Retorna un handle a la clave privada encontrada dentro del dispositivo
47     * @param hSession handle de la sesión abierta en el dispositivo
48     * @param slotID identificador de slot
49     * @param id etiqueta de la clave dentro del dispositivo
50     * @return
51     */
52    CK_OBJECT_HANDLE getPrivateKey(CK_SESSION_HANDLE hSession, CK_SLOT_ID slotID, QString id);
53
54    /**
55     * @brief firma digitalmente unos datos con la tarjeta inteligente
56     * @param hSession handle a la sesion abierta en la tarjeta
57     * @param privateKey handle a la clave privada de la tarjeta
58     * @param someData datos a firmar (CK_BYTE_PTR: unsigned char *)
59     * @param someDataLen longitud de los datos a firmar
60     * @param sign firma de los datos
61     * @param signLen longitud de la firma de los datos
62     * @return firma electronica de los datos pasados en someData
63     */
64    bool signSomeData(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE privateKey, CK_BYTE_PTR someData,
65            CK_ULONG someDataLen, CK_BYTE_PTR sign, CK_ULONG_PTR signLen );
66
67    /**
68     * @brief Retorna información del modulo PKCS11
69     * @return cadena con informacion del modulo PKCS11
70     */
71    QString getInfoCryptoki();
72
73    /**
74     * @brief Retorna error de pkcs11 en formato de cadena QString
75     * @param rv
76     * @return cadena con el error
77     */
78    QString returnErrorToQString(CK_RV rv);
79
80};
81
82#endif // CRYPTOTOKEN_H
Note: See TracBrowser for help on using the repository browser.