PDA

View Full Version : qca, qca-gnupg Not able to open files



sky
14th February 2011, 14:41
Hi All,

I am a total newbie. I am going crazy with a problem. I am using QCA and qca-gnupg.
I am trying to simply import a secret key. The code is:
Header File:


#ifndef MYGPG_H
#define MYGPG_H

#include <QDebug>
#include <QObject>
#include <QtCrypto>

class PassphraseHandler: public QObject
{
Q_OBJECT
public:
QCA::EventHandler handler;
PassphraseHandler(QObject *parent = 0);

private slots:
void eh_eventReady(int id, const QCA::Event &event);

};
class myKeyLoader : public QObject
{
Q_OBJECT

public:
myKeyLoader(QObject* parent = NULL);
public slots:
void start();
};

#endif // MYGPG_H

Source file:


#include "mygpg.h"


PassphraseHandler::PassphraseHandler(QObject *parent) : QObject(parent)
{
connect(&handler, SIGNAL(eventReady(int, const QCA::Event &)),
SLOT(eh_eventReady(int, const QCA::Event &)));
handler.start();
}


void PassphraseHandler::eh_eventReady(int id, const QCA::Event &event)
{
if(event.type() == QCA::Event::Password)
{
QCA::SecureArray pass;
QCA::ConsolePrompt prompt;
prompt.getHidden("Passphrase");
prompt.waitForFinished();
pass = prompt.result();
handler.submitPassword(id, pass);
}
else
handler.reject(id);
}
myKeyLoader::myKeyLoader(QObject* parent)
:QObject(parent)
{

}

void myKeyLoader::start()
{
QCA::ConvertResult* result = new QCA::ConvertResult;
QCA::PGPKey myPgpKey = QCA::PGPKey::fromFile("private_key.pkr",result,"qca-gnupg");
qDebug()<<"pgp:"<<*result;
qDebug()<<"can decrypt:"<<myPgpKey.inKeyring();
}

main.cpp:


#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QTimer>

#include "mygpg.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QCA::Initializer init;
if(!QCA::isSupported("openpgp"))
{
}
else
{
PassphraseHandler passphraseHandler;
myKeyLoader* keyLoader = new myKeyLoader();
QTimer::singleShot(0,keyLoader,SLOT(start()));
}

return a.exec();
}


I get the following dignostic string:

"GPGProc: Running: [C:\Program Files\GNU\GnuPG\gpg.exe --no-tty --no-default-keyring --keyring C:\prj\qcaGnupg\qca_gnupg_tmp.JS4036.gpg --secret-keyring C:\prj\qcaGnupg\qca_gnupg_tmp.Oh4036.gpg --import]
GPGProc: Process started
GPGProc: Process finished: 2
GPGProc: Done
GPG Process Finished: exitStatus=2
stdout: []
stderr: [gpg: can't open `C:\prj\qcaGnupg\qca_gnupg_tmp.Oh4036.gpg'
gpg: key 169C844F: secret key not found: file open error
gpg: error reading `[stdin]': file open error
gp..."

But if I run the same command at the dos prompt it runs sucessfully, following is the output:

C:\prj\qcaGnupg>gpg.exe --no-tty --no-default-keyring --keyring C:\prj\qcaGnupg\qca_gnupg_tmp.JS4036.gpg --secret-keyring C:\prj\qcaGnupg\qca_gnupg_tmp.Oh4036.gpg --import
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: BCPG v1.45

lQIGBE0hbIABBAChhmP3pkI+XWlow0q9a3ZmwWLpPjQRs9oaNO CzMwAA5p54gNT7
5UCBv9K5uqreilyV4HZLSimKGW6JkvFBNCcxVc+rK2cqsvRZAw 0D2uJK1Lone/IW
AcfpVCqJyB7UtpPUGNqZdP90tNNIr1BBsOo25Ixsi3ujBHTLbb j0yP39JwARAQAB
/gcDApZudzSyZJYEYM9e7uuo5tq3YaX9G0kwnaMQitPBAVJU5UM tsR5/rJgiHKdL
4iOXaqkbm5Ek3rdwtX5KojFhPDT1edl7d6sFSXE5m8E2sbbBht BwC+AfmEyw+lkU
3G4Zss0Q5huL+tW9r3pZ9aIVORgA3AQlW+mKtX+GB8CQ56kVq/drWYbT5ec5ZUhv
X65CPi697hgdeD331kL9lnfxXgdAj8z4TPdGM76XNq0dwEBXSO TV5LHJUOztYX+s
30NpUq3xQVAJpdiYtH7BHKs2roTSiGLoy7NLRyhGZ1XZ5anZFs sOstNX8tqzntIy
WaxpDs85wX72UlO6m3BOgXDfi2xH0CsPjiBSyLO8cOVGB8Mty6 hl7juBO9yhtWOd
V69p3khwq3/kMPaOOb4Kjdr+BzmDX2xEu/JZx0uTCyFEQGTGLzqDoSz/Tt5Wy31O
z1B/bf8a7aoS/LhlaD+xq76IpuHBA+uVLxrODoyZdiECLhHNJZ7V41m0JDYxOWQ x
MTgwLWU2MTEtMTFkZi04ODBhLTEyMzEzOTBhOWNjMYixBBABAg AbBQJNIWyABYkA
AAAAAhsDAgsHAhUCAhYCAhkBAAoJEGnxunAWnIRP4rsD/1RhPfK/dce+KiH8FJFp
NgH8cwL7fMVei4tBXdSR19g/ZMdOivnb1ZGFzkEmhiCxzPyO5JFsNx4cBvOpwfZK
sKz7Dvcww+kYxPYYfvTzRvQAGgxOKOIJ/JkZcsYYMFr1j8bhaBs8qoFXz1zPpbGn
0o+kUXC6BmHUWeSVPgcdYJttnQIGBE0hbIABBACVjqtfKMExfI Jb++ARA8KMspkF
ejVFC82PKwPV/qdJGz7ydkmmGzN2MBv9Lt2G/OUUIBx7FfY7SDMZ1hxuoVsSZplA
vC35adKXqN/xONYkmts9TFk36/ELtS4y6jeOYtVe4cJ8qLXAy3Wf/qHcTUXbfX9P
a1ZNUVMExHIFnIprOwARAQAB/gcDAlaHs7BSahNiYI921+4EMeBszeR/XkfTECz6
OIw/grd00bQ3VOVrYRaSjmjGyEql5LiAaDQybMcQ9YND9A28EX/Og1C0E6AmRWIu
oe6zr1tEeZ3tVOXgaT5VAhIn3Y8og5NGd638SMvLVItNDwqRxL IalRrv6zSc/iab
4igPWO5Uiz32muJGMSYy1d7eLaA4Vae29Yk4WZ95fH0Kmy+slS y+aerLOODuS+57
GMRPMUAfOVGYvSBL5xgWap+/Pdkv2wnA9BokkhkS/XVI/h52HqX4M15zxD5s1RuG
CHcX9FeHMxxc/ikHB2QNrxa9Bp5baF5DrvwcXSGSNdnaIZRlOccm19QtjIaMwhp z
LmDWElrgiDFhctwcAAx86G51lirG+qdZJUMC4rce/1lsm8nLDQ7tgwWhG9mVZAdp
YMJGlUH0FJti7m9Ie70993w2+6ZlMGYacVR4UnANFItLhofqvU o5gDCeE+cbxGw7
iMATu8jdef+XaV6InwQYAQIACQUCTSFsggIbDAAKCRBp8bpwFp yET0PLA/48AVUY
oKm9p/SO7taSQSG+rsJF+yaMFRlitbY90YnmwT4tTb6d8IgaBhepk1Sb nz6fquDu
rXfF6pxkfZ/2gHITCHfSBm3Blzf9AVBdw80cl3qvvkid3UOY1Bvyx68W5g7Q2 X9n
3vG36efFEd/gVIDs70x6yrTpUTWI7kRgTYEpZA==
=xcAg
-----END PGP PRIVATE KEY BLOCK-----
^Z
gpg: key 169C844F: secret key imported
gpg: key 169C844F: public key "619d1180-e611-11df-880a-1231390a9cc1" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: secret keys read: 1
gpg: secret keys imported: 1


____________

Any kind soul, please let me know what is wrong with my code and how to solve this problem. Thank you very much.

sky
15th February 2011, 07:11
I got it solved for now. But the I don't think the solution will be useful to anybody. I kind of removed the "HomeDir" data from the registry entry for GnuPg. Now GnuPg uses the windows temp directory for these files. It was previously looking for HomeDir\C:\prj\qcaGnupg\qca_gnupg_tmp.JS4036.gpg.

Sky