DSA_SIG *unpack_cp_signature(const unsigned char *sig, size_t siglen)
{
    DSA_SIG *s;

    s = DSA_SIG_new();
    if (s == NULL) {
        GOSTerr(GOST_F_UNPACK_CP_SIGNATURE, ERR_R_MALLOC_FAILURE);
        return NULL;
    }
    s->s = BN_bin2bn(sig, siglen / 2, NULL);
    s->r = BN_bin2bn(sig + siglen / 2, siglen / 2, NULL);
    return s;
}