示例#1
0
void QmlCommerce::changePassphrase(const QString& oldPassphrase, const QString& newPassphrase) {
    auto wallet = DependencyManager::get<Wallet>();
    if (wallet->getPassphrase()->isEmpty()) {
        emit changePassphraseStatusResult(wallet->setPassphrase(newPassphrase));
    } else if (wallet->getPassphrase() == oldPassphrase && !newPassphrase.isEmpty()) {
        emit changePassphraseStatusResult(wallet->changePassphrase(newPassphrase));
    } else {
        emit changePassphraseStatusResult(false);
    }
}
示例#2
0
// use the cached _passphrase if it exists, otherwise we need to prompt
int passwordCallback(char* password, int maxPasswordSize, int rwFlag, void* u) {
    // just return a hardcoded pwd for now
    auto wallet = DependencyManager::get<Wallet>();
    auto passphrase = wallet->getPassphrase();
    if (passphrase && !passphrase->isEmpty()) {
        QString saltedPassphrase(*passphrase);
        saltedPassphrase.append(wallet->getSalt());
        strcpy(password, saltedPassphrase.toUtf8().constData());
        return static_cast<int>(passphrase->size());
    } else {
        // this shouldn't happen - so lets log it to tell us we have
        // a problem with the flow...
        qCCritical(commerce) << "no cached passphrase while decrypting!";
        return 0;
    }
}
示例#3
0
LPSTR __cdecl _gpg_decrypt(LPCSTR message)
{
	char buffer[ciphertextsize];
	char plaintext[plaintextsize];
	char keyuserid[keyuseridsize];
	int dlgresult;
	BOOL useridvalid;
	char *storedpassphrase;
	char passphrase[passphrasesize];
	char *decmessage = 0;
	int decmessagelen;
	gpgResult gpgresult;

	const char *begin = strstr(message, txtbeginpgpmessage);
	const char *end = strstr(message, txtendpgpmessage);

	if ((begin!=NULL)&&(end!=NULL))
	{
		strcpy(buffer, "");
		strncat(buffer, begin, end-begin+strlen(txtendpgpmessage));
		replace(buffer, "\r", "");
		replace(buffer, "\n", txtcrlf);

		ZeroMemory(keyuserid, sizeof(keyuserid));
		gpgresult=gpgDetectUserID(keyuserid, buffer);
		storedpassphrase=NULL;

		if(gpgresult!=gpgSuccess)
		{
			//        ErrorMessage(txtwarning, txtdetectuseridfailed, txtverifyoptions);
			strcpy(keyuserid, txtunknownuserid);
			useridvalid=FALSE;
		}
		else
		{
			storedpassphrase=getPassphrase(keyuserid);
			useridvalid=TRUE;
		}

		if(storedpassphrase!=NULL)
		{
			strcpy(passphrase, storedpassphrase);
			ZeroMemory(plaintext, sizeof(plaintext));
			gpgresult=gpgDecrypt(plaintext, buffer, passphrase);
		}
		else gpgresult=gpgUnknownError;

		dlgresult=IDOK;
		while((gpgresult!=gpgSuccess)&&(dlgresult!=IDCANCEL))
		{
			dlgresult=DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_PASSPHRASE), NULL, PassphraseDialogProcedure, (LPARAM)keyuserid);

			if(dlgresult==IDOK)
			{
				strcpy(passphrase, dlgpassphrase);
				ZeroMemory(dlgpassphrase, passphrasesize);
				strcat(passphrase, txtcrlf);
				ZeroMemory(plaintext, sizeof(plaintext));
				gpgresult=gpgDecrypt(plaintext, buffer, passphrase);
			}
		}

		if(gpgresult==gpgSuccess)
		{
			strcpy(buffer, plaintext);
		}

		if ( gpgresult==gpgSuccess && useridvalid==TRUE)
			addPassphrase(keyuserid, passphrase);

		ZeroMemory(passphrase, sizeof(passphrase));

		decmessagelen = strlen(buffer)+1;
		decmessage = (char *) LocalAlloc(LPTR,decmessagelen);
		MoveMemory(decmessage, buffer, decmessagelen);
	}

	return decmessage;
}