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; }
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; }