4
* Copyright (C) 2011 Victor Bravo (vbravo@cenditel.gob.ve),
5
* Antonio Araujo (aaraujo@cenditel.gob.ve),
6
* Pedro Buitrago (pbuitrago@cenditel.gob.ve),
7
* Rodolfo Sumoza (rsumoza@cenditel.gob.ve)
9
* CENDITEL Fundacion Centro Nacional de Desarrollo e Investigacion en
12
* Este programa es software libre; Usted puede usarlo bajo los terminos de la
13
* licencia de software GPL version 2.0 de la Free Software Foundation.
15
* Este programa se distribuye con la esperanza de que sea util, pero SIN
16
* NINGUNA GARANTIA; tampoco las implicitas garantias de MERCANTILIDAD o
17
* ADECUACION A UN PROPOSITO PARTICULAR.
18
* Consulte la licencia GPL para mas detalles. Usted debe recibir una copia
19
* de la GPL junto con este programa; si no, escriba a la Free Software
20
* Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA.
38
// funcion que retorna el tipo de error que puede ocurrir cuando se manipula la tarjeta inteligente en la QString x
39
QString returnErrorToQString(CK_RV rv);
45
* Representa un objeto SmartCard para manipular elementos de una tarjeta inteligente.
49
class SmartCard : public QObject
53
explicit SmartCard(QObject *parent = 0);
60
* Carga el driver de la tarjeta inteligente
62
* @return Retorna si se cargo el driver de la tarjeta correctamente
65
bool loadDriver( const QString &driver );
68
* Descarga el driver de la tarjeta inteligente
76
* @return Retorna si se inicializo correctamente el criptoki
78
bool initializeCriptoki();
89
* @param Pin PIN de la tarjeta
90
* @param slotID ID de slot
91
* @param requiredlogin verdadero si se requiere una sesion con login
92
* @return CK_SESSION_HANDLE handle de sesion
94
CK_SESSION_HANDLE openSession(const char * Pin, CK_SLOT_ID & slotID, bool requiredlogin = true);
100
* @param hSession handle de la sesion abierta
102
void closeSession(CK_SESSION_HANDLE hSession);
106
* Busca Objetos en la tarjeta
108
* @param hSession handle de la sesion abierta
109
* @return Retorna si se leyeron correctamente los objetos de la tarjeta
111
bool readObjects(CK_SESSION_HANDLE hSession);
115
* Busca un certificado
117
* @param hSession handle de la sesion abierta
118
* @return Retorna si se encontraron certificados
120
bool searchCertificate(CK_SESSION_HANDLE hSession);
123
* Funcion para consultar un atributo de un objeto PKCS11
125
* @param obj objeto PKCS11 sobre el cual ejecutar la consulta
126
* @param type tipo del atributo a consultar
127
* @param value puntero para almacenar el valor del atributo
128
* @param size tamano del atributo
129
* @param hSession manejador de sesion abierta en la tarjeta
131
* @return Retorna si consiguio el atributo del objeto
133
bool attribute( CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_TYPE type, CK_VOID_PTR value, CK_ULONG &size, CK_SESSION_HANDLE hSession );
136
* Funcion para obtener un atributo de un objeto PKCS11
138
* @param obj objeto PKCS11 sobre el cual ejecutar la consulta
139
* @param type tipo del atributo a consultar
140
* @param hSession manejador de sesion abierta en la tarjeta
141
* @return Retorna el atributo del objeto en un QByteArray
143
QByteArray attribute( CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_TYPE type, CK_SESSION_HANDLE hSession );
146
* Funcion para encontrar un objeto PKCS11 en la tarjeta inteligente
148
* @param hSession manejador de sesion abierta en la tarjeta
149
* @param cls clase de objeto
150
* @return Retorna el CK_OBJECT_HANDLE del objeto correspondiente; en caso
151
* contrario retorna CK_INVALID_HANDLE
153
CK_OBJECT_HANDLE findObject( CK_SESSION_HANDLE hSession, CK_OBJECT_CLASS cls );
156
* Funcion para iniciar la operacion de decifrado
158
* @param hSession manejador de sesion abierta en la tarjeta
159
* @param key clave privada
160
* @return Retorna el CKR_OK en caso de ejecutar la operacion correcta
162
CK_RV decryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE privateKey);
165
* Funcion para ejecutar el descifrado de datos
167
* @param hSession manejador de sesion abierta en la tarjeta
168
* @param data datos cifrados
169
* @param dataLen longitud de los datos cifrados
170
* @param buffer buffer para almancenar los datos descifrados
171
* @param bufferLen longitud del buffer de datos descifrados
172
* @return Retorna el CKR_OK en caso de ejecutar la operacion correcta
174
CK_RV decrypt(CK_SESSION_HANDLE hSession, CK_BYTE_PTR data, CK_ULONG dataLen, CK_BYTE_PTR buffer, CK_ULONG_PTR bufferLen);
178
* Manejador de la biblioteca que implementa el PKCS11.
184
* Lista de funciones disponibles en la biblioteca PKCS11 implementada.
191
#endif // SMARTCARD_H