簡體   English   中英

使用 libgcrypt 簽名,崩潰

[英]sign with libgcrypt, crashes

我正在嘗試創建一個由具有主私鑰的對等方控制的對等網絡,其中一部分是批准對等方連接

以下代碼假設采用公鑰,對其進行簽名並將其發送給對等方,以便它可以檢查其是否有效並在其批准的對等方列表中

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

但它崩潰了。 任何想法為什么?

printf參數是錯誤的。 應該:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM