X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=src%2Fssl%2Fssl_scert_single_rsa.c;h=879a84ce30697b7b579ae527ec542144aade472b;hp=2ddbff99754c7566e36335834cf01e927a06ab73;hb=ea95d8264c6aefe742a9c3f4f9d834b188566a29;hpb=e61ad42191511226309bad2cbde8cd9e8cc743cb;ds=sidebyside diff --git a/src/ssl/ssl_scert_single_rsa.c b/src/ssl/ssl_scert_single_rsa.c index 2ddbff9..879a84c 100644 --- a/src/ssl/ssl_scert_single_rsa.c +++ b/src/ssl/ssl_scert_single_rsa.c @@ -32,7 +32,7 @@ sr_choose(const br_ssl_server_policy_class **pctx, br_ssl_server_policy_rsa_context *pc; const br_suite_translated *st; size_t u, st_num; - int hash_id; + unsigned hash_id; pc = (br_ssl_server_policy_rsa_context *)pctx; st = br_ssl_server_get_client_suites(cc, &st_num); @@ -58,7 +58,7 @@ sr_choose(const br_ssl_server_policy_class **pctx, && hash_id != 0) { choices->cipher_suite = st[u][0]; - choices->hash_id = hash_id; + choices->algo_id = hash_id + 0xFF00; return 1; } break; @@ -69,12 +69,12 @@ sr_choose(const br_ssl_server_policy_class **pctx, static uint32_t sr_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_rsa_context *pc; pc = (br_ssl_server_policy_rsa_context *)pctx; - return br_rsa_ssl_decrypt(pc->irsacore, pc->sk, data, len); + return br_rsa_ssl_decrypt(pc->irsacore, pc->sk, data, *len); } /* @@ -110,7 +110,7 @@ static const unsigned char *HASH_OID[] = { static size_t sr_do_sign(const br_ssl_server_policy_class **pctx, - int hash_id, size_t hv_len, unsigned char *data, size_t len) + unsigned algo_id, unsigned char *data, size_t hv_len, size_t len) { br_ssl_server_policy_rsa_context *pc; unsigned char hv[64]; @@ -119,10 +119,11 @@ sr_do_sign(const br_ssl_server_policy_class **pctx, pc = (br_ssl_server_policy_rsa_context *)pctx; memcpy(hv, data, hv_len); - if (hash_id == 0) { + algo_id &= 0xFF; + if (algo_id == 0) { hash_oid = NULL; - } else if (hash_id >= 2 && hash_id <= 6) { - hash_oid = HASH_OID[hash_id - 2]; + } else if (algo_id >= 2 && algo_id <= 6) { + hash_oid = HASH_OID[algo_id - 2]; } else { return 0; }