From 334d807b924427434b42d4fbae745d3d1b38a218 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 10 Jan 2017 02:17:16 +0000 Subject: Types fix, first pass XXX marks what must change when skalibs changes. Also started writing functions for client certificate support in sbearssl, but it's not working yet (need more high-level support from BearSSL before it can work) --- src/sbearssl/sbearssl_setclientcert.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/sbearssl/sbearssl_setclientcert.c (limited to 'src/sbearssl/sbearssl_setclientcert.c') diff --git a/src/sbearssl/sbearssl_setclientcert.c b/src/sbearssl/sbearssl_setclientcert.c new file mode 100644 index 0000000..07b1385 --- /dev/null +++ b/src/sbearssl/sbearssl_setclientcert.c @@ -0,0 +1,29 @@ +/* ISC license. */ + +#include +#include +#include + +int sbearssl_setclientcert (br_ssl_client_context *cc, br_x509_certificate const *certs, size_t certlen, br_skey const *key) +{ + if (!certlen) return 0 ; + switch (key.type) + { + case BR_KEYTYPE_RSA : + br_ssl_client_set_single_rsa(cc, certs, certlen, &key->rsa, &br_rsa_i31_pkcs1_sign) ; + break ; + case BR_KEYTYPE_EC : + { + int kt, r ; + r = sbearssl_ec_issuer_keytype(&kt, &certs[0]) ; + if (r) return r ; + br_ssl_client_set_single_ec(cc, certs, certlen, &key->ec, BR_KEYTYPE_KEYX | BR_KEYTYPE_SIGN, kt, &br_ec_prime_i31, ) ; + break ; + } + default : + strerr_dief1x(96, "unsupported private key type") ; + } + + + return 0 ; +} -- cgit v1.3.1