~esignature/esignature/bdoc

« back to all changes in this revision

Viewing changes to debian/libfirmaxml-0.1/debian/libfirmaxml-dev/usr/include/libfirmaxml/smartcard.h

  • Committer: joger quintero
  • Date: 2012-12-20 15:28:28 UTC
  • Revision ID: joger@debian-joger234-20121220152828-nquaoqd20p3bi9lk
.-Se añadió el directorio debian con las fuentes para debianizar.
.-Se añadió el directorio paquetes con el subdirectorio amd64 que contiene los .deb
.-Se corrigió un error en el view.py del cliente python que no mostraba correctamente la verificación de la firma

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
* FirmaXML
 
3
*
 
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)
 
8
*
 
9
* CENDITEL Fundacion Centro Nacional de Desarrollo e Investigacion en
 
10
* Tecnologias Libres
 
11
*
 
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.
 
14
*
 
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.
 
21
*
 
22
*/
 
23
 
 
24
 
 
25
#ifndef SMARTCARD_H
 
26
#define SMARTCARD_H
 
27
 
 
28
#include <QObject>
 
29
 
 
30
#include <QLibrary>
 
31
 
 
32
#include "pkcs11.h"
 
33
#include <stdio.h>
 
34
#include <assert.h>
 
35
 
 
36
 
 
37
 
 
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);
 
40
 
 
41
 
 
42
/**
 
43
* Clase SmartCard
 
44
*
 
45
* Representa un objeto SmartCard para manipular elementos de una tarjeta inteligente.
 
46
*
 
47
*/
 
48
 
 
49
class SmartCard : public QObject
 
50
{
 
51
    Q_OBJECT
 
52
public:
 
53
    explicit SmartCard(QObject *parent = 0);
 
54
 
 
55
    virtual ~SmartCard();
 
56
 
 
57
 
 
58
 
 
59
    /**
 
60
    * Carga el driver de la tarjeta inteligente
 
61
    *
 
62
    * @return Retorna si se cargo el driver de la tarjeta correctamente
 
63
    *
 
64
    */
 
65
    bool loadDriver( const QString &driver );
 
66
 
 
67
    /**
 
68
    * Descarga el driver de la tarjeta inteligente
 
69
    *
 
70
    */
 
71
    void unloadDriver();
 
72
 
 
73
    /**
 
74
    * Inicializa criptoki
 
75
    *
 
76
    * @return Retorna si se inicializo correctamente el criptoki
 
77
    */
 
78
    bool initializeCriptoki();
 
79
 
 
80
    /**
 
81
    * Finaliza criptoki
 
82
    *
 
83
    */
 
84
    void finalize();
 
85
 
 
86
    /**
 
87
    * Abre una sesion
 
88
    *
 
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
 
93
    */
 
94
    CK_SESSION_HANDLE openSession(const char * Pin, CK_SLOT_ID & slotID, bool requiredlogin = true);
 
95
 
 
96
 
 
97
    /**
 
98
    * Cierra una sesion
 
99
    *
 
100
    * @param hSession handle de la sesion abierta
 
101
    */
 
102
    void  closeSession(CK_SESSION_HANDLE hSession);
 
103
 
 
104
    // Reads objects
 
105
    /**
 
106
    *   Busca Objetos en la tarjeta
 
107
    *
 
108
    * @param hSession handle de la sesion abierta
 
109
    * @return Retorna si se leyeron correctamente los objetos de la tarjeta
 
110
    */
 
111
    bool readObjects(CK_SESSION_HANDLE hSession);
 
112
 
 
113
 
 
114
    /**
 
115
    * Busca un certificado
 
116
    *
 
117
    * @param hSession handle de la sesion abierta
 
118
    * @return Retorna si se encontraron certificados
 
119
    */
 
120
    bool searchCertificate(CK_SESSION_HANDLE hSession);
 
121
 
 
122
    /**
 
123
    * Funcion para consultar un atributo de un objeto PKCS11
 
124
    *
 
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
 
130
    *
 
131
    * @return Retorna si consiguio el atributo del objeto
 
132
    */
 
133
    bool attribute( CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_TYPE type, CK_VOID_PTR value, CK_ULONG &size, CK_SESSION_HANDLE hSession );
 
134
 
 
135
    /**
 
136
    * Funcion para obtener un atributo de un objeto PKCS11
 
137
    *
 
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
 
142
    */
 
143
    QByteArray attribute( CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_TYPE type, CK_SESSION_HANDLE hSession );
 
144
 
 
145
    /**
 
146
    * Funcion para encontrar un objeto PKCS11 en la tarjeta inteligente
 
147
    *
 
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
 
152
    */
 
153
    CK_OBJECT_HANDLE findObject( CK_SESSION_HANDLE hSession, CK_OBJECT_CLASS cls );
 
154
 
 
155
    /**
 
156
    * Funcion para iniciar la operacion de decifrado
 
157
    *
 
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
 
161
    */
 
162
    CK_RV decryptInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE privateKey);
 
163
 
 
164
    /**
 
165
    * Funcion para ejecutar el descifrado de datos
 
166
    *
 
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
 
173
    */
 
174
    CK_RV decrypt(CK_SESSION_HANDLE hSession, CK_BYTE_PTR data, CK_ULONG dataLen, CK_BYTE_PTR buffer, CK_ULONG_PTR bufferLen);
 
175
 
 
176
 
 
177
    /**
 
178
    * Manejador de la biblioteca que implementa el PKCS11.
 
179
    *
 
180
    */
 
181
    QLibrary            lib;
 
182
 
 
183
    /**
 
184
    * Lista de funciones disponibles en la biblioteca PKCS11 implementada.
 
185
    *
 
186
    */
 
187
    CK_FUNCTION_LIST *f;
 
188
 
 
189
};
 
190
 
 
191
#endif // SMARTCARD_H