Add EC_KEY_key2buf for OpenSSL compatibility
Change-Id: If45ef3a9bb757bd0c7f592f40ececaf4aa2f607d Reviewed-on: https://boringssl-review.googlesource.com/c/33824 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com>
This commit is contained in:
parent
43e636a2e4
commit
7177c1d29f
@ -394,6 +394,33 @@ err:
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t EC_KEY_key2buf(EC_KEY *key, point_conversion_form_t form,
|
||||||
|
unsigned char **out_buf, BN_CTX *ctx) {
|
||||||
|
if (key == NULL || key->pub_key == NULL || key->group == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const size_t len =
|
||||||
|
EC_POINT_point2oct(key->group, key->pub_key, form, NULL, 0, ctx);
|
||||||
|
if (len == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t *buf = OPENSSL_malloc(len);
|
||||||
|
if (buf == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EC_POINT_point2oct(key->group, key->pub_key, form, buf, len, ctx) !=
|
||||||
|
len) {
|
||||||
|
OPENSSL_free(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*out_buf = buf;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
int EC_KEY_generate_key(EC_KEY *key) {
|
int EC_KEY_generate_key(EC_KEY *key) {
|
||||||
if (key == NULL || key->group == NULL) {
|
if (key == NULL || key->group == NULL) {
|
||||||
OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
|
OPENSSL_PUT_ERROR(EC, ERR_R_PASSED_NULL_PARAMETER);
|
||||||
|
@ -177,6 +177,12 @@ OPENSSL_EXPORT int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key,
|
|||||||
BIGNUM *x,
|
BIGNUM *x,
|
||||||
BIGNUM *y);
|
BIGNUM *y);
|
||||||
|
|
||||||
|
// EC_KEY_key2buf encodes the public key in |key| to an allocated octet string
|
||||||
|
// and sets |*out_buf| to point to it. It returns the length of the encoded
|
||||||
|
// octet string or zero if an error occurred.
|
||||||
|
OPENSSL_EXPORT size_t EC_KEY_key2buf(EC_KEY *key, point_conversion_form_t form,
|
||||||
|
unsigned char **out_buf, BN_CTX *ctx);
|
||||||
|
|
||||||
|
|
||||||
// Key generation.
|
// Key generation.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user