Files
k7/LoopbackPassphraseProvider.cpp
SET de7880ae36 Allocate passphrase on demand.
Don't store passphrase as char* member variable.
This would crash the application when exporting private keys.
See https://dev.gnupg.org/T5151#139421
2020-11-25 21:29:27 +01:00

63 lines
1.5 KiB
C++

/*
* File: LoopbackPassphraseProvider.cpp
* Author: SET - nmset@yandex.com
* License : GPL v2
* Copyright SET - © 2019
*
* Created on November 2, 2020, 2:57 PM
*/
#include "LoopbackPassphraseProvider.h"
#include <string.h>
#include <iostream>
LoopbackPassphraseProvider::LoopbackPassphraseProvider()
: PassphraseProvider()
{
m_passphrase = "";
}
LoopbackPassphraseProvider::LoopbackPassphraseProvider(const string& passphrase)
: PassphraseProvider()
{
m_passphrase = passphrase;
}
LoopbackPassphraseProvider::~LoopbackPassphraseProvider()
{
}
/*
* Called by GPG engine.
* Is not called if gpg-agent already has a valid password.
*/
char* LoopbackPassphraseProvider::getPassphrase(const char* useridHint,
const char* description,
bool previousWasBad,
bool& canceled)
{
/*
cout << useridHint << endl; // <Signing keyid> <key name> <email>
cout << description << endl; // <Signing keyid> <Signing keyid> 1 0
cout << previousWasBad << endl; // Always 0, even with bad password
cout << canceled << endl; // Always 0
*/
/*
* See https://dev.gnupg.org/T5151#139421
*/
return strdup(m_passphrase.c_str());
}
void LoopbackPassphraseProvider::SetPassphrase(const string& passphrase)
{
/*
* Memory leak here ?
*/
m_passphrase = passphrase;
}
const string LoopbackPassphraseProvider::GetPassphrase()
{
return m_passphrase;
}