Does secp256k1 library provide API for generating uncompressed key? Hi I am right now want to do a make a small tool to generate some test vector for ecdsa. 
Openssl is quite good, for support secp256k1 bitcoin provides an excellent library.

However, it looks what I get from secp256k1 API only the compressed key.
I find some post about how to convert the compressed key (Qx) to uncompressed key (Qx,Qy). But I just wondering if I can directly get the uncompressed key?

Thanks!
Use secp256k1_ec_pubkey_parse and secp256k1_ec_pubkey_serialize:



secp256k1_context *ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
secp256k1_pubkey pubkey;

const unsigned char input[33] = {0x02,0x8c,0x28,0xa9,0x7b,0xf8,0x29,0x8b,0xc0,0xd2,0x3d,0x8c,0x74,0x94,0x52,0xa3,0x2e,0x69,0x4b,0x65,0xe3,0x0a,0x94,0x72,0xa3,0x95,0x4a,0xb3,0x0f,0xe5,0x32,0x4c,0xaa};

if (secp256k1_ec_pubkey_parse(ctx, &amp;pubkey, input, 33) != 1) {
    puts("Public key not on curve");
    secp256k1_context_destroy(ctx);
    return 1;
}

unsigned char outpubkey[65];
size_t written_bytes = 65;
secp256k1_ec_pubkey_serialize(ctx, outpubkey, &amp;written_bytes, &amp;pubkey, SECP256K1_EC_UNCOMPRESSED);

printf("Uncompress public key: ");

for (int i = 0; i &lt; 65; i++) {
    printf("%.2x", (unsigned int) outpubkey[i]);
}

puts("");

secp256k1_context_destroy(ctx);