Removed broken peer id methods

standardizing on the one in libp2p/crypto/key.c
This commit is contained in:
John Jones 2017-02-02 19:09:20 -05:00
parent 94566ade69
commit 5666a8a2ef
4 changed files with 26 additions and 19 deletions

View file

@ -36,23 +36,29 @@ int PrettyID(unsigned char * pointyaddr, size_t* rezbuflen,unsigned char * ID_BU
return 1;
}
/****
* Make a SHA256 hash of what is usually the DER formatted private key.
* @param result where to store the result. Should be 32 chars long
* @param texttohash the text to hash. A DER formatted public key
* @param text_size the size of the text
*/
/*
void ID_FromPK_non_null_terminated(char * result,unsigned char * texttohash, size_t text_size)
{
libp2p_crypto_hashing_sha256(texttohash, text_size, (unsigned char*)result);
}
*/
/****
* Make a SHA256 hash of what is usually the DER formatted private key.
* @param result where to store the result. Should be 32 chars long
* @param texttohash a null terminated string of the text to hash
*/
/*
void ID_FromPK(char * result,unsigned char * texttohash)
{
ID_FromPK_non_null_terminated(result,texttohash,strlen((char*)texttohash));
}
*/

View file

@ -47,7 +47,9 @@ int libp2p_secio_generate_nonce(char* results, int length) {
/***
* performs initial communication over an insecure channel to share
* keys, IDs, and initiate connection. This is a framed messaging system
* NOTE: session must contain a valid socket_descriptor that is a multistream.
* @param session the secure session to be filled
* @param private_key the private key to use
* @returns true(1) on success, false(0) otherwise
*/
int libp2p_secio_handshake(struct SecureSession* session, struct RsaPrivateKey* private_key) {
@ -59,11 +61,6 @@ int libp2p_secio_handshake(struct SecureSession* session, struct RsaPrivateKey*
struct Propose* propose_in = NULL;
struct PublicKey* public_key = NULL;
// connect to host
session->socket_descriptor = libp2p_net_multistream_connect(session->host, session->port);
if (session->socket_descriptor == -1)
goto exit;
const unsigned char* protocol = (unsigned char*)"/secio/1.0.0\n";
bytes_written = libp2p_net_multistream_send(session->socket_descriptor, protocol, strlen((char*)protocol));
@ -107,12 +104,10 @@ int libp2p_secio_handshake(struct SecureSession* session, struct RsaPrivateKey*
propose_out = libp2p_secio_propose_new();
libp2p_secio_propose_set_property((void**)&propose_out->rand, &propose_out->rand_size, nonceOut, 16);
// TODO: the Peer ID looks funny. I don't think it is right.
// we have their information, now we need to gather ours.
// will need:
// TODO: public key
//
// supported exchanges
libp2p_secio_propose_set_property((void**)&propose_out->exchanges, &propose_out->exchanges_size, SupportedExchanges, strlen(SupportedExchanges));
// supported ciphers

View file

@ -9,6 +9,7 @@
#include "libp2p/crypto/encoding/base64.h"
#include "libp2p/crypto/encoding/x509.h"
#include "libp2p/crypto/peerutils.h"
#include "libp2p/crypto/key.h"
/**
@ -159,20 +160,19 @@ int test_crypto_rsa_public_key_to_peer_id() {
return 0;
// 3) grab the public key, hash it, then base58 it
unsigned char hashed[32];
ID_FromPK_non_null_terminated((char*)hashed, (unsigned char*)private_key.public_key_der, private_key.public_key_length);
size_t final_id_size = 1600;
unsigned char final_id[final_id_size];
memset(final_id, 0, final_id_size);
retVal = PrettyID(final_id, &final_id_size, hashed, 32);
if (retVal == 0)
struct PublicKey public_key;
public_key.type = KEYTYPE_RSA;
public_key.data_size = private_key.public_key_length;
public_key.data = private_key.public_key_der;
char* final_id;
if (!libp2p_crypto_public_key_to_peer_id(&public_key, &final_id ))
return 0;
// 4) compare results
if (orig_peer_id_size != final_id_size)
if (orig_peer_id_size != strlen(final_id))
return 0;
if (strncmp(orig_peer_id, (char*)final_id, final_id_size) != 0)
if (strncmp(orig_peer_id, (char*)final_id, strlen(final_id)) != 0)
return 0;
return 1;

View file

@ -1,6 +1,7 @@
#include <stdlib.h>
#include "libp2p/secio/secio.h"
#include "libp2p/net/multistream.h"
int test_secio_handshake() {
@ -10,14 +11,15 @@ int test_secio_handshake() {
// this is a base64 encoded private key. It makes it easier to test if it is in base64 form
// these were pulled from the GO version of ipfs
char* orig_priv_key = "CAASqgkwggSmAgEAAoIBAQD0a4RI+bF/ov7IVOGSJ8dQfnK1DwM0gwVuJAd+3LXxIZEPZzsKIKia0TojDbTdLvOJ23wsaojTF/4bSzBK5otdAz8YSgez4vTRUV5pUqvCkK0dSJJ1DHTdrFUwvzlXuKbwNbvWyzjmKfeaE9a9YLzhrUIUTRvKyqhZXr++vMy3hw4fdtGUTJWeiqmoIuJWIZ1748Ff6LjcP7TdG7OvY4q+U9ilEJYdF4aM+TJY193zKp0GNWohunuVrtOUnL9VQaSSDbvGdFS1Mg9iCN6kRBQTHVQvFzvuEw/Y2LvoPH3yFG1zj6bDLWfOBhegy/6Zi6fi4E1UfgJNFN1sjWF+gZoHAgMBAAECggEBALTqBD9zuoMsJYQo99IT6X7WKZeE5i1vMYzF1Fp9iZpS6ylIkrW7WLFHXs3lblMtVoxazn2d2WrOXoLbU4KNROhy57fVy//FZMqufMBetc3NAqYjOmyy7KnLzj7Hu+0HO2GflEq3n4UV2TTNrGv+d7BfawLV1FV1TcjgzfKjkq/gMDCTPMgfT7lcF4TGSqv6Pgudp8RRn/R7EKOx+I8/XkJsZWP3XJ0zj4ciqDmKrX2j7wZMT8CH/8wfyg4NGk1+TN4xBB2CXgulIWJg5yhzu+JgbGnHEL/Ga+i40XJe+RnlKDpjQ+ZFyrOkmHpIldasjWNGFeKwLjzrDQfyDRwex5ECgYEA+fFGJ+zbi2YJwHDO/44PmvcoCWpho0ah7y+O5/LEVROTYEoNRqodLet+z+LMKDq/o2qTNaYJLiDGMBZzhqyJIFR5ZJ5MhgLloY1gL8s0a7KMWDbh7giiWSu5zqhB3Du8Tom+8bYZUxOL4zhzCGrFitRqiEIIjy1/c5qyRQZaZx8CgYEA+lf6tdO6kKiAOxm7sdZ3rEl4UGFY+tEqgivKwurLRIor0XDfhCKr1hCfsZggpR8SMLfjCuNEgKbceofcKMa8OtyDbMPRz0mYNkCELTUYA+r8Ib/LvleQApMcLn+TDNwEnGlglSrrF33RVAUK+i/WfSXUvZRVpLQpRmdAqHjJeBkCgYEA0+Zz/iFXOGW32slJFWxRWqYz8VeZk52saGY/l/I/9Yj1J2tgugo7VtUS3BiB0ZGNK3SNfaxYmBz9KYO/Sew5DYnQqTdz1SHboQ2FAMAcnznutlNBVFdJnKPvkX8g5yBV05gApFgoPECUFn2jOP2coMjZ0M97Bjgil9YNUWvDdS0CgYEA4beFs3+tzVRAGgl/tD7dNBgiRMchBTSmkSuO6+PrVmcGTxboUSk5qg7fDa9Ob9LuAcMrENwNHbpVPJ1WoeVePewpC14bxDxk4zWUd3ZRquaqYnud5obor4mYdUxNd+DAv447qQNDaLDmlkzdsuqDB9+eSzh9Z72RIYtjPwN5E7ECgYEAsbqkMZXfK1tTRfduX+7KOlPMfcSr29X6nuDglcna4dHec6FAOzp3xL2722nnFt6gygc7pErrm0m0Wd/6BMTb4T3+GYwkDiMjM2CsTZYjpzrUri/VfRR509rScxHVR0/1PTFWN0K0+VZbEAyXDbbs4opq40tW0dWtcKxaNlimMw8=";
struct PrivateKey* private_key = libp2p_crypto_private_key_new();
struct RsaPrivateKey rsa_private_key = {0};
char* orig_peer_id = "QmbTyKkUuv6yaSpTuCFq1Ft6Q3g4wTtFJk1BLGMPRdAEP8";
size_t orig_peer_id_size = strlen(orig_peer_id);
struct RsaPrivateKey rsa_private_key = {0};
unsigned char hashed[32];
size_t final_id_size = 1600;
unsigned char final_id[final_id_size];
struct PrivateKey* private_key = libp2p_crypto_private_key_new();
// 1) take the private key and turn it back into bytes (decode base 64)
decode_base64_size = libp2p_crypto_encoding_base64_decode_size(strlen(orig_priv_key));
decode_base64 = (unsigned char*)malloc(decode_base64_size);
@ -44,6 +46,10 @@ int test_secio_handshake() {
secure_session.host = "www.jmjatlanta.com";
secure_session.port = 4001;
secure_session.traffic_type = TCP;
// connect to host
secure_session.socket_descriptor = libp2p_net_multistream_connect(secure_session.host, secure_session.port);
if (secure_session.socket_descriptor == -1)
goto exit;
if (!libp2p_secio_handshake(&secure_session, &rsa_private_key))
goto exit;