== RevisiĆ³n de software XCA == XCA options [[Image(xcaOptions.png)]] Add, Remove, Search. '''Options.cpp''' {{{ addLib(QString fname) pkcs11:load_lib(fname, false) class pkcs11 { friend class pk11_attribute; friend class pk11_attr_ulong; friend class pk11_attr_data; private: static pkcs11_lib_list libs; slotid p11slot; CK_SESSION_HANDLE session; CK_OBJECT_HANDLE p11obj; public: pkcs11(); ~pkcs11(); static bool loaded() { return libs.count() != 0; } static pkcs11_lib *load_lib(QString fname, bool silent); static pkcs11_lib *get_lib(QString fname) { return libs.get_lib(fname); } static bool remove_lib(QString fname) { return libs.remove_lib(fname); } static void remove_libs() { while (!libs.isEmpty()) delete libs.takeFirst(); } static void load_libs(QString list, bool silent); static pkcs11_lib_list get_libs() { return libs; } tkInfo tokenInfo(slotid slot); tkInfo tokenInfo() { return tokenInfo(p11slot); } QString driverInfo(slotid slot) { return slot.lib->driverInfo(); } slotidList getSlotList() { return libs.getSlotList(); } bool selectToken(slotid *slot, QWidget *w); void changePin(slotid slot, bool so); void initPin(slotid slot); void initToken(slotid slot, unsigned char *pin, int pinlen, QString label); QList mechanismList(slotid slot); void mechanismInfo(slotid slot, CK_MECHANISM_TYPE m, CK_MECHANISM_INFO *info); void startSession(slotid slot, bool rw = false); /* Session based functions */ void loadAttribute(pk11_attribute &attribute, CK_OBJECT_HANDLE object); void storeAttribute(pk11_attribute &attribute, CK_OBJECT_HANDLE object); QList objectList(pk11_attlist &atts); QString tokenLogin(QString name, bool so, bool force=false); void getRandom(); void logout(); bool needsLogin(bool so); void login(unsigned char *pin, unsigned long pinlen, bool so); void setPin(unsigned char *oldPin, unsigned long oldPinLen, unsigned char *pin, unsigned long pinLen); CK_OBJECT_HANDLE createObject(pk11_attlist &attrs); pk11_attr_data findUniqueID(unsigned long oclass); pk11_attr_data generateKey(QString name, unsigned long ec_rsa_mech, unsigned long bits, int nid); int deleteObjects(QList objects); EVP_PKEY *getPrivateKey(EVP_PKEY *pub, CK_OBJECT_HANDLE obj); int encrypt(int flen, const unsigned char *from, unsigned char *to, int tolen, unsigned long m); int decrypt(int flen, const unsigned char *from, unsigned char *to, int tolen, unsigned long m); }; }}} '''Search''' {{{ bool searchThread::checkLib(QString file) { qint64 siz; int r = -1; QFile qf(file); siz = qf.size(); if (qf.open(QIODevice::ReadOnly)) { uchar *p = qf.map(0, siz); r = QByteArray::fromRawData((char*)p, siz) .indexOf("C_GetFunctionList"); qf.unmap(p); qf.close(); } return r != -1; } }}}