Firmar un mensaje usando ECDSA en OpenSSL

¿Cómo configuro la clave privada para firmar mensajes cuando uso ECDSA en OpenSSL mediante programación? Tengo el siguiente código:

static int create_signature(unsigned char* hash)
{
  EC_KEY *eckey=NULL;
  EC_GROUP *ecgroup=NULL;
  EVP_PKEY *evpkey=NULL;
  unsigned char *signature=NULL;
  point_conversion_form_t form = POINT_CONVERSION_UNCOMPRESSED;
  int signature_size, block_size;
  unsigned char * block=NULL;

  ecgroup = get_ec_group_192();
  EC_GROUP_set_asn1_flag(ecgroup, OPENSSL_EC_NAMED_CURVE);
  EC_GROUP_set_point_conversion_form(ecgroup, form);
  eckey=EC_KEY_new();
  EC_KEY_set_group(eckey,ecgroup);
  EC_KEY_generate_key(eckey);
  evpkey=EVP_PKEY_new();
  EVP_PKEY_assign_EC_KEY(evpkey,eckey);
  signature=OPENSSL_malloc(EVP_PKEY_size(evpkey));

  ECDSA_sign(0, hash, sizeof(hash), signature, &signature_size, eckey);

  printf("%s", signature);
  return 0;
}

La funciónget_ec_group_192() se crea ejecutandoopenssl ecparam -C -name secp192k1 -genkey que también genera algoEC PARAMETERS y unEC PRIVATE KEY.

Lo que intento hacer es cifrar el mensaje contenido enhash con mi clave privada para que solo la clave pública pueda descifrarla. ¿Es eso posible con el código anterior, o estoy haciendo esto completamente mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta