简体   繁体   中英

sign with libgcrypt, crashes

im trying to create a peer to peer network that is controlled by a peer with the master private key, part of that is approving peers to connect

the following code is suppose to take a public key, sign that and send it to the peer so that it can check if its valid and in its approved peer list

gcry_sexp_t signature, keydata;
char *blob = malloc(size + 64);

sprintf(blob, "(data\n (flags pkcs1)\n (hash sha1 #%.*s#))\n", (int)size, buf);
printf("%s\n", blob);
free(buf);

gcry_sexp_sscan(&keydata, &size, blob, strlen(blob));
printf("offset %d\n", (int)size);

size = gcry_sexp_sprint(keydata, GCRYSEXP_FMT_ADVANCED, NULL, 0);
printf("size %d\n", (int)size);

buf = gcry_xmalloc(size);
gcry_sexp_sprint(keydata, GCRYSEXP_FMT_ADVANCED, buf, size);
printf("keydata: %.*s\n", size, buf);
free(buf);

gcry_pk_sign(&signature, keydata, skey);
size = gcry_sexp_sprint(signature, GCRYSEXP_FMT_ADVANCED, NULL, 0);
buf = gcry_xmalloc(size);
gcry_sexp_sprint(signature, GCRYSEXP_FMT_ADVANCED, buf, size);
//add signature buf to msg and send to peer

But it crashes. Any ideas why?

The printf arguments are around the wrong way. Should be:

printf("keydata: %.*s\n", size, buf);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM