* Fixed up SSL peerIds and gpg password stuff.

* PGP version compiling / running on OSX now.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1268 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2009-05-24 10:33:08 +00:00
parent edd13ba38a
commit 387b7bae6a
5 changed files with 59 additions and 12 deletions

View File

@ -82,14 +82,41 @@ p3AuthMgr *getAuthMgr()
} }
gpg_error_t pgp_pwd_callback(void *hook, const char *uid_hint, const char *passphrase_info, int prev_was_bad, int fd) gpg_error_t pgp_pwd_callback(void *hook, const char *uid_hint, const char *passphrase_info, int prev_was_bad, int fd)
{ {
const char *passwd = (const char *) hook; const char *passwd = (const char *) hook;
if (prev_was_bad)
fprintf(stderr, "pgp_pwd_callback() Prev was bad!\n");
//fprintf(stderr, "pgp_pwd_callback() Set Password to:\"%s\"\n", passwd);
fprintf(stderr, "pgp_pwd_callback() Set Password\n");
write(fd, passwd, strlen(passwd)); write(fd, passwd, strlen(passwd));
write(fd, "\n", 1); /* needs a new line? */
return 0; return 0;
} }
static char *PgpPassword = NULL;
bool GPGAuthMgr::setPGPPassword(std::string pwd)
{
/* reset it while we change it */
gpgme_set_passphrase_cb(CTX, NULL, NULL);
if (PgpPassword)
free(PgpPassword);
PgpPassword = (char *) malloc(pwd.length() + 1);
memcpy(PgpPassword, pwd.c_str(), pwd.length());
PgpPassword[pwd.length()] = '\0';
gpgme_set_passphrase_cb(CTX, pgp_pwd_callback, (void *) PgpPassword);
return true;
}
GPGAuthMgr::GPGAuthMgr() GPGAuthMgr::GPGAuthMgr()
:gpgmeInit(false) :gpgmeInit(false)
@ -140,8 +167,6 @@ GPGAuthMgr::GPGAuthMgr()
printAllKeys(); printAllKeys();
updateTrustAllKeys(); updateTrustAllKeys();
static const char *realPassword = "aaaa\n";
gpgme_set_passphrase_cb(CTX, pgp_pwd_callback, (void *) realPassword);
} }
@ -244,6 +269,7 @@ int GPGAuthMgr::GPGInit(std::string ownId, std::string name, std::string passphr
mOwnGpgCert.user.id = ownId; mOwnGpgCert.user.id = ownId;
mOwnGpgCert.key = newKey; mOwnGpgCert.key = newKey;
this->passphrase = passphrase; this->passphrase = passphrase;
setPGPPassword(passphrase);
mOwnId = ownId; mOwnId = ownId;
gpgmeKeySelected = true; gpgmeKeySelected = true;
@ -281,7 +307,9 @@ int GPGAuthMgr::GPGInit(std::string name, std::string comment,
mOwnGpgCert.user.fpr = newKey->subkeys->fpr; mOwnGpgCert.user.fpr = newKey->subkeys->fpr;
mOwnGpgCert.user.id = newKey->subkeys->keyid; mOwnGpgCert.user.id = newKey->subkeys->keyid;
mOwnGpgCert.key = newKey; mOwnGpgCert.key = newKey;
this->passphrase = passphrase; this->passphrase = passphrase;
setPGPPassword(passphrase);
mOwnId = mOwnGpgCert.user.id; mOwnId = mOwnGpgCert.user.id;
gpgmeKeySelected = true; gpgmeKeySelected = true;
@ -1017,7 +1045,7 @@ bool GPGAuthMgr::DoOwnSignature(void *data, unsigned int datalen, void *buf_sigo
/* now extract the data from gpgmeSig */ /* now extract the data from gpgmeSig */
size_t len = 0; size_t len = 0;
char *export_sig = gpgme_data_release_and_get_mem(gpgmeSig, &len); char *export_sig = gpgme_data_release_and_get_mem(gpgmeSig, &len);
fprintf(stderr, "GPGAuthMgr::Signature len: %d \n", len); fprintf(stderr, "GPGAuthMgr::Signature len: %ld \n", len);
if (len < *outl) if (len < *outl)
{ {
*outl = len; *outl = len;

View File

@ -57,6 +57,8 @@ class GPGAuthMgr: public AuthSSL
GPGAuthMgr(); GPGAuthMgr();
~GPGAuthMgr(); ~GPGAuthMgr();
bool setPGPPassword(std::string pwd);
X509* SignX509Req(X509_REQ *req, long days, std::string); X509* SignX509Req(X509_REQ *req, long days, std::string);
bool AuthX509(X509 *x509); bool AuthX509(X509 *x509);

View File

@ -1694,7 +1694,10 @@ bool getX509id(X509 *x509, std::string &xid)
unsigned char *signdata = ASN1_STRING_data(signature); unsigned char *signdata = ASN1_STRING_data(signature);
std::ostringstream id; std::ostringstream id;
for(uint32_t i = 0; i < CERTSIGNLEN; i++) /* switched to the other end of the signature. for
* more randomness
*/
for(uint32_t i = signlen - CERTSIGNLEN; i < signlen; i++)
{ {
id << std::hex << std::setw(2) << std::setfill('0') id << std::hex << std::setw(2) << std::setfill('0')
<< (uint16_t) (((uint8_t *) (signdata))[i]); << (uint16_t) (((uint8_t *) (signdata))[i]);

View File

@ -552,8 +552,14 @@ int RsInit::GetLoginDetails(std::string id, std::string &name, std::string &emai
#else // PGP+SSL #else // PGP+SSL
GPGAuthMgr *mgr = (GPGAuthMgr *) getAuthMgr(); GPGAuthMgr *mgr = (GPGAuthMgr *) getAuthMgr();
name = id; pqiAuthDetails details;
email = id; if (!mgr->getDetails(id, details))
{
return 0;
}
name = details.name;
email = details.email;
return 1; return 1;
#endif #endif

View File

@ -27,7 +27,9 @@ ifndef MAC_I386_BUILD
endif endif
# flags for components.... # flags for components....
PQI_USE_XPGP = 1 #PQI_USE_SSLONLY = 1
#PQI_USE_XPGP = 1
#PQI_USE_PROXY = 1 #PQI_USE_PROXY = 1
#PQI_USE_CHANNELS = 1 #PQI_USE_CHANNELS = 1
#USE_FILELOOK = 1 #USE_FILELOOK = 1
@ -50,7 +52,11 @@ RANLIB = ranlib
LIBDIR = $(RS_TOP_DIR)/lib LIBDIR = $(RS_TOP_DIR)/lib
LIBRS = $(LIBDIR)/libretroshare.a LIBRS = $(LIBDIR)/libretroshare.a
INCLUDE = -I $(RS_TOP_DIR) OPT_DIR = /opt/local
OPT_INCLUDE = $(OPT_DIR)/include
OPT_LIBS = $(OPT_DIR)/lib
INCLUDE = -I $(RS_TOP_DIR) -I $(OPT_INCLUDE)
#CFLAGS = -Wall -O3 #CFLAGS = -Wall -O3
CFLAGS = -Wall -g CFLAGS = -Wall -g
@ -69,13 +75,13 @@ CFLAGS += $(INCLUDE)
# (but unlikely to work unless Qt Libraries are build properly) # (but unlikely to work unless Qt Libraries are build properly)
# CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk # CFLAGS += -isysroot /Developer/SDKs/MacOSX10.4u.sdk
ifdef PQI_USE_XPGP ifdef PQI_USE_XPGP
INCLUDE += -I $(SSL_DIR)/include INCLUDE += -I $(SSL_DIR)/include
CFLAGS += -DPQI_USE_XPGP
endif endif
ifdef PQI_USE_XPGP ifdef PQI_USE_SSLONLY
CFLAGS += -DPQI_USE_XPGP CFLAGS += -DPQI_USE_SSLONLY
endif endif
ifdef PQI_USE_PROXY ifdef PQI_USE_PROXY
@ -136,6 +142,8 @@ ifdef PQI_USE_XPGP
LIBS += -L$(SSL_DIR) LIBS += -L$(SSL_DIR)
endif endif
LIBS += -lssl -lcrypto -lpthread LIBS += -lssl -lcrypto -lpthread
LIBS += -L$(OPT_LIBS)
LIBS += -lgpgme -lgpg-error
LIBS += -L$(UPNPC_DIR) -lminiupnpc LIBS += -L$(UPNPC_DIR) -lminiupnpc
LIBS += $(XLIB) -ldl -lz LIBS += $(XLIB) -ldl -lz