From 4fc3ce491aaa5f68a7a08adaf17f1353e37babe7 Mon Sep 17 00:00:00 2001 From: csoler Date: Fri, 13 Jul 2012 12:20:44 +0000 Subject: [PATCH] updated self-signatures git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-OpenPGP@5292 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/pgp/pgphandler.cc | 18 ++++++++++++------ libretroshare/src/pgp/pgphandler.h | 1 + libretroshare/src/pqi/authgpg.cc | 1 + retroshare-gui/src/main.cpp | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/libretroshare/src/pgp/pgphandler.cc b/libretroshare/src/pgp/pgphandler.cc index de0526a77..43ade6ecf 100644 --- a/libretroshare/src/pgp/pgphandler.cc +++ b/libretroshare/src/pgp/pgphandler.cc @@ -41,9 +41,6 @@ ops_keyring_t *PGPHandler::allocateOPSKeyring() ops_parse_cb_return_t cb_get_passphrase(const ops_parser_content_t *content_,ops_parse_cb_info_t *cbinfo)// __attribute__((unused))) { const ops_parser_content_union_t *content=&content_->content; - // validate_key_cb_arg_t *arg=ops_parse_cb_get_arg(cbinfo); - // ops_error_t **errors=ops_parse_cb_get_errors(cbinfo); - bool prev_was_bad = false ; switch(content_->tag) @@ -56,9 +53,6 @@ ops_parse_cb_return_t cb_get_passphrase(const ops_parser_content_t *content_,ops uid_hint += "(" + PGPIdType(cbinfo->cryptinfo.keydata->key_id).toStdString()+")" ; passwd = PGPHandler::passphraseCallback()(NULL,uid_hint.c_str(),NULL,prev_was_bad) ; -// if (rsicontrol->getNotify().askForPassword(uid_hint, prev_was_bad, passwd) == false) -// return OPS_RELEASE_MEMORY; - *(content->secret_key_passphrase.passphrase)= (char *)ops_mallocz(passwd.length()+1) ; memcpy(*(content->secret_key_passphrase.passphrase),passwd.c_str(),passwd.length()) ; return OPS_KEEP_MEMORY; @@ -933,10 +927,22 @@ bool PGPHandler::privateSignCertificate(const PGPIdType& ownId,const PGPIdType& // PGPCertificateInfo& cert(_public_keyring_map[ id_of_key_to_sign.toStdString() ]) ; validateAndUpdateSignatures(cert,key_to_sign) ; + cert._flags |= PGPCertificateInfo::PGP_CERTIFICATE_FLAG_HAS_OWN_SIGNATURE ; return true ; } +void PGPHandler::updateOwnSignatureFlag(const PGPIdType& own_id) +{ + std::string own_id_str = own_id.toStdString(); + + for(std::map::iterator it=_public_keyring_map.begin();it!=_public_keyring_map.end();++it) + if(it->second.signers.find(own_id_str) != it->second.signers.end()) + it->second._flags |= PGPCertificateInfo::PGP_CERTIFICATE_FLAG_HAS_OWN_SIGNATURE ; + else + it->second._flags &= ~PGPCertificateInfo::PGP_CERTIFICATE_FLAG_HAS_OWN_SIGNATURE ; +} + bool PGPHandler::getKeyFingerprint(const PGPIdType& id,PGPFingerprintType& fp) const { RsStackMutex mtx(pgphandlerMtx) ; // lock access to PGP memory structures. diff --git a/libretroshare/src/pgp/pgphandler.h b/libretroshare/src/pgp/pgphandler.h index a833503d4..2b2937053 100644 --- a/libretroshare/src/pgp/pgphandler.h +++ b/libretroshare/src/pgp/pgphandler.h @@ -90,6 +90,7 @@ class PGPHandler bool getKeyFingerprint(const PGPIdType& id,PGPFingerprintType& fp) const ; void setAcceptConnexion(const PGPIdType&,bool) ; + void updateOwnSignatureFlag(const PGPIdType& ownId) ; //bool isKeySupported(const PGPIdType& id) const ; diff --git a/libretroshare/src/pqi/authgpg.cc b/libretroshare/src/pqi/authgpg.cc index 89930154e..0b7156978 100644 --- a/libretroshare/src/pqi/authgpg.cc +++ b/libretroshare/src/pqi/authgpg.cc @@ -146,6 +146,7 @@ int AuthGPG::GPGInit(const std::string &ownId) //force the validity of the private key. When set to unknown, it caused signature and text encryptions bugs privateTrustCertificate(ownId, 5); + updateOwnSignatureFlag(mOwnGpgId) ; std::cerr << "AuthGPG::GPGInit finished." << std::endl; diff --git a/retroshare-gui/src/main.cpp b/retroshare-gui/src/main.cpp index 301cfd33c..2c563c1fd 100644 --- a/retroshare-gui/src/main.cpp +++ b/retroshare-gui/src/main.cpp @@ -86,7 +86,7 @@ int main(int argc, char *argv[]) QMessageBox msgBox; msgBox.setText(QObject::tr("This version of RetroShare is using OpenPGP-SDK. As a side effect, it's not using the system shared PGP keyring, but has it's own keyring shared by all RetroShare instances.

You do not appear to have such a keyring, although GPG keys are mentionned by existing RetroShare accounts, probably because you just changed to this new version of the software.")); - msgBox.setInformativeText(QObject::tr("Choose between:
")); + msgBox.setInformativeText(QObject::tr("Choose between:
")); msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Discard | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Ok); msgBox.setWindowIcon(QIcon(":/images/rstray3.png"));