X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=src%2Fssl%2Fssl_scert_single_ec.c;h=ce8d7539ab9068817bc91a5d17a2b25e5cafa66c;hp=7b0c328ff8402a8379d96bb356618eea8a790d62;hb=69807a34fc08a8b1260ade733ceb52d5099fc0b4;hpb=ef318ef83a3a58b0a9e036676b84d11261ed7bb4 diff --git a/src/ssl/ssl_scert_single_ec.c b/src/ssl/ssl_scert_single_ec.c index 7b0c328..ce8d753 100644 --- a/src/ssl/ssl_scert_single_ec.c +++ b/src/ssl/ssl_scert_single_ec.c @@ -79,12 +79,18 @@ se_choose(const br_ssl_server_policy_class **pctx, static uint32_t se_do_keyx(const br_ssl_server_policy_class **pctx, - unsigned char *data, size_t len) + unsigned char *data, size_t *len) { br_ssl_server_policy_ec_context *pc; + uint32_t r; + size_t xoff, xlen; pc = (br_ssl_server_policy_ec_context *)pctx; - return pc->iec->mul(data, len, pc->sk->x, pc->sk->xlen, pc->sk->curve); + r = pc->iec->mul(data, *len, pc->sk->x, pc->sk->xlen, pc->sk->curve); + xoff = pc->iec->xoff(pc->sk->curve, &xlen); + memmove(data, data + xoff, xlen); + *len = xlen; + return r; } static size_t