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;
|
||||
}
|
||||
|
||||
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) {
|
||||
if (key == NULL || key->group == NULL) {
|
||||
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 *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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user