Signature *signature_to_proto(const tal_t *ctx, const struct signature *sig)
{
	Signature *pb = tal(ctx, Signature);
	signature__init(pb);

	assert(sig_valid(sig));

#ifdef USE_SCHNORR
	memcpy(&pb->r1, sig->schnorr, 8);
	memcpy(&pb->r2, sig->schnorr + 8, 8);
	memcpy(&pb->r3, sig->schnorr + 16, 8);
	memcpy(&pb->r4, sig->schnorr + 24, 8);
	memcpy(&pb->s1, sig->schnorr + 32, 8);
	memcpy(&pb->s2, sig->schnorr + 40, 8);
	memcpy(&pb->s3, sig->schnorr + 48, 8);
	memcpy(&pb->s4, sig->schnorr + 56, 8);
#else
	/* FIXME: Need a portable way to encode signatures in libsecp! */
	
	/* Kill me now... */
	memcpy(&pb->r1, sig->sig.data, 8);
	memcpy(&pb->r2, sig->sig.data + 8, 8);
	memcpy(&pb->r3, sig->sig.data + 16, 8);
	memcpy(&pb->r4, sig->sig.data + 24, 8);
	memcpy(&pb->s1, sig->sig.data + 32, 8);
	memcpy(&pb->s2, sig->sig.data + 40, 8);
	memcpy(&pb->s3, sig->sig.data + 48, 8);
	memcpy(&pb->s4, sig->sig.data + 56, 8);
#endif
	
	return pb;
}
Ejemplo n.º 2
0
Signature *signature_to_proto(const tal_t *ctx, const struct signature *sig)
{
    Signature *pb = tal(ctx, Signature);
    signature__init(pb);

    assert(sig_valid(sig));

    /* Kill me now... */
    memcpy(&pb->r1, sig->r, 8);
    memcpy(&pb->r2, sig->r + 8, 8);
    memcpy(&pb->r3, sig->r + 16, 8);
    memcpy(&pb->r4, sig->r + 24, 8);
    memcpy(&pb->s1, sig->s, 8);
    memcpy(&pb->s2, sig->s + 8, 8);
    memcpy(&pb->s3, sig->s + 16, 8);
    memcpy(&pb->s4, sig->s + 24, 8);

    return pb;
}