int add_signature(unsigned char *out, char *private_key_path, unsigned char *file, unsigned int fsize) { int len; unsigned char sig[2048]; unsigned int sig_len; len = ccnl_ccnb_mkHeader(out, CCN_DTAG_SIGNATURE, CCN_TT_DTAG); len += ccnl_ccnb_mkStrBlob(out + len, CCN_DTAG_NAME, CCN_TT_DTAG, "SHA256"); len += ccnl_ccnb_mkStrBlob(out + len, CCN_DTAG_WITNESS, CCN_TT_DTAG, ""); if(!sign(private_key_path, (unsigned char*)file, fsize, (unsigned char*)sig, &sig_len)) return 0; //printf("SIGLEN: %d\n",sig_len); sig[sig_len]=0; //add signaturebits bits... len += ccnl_ccnb_mkHeader(out + len, CCN_DTAG_SIGNATUREBITS, CCN_TT_DTAG); len += ccnl_ccnb_addBlob(out + len, (char*)sig, sig_len); out[len++] = 0; // end signaturebits out[len++] = 0; // end signature /*char *publickey = "/home/blacksheeep/.ssh/publickey.pem"; int verified = verify(publickey, file, fsize, sig, sig_len); printf("Verified: %d\n", verified);*/ return len; }
static int ccnl_crypto_add_signature(unsigned char *out, char *sig, int siglen) { int len; len = ccnl_ccnb_mkHeader(out, CCN_DTAG_SIGNATURE, CCN_TT_DTAG); len += ccnl_ccnb_mkStrBlob(out + len, CCN_DTAG_NAME, CCN_TT_DTAG, "SHA256"); len += ccnl_ccnb_mkStrBlob(out + len, CCN_DTAG_WITNESS, CCN_TT_DTAG, ""); //add signaturebits bits... len += ccnl_ccnb_mkHeader(out + len, CCN_DTAG_SIGNATUREBITS, CCN_TT_DTAG); len += ccnl_ccnb_addBlob(out + len, sig, siglen); out[len++] = 0; // end signaturebits out[len++] = 0; // end signature return len; }