1 | #ifndef CRYPTOTOKEN_H |
---|
2 | #define CRYPTOTOKEN_H |
---|
3 | |
---|
4 | #include <QObject> |
---|
5 | |
---|
6 | #include "pkcs11.h" |
---|
7 | |
---|
8 | class CryptoToken |
---|
9 | { |
---|
10 | |
---|
11 | public: |
---|
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 |
---|