Example #1
0
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;
}
Example #2
0
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;
}