Example #1
0
static int test_ref_data(void)
{
    FF_DH *dh;
    int ret = AVERROR(ENOMEM);
    uint8_t pubkey_test[128];
    uint8_t sharedkey_test[128];

    dh = ff_dh_init(1024);
    if (!dh)
        goto fail;
    bn_hex2bn(dh->priv_key, private_key, ret);
    if (!ret)
        goto fail;
    bn_hex2bn(dh->pub_key, public_key, ret);
    if (!ret)
        goto fail;
    if ((ret = ff_dh_write_public_key(dh, pubkey_test, sizeof(pubkey_test))) < 0)
        goto fail;
    if (memcmp(pubkey_test, public_key_bin, sizeof(pubkey_test))) {
        printf("Mismatched generated public key\n");
        ret = AVERROR_INVALIDDATA;
        goto fail;
    } else {
        printf("Generated public key ok\n");
    }
    if ((ret = ff_dh_compute_shared_secret_key(dh, peer_public_key, sizeof(peer_public_key),
                                               sharedkey_test, sizeof(sharedkey_test))) < 0)
        goto fail;
    if (memcmp(shared_secret, sharedkey_test, sizeof(sharedkey_test))) {
        printf("Mismatched generated shared key\n");
        ret = AVERROR_INVALIDDATA;
    } else {
        printf("Generated shared key ok\n");
    }
fail:
    ff_dh_free(dh);
    return ret;
}
Example #2
0
int main()
{
	bn *x = bn_new();
	bn *y = bn_new();
	bn *z = bn_new();
	assert(x);
	assert(y);
	assert(z);

	int ret = bn_hex2bn(x, "Feedf00D");
	assert(!ret);
	ret = bn_hex2bn(y, "CafeF00d5");
	assert(!ret);
	ret = bn_add(x, x, x);
	assert(!ret);
	ret = bn_add(y, y, x);
	assert(!ret);
	ret = bn_hex2bn(x, "123456789abcdef");
	assert(!ret);
	ret = bn_add(z, x, y);
	assert(!ret);

	char x_str[20];
	char y_str[20];
	char z_str[20];
	ret = bn_bn2hex(x_str, sizeof x_str, x);
	assert(!ret);
	ret = bn_bn2hex(y_str, sizeof y_str, y);
	assert(!ret);
	ret = bn_bn2hex(z_str, sizeof z_str, z);
	assert(!ret);
	bn_free(x);
	bn_free(y);
	bn_free(z);
	printf("x: %s\ny: %s\nz: %s\n", x_str, y_str, z_str);
	return 0;
}