summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2016-11-25 20:16:06 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2016-11-25 20:16:06 +0000
commit8d532683386121e70810b0d7c6642cc2c2b89cb0 (patch)
tree866010763c829a35b18603c5af58896bd14afd18 /src
parent018025f0f36a4847df265c9948dbaf7073ed3245 (diff)
downloads6-networking-8d532683386121e70810b0d7c6642cc2c2b89cb0.tar.xz
Fix build bugs. It builds!
Two things remain to do: - how to pass SNI information to libtls - how to detect cert issuer key type for ECC in bearssl
Diffstat (limited to 'src')
-rw-r--r--src/conn-tools/s6-tlsc.c10
-rw-r--r--src/conn-tools/s6-tlsclient.c27
-rw-r--r--src/conn-tools/s6-tlsd.c2
-rw-r--r--src/conn-tools/s6-tlsserver.c10
-rw-r--r--src/include/s6-networking/sbearssl.h26
-rw-r--r--src/include/s6-networking/stls.h2
-rw-r--r--src/sbearssl/sbearssl-internal.h1
-rw-r--r--src/sbearssl/sbearssl_append.c2
-rw-r--r--src/sbearssl/sbearssl_cert_from.c2
-rw-r--r--src/sbearssl/sbearssl_cert_readfile.c11
-rw-r--r--src/sbearssl/sbearssl_cert_to.c4
-rw-r--r--src/sbearssl/sbearssl_ec_pkey_from.c2
-rw-r--r--src/sbearssl/sbearssl_ec_pkey_to.c4
-rw-r--r--src/sbearssl/sbearssl_ec_skey_from.c2
-rw-r--r--src/sbearssl/sbearssl_ec_skey_to.c4
-rw-r--r--src/sbearssl/sbearssl_error_str.c2
-rw-r--r--src/sbearssl/sbearssl_pem_push.c4
-rw-r--r--src/sbearssl/sbearssl_pkey_from.c6
-rw-r--r--src/sbearssl/sbearssl_pkey_to.c2
-rw-r--r--src/sbearssl/sbearssl_rsa_pkey_from.c6
-rw-r--r--src/sbearssl/sbearssl_rsa_pkey_to.c6
-rw-r--r--src/sbearssl/sbearssl_rsa_skey_from.c12
-rw-r--r--src/sbearssl/sbearssl_rsa_skey_to.c12
-rw-r--r--src/sbearssl/sbearssl_run.c28
-rw-r--r--src/sbearssl/sbearssl_s6tlsc.c43
-rw-r--r--src/sbearssl/sbearssl_s6tlsd.c8
-rw-r--r--src/sbearssl/sbearssl_skey_from.c4
-rw-r--r--src/sbearssl/sbearssl_skey_readfile.c12
-rw-r--r--src/sbearssl/sbearssl_skey_to.c6
-rw-r--r--src/sbearssl/sbearssl_ta_cert.c10
-rw-r--r--src/sbearssl/sbearssl_ta_from.c4
-rw-r--r--src/sbearssl/sbearssl_ta_readdir.c1
-rw-r--r--src/sbearssl/sbearssl_ta_readfile_internal.c2
-rw-r--r--src/sbearssl/sbearssl_ta_to.c4
-rw-r--r--src/stls/stls_s6tlsc.c8
-rw-r--r--src/stls/stls_s6tlsd.c6
36 files changed, 160 insertions, 135 deletions
diff --git a/src/conn-tools/s6-tlsc.c b/src/conn-tools/s6-tlsc.c
index e2b6f7f..4476690 100644
--- a/src/conn-tools/s6-tlsc.c
+++ b/src/conn-tools/s6-tlsc.c
@@ -31,11 +31,12 @@
#endif
-#define USAGE "s6-tlsc [ -S | -s ] [ -Y | -y ] [ -v verbosity ] [ -K timeout ] [ -6 rfd ] [ -7 wfd ] prog..."
+#define USAGE "s6-tlsc [ -S | -s ] [ -Y | -y ] [ -v verbosity ] [ -K timeout ] [ -k servername ] [ -6 rfd ] [ -7 wfd ] prog..."
#define dieusage() strerr_dieusage(100, USAGE)
int main (int argc, char const *const *argv, char const *const *envp)
{
+ char const *servername = 0 ;
tain_t tto ;
unsigned int verbosity = 1 ;
uid_t uid = 0 ;
@@ -50,7 +51,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
unsigned int t = 0 ;
for (;;)
{
- register int opt = subgetopt_r(argc, argv, "SsYyv:K:6:7:", &l) ;
+ register int opt = subgetopt_r(argc, argv, "SsYyv:K:k:6:7:", &l) ;
if (opt == -1) break ;
switch (opt)
{
@@ -60,6 +61,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
case 'y' : preoptions |= 1 ; break ;
case 'v' : if (!uint0_scan(l.arg, &verbosity)) dieusage() ; break ;
case 'K' : if (!uint0_scan(l.arg, &t)) dieusage() ; break ;
+ case 'k' : servername = l.arg ; break ;
case '6' :
{
unsigned int fd ;
@@ -84,7 +86,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (!getuid())
{
- x = env_get2(envp, "TLS_UID") ;
+ char const *x = env_get2(envp, "TLS_UID") ;
if (x)
{
uint64 u ;
@@ -98,5 +100,5 @@ int main (int argc, char const *const *argv, char const *const *envp)
}
}
- return s6tlsc(argv, envp, &tto, preoptions, options, uid, gid, verbosity) ;
+ return s6tlsc(argv, envp, &tto, preoptions, options, uid, gid, verbosity, servername, fds) ;
}
diff --git a/src/conn-tools/s6-tlsclient.c b/src/conn-tools/s6-tlsclient.c
index 6d2249a..a1cd75d 100644
--- a/src/conn-tools/s6-tlsclient.c
+++ b/src/conn-tools/s6-tlsclient.c
@@ -9,9 +9,9 @@
#include <skalibs/ip46.h>
#include <s6-networking/config.h>
-#define USAGE "s6-tlsclient [ options ] ip port prog...\n" \
+#define USAGE "s6-tlsclient [ options ] host port prog...\n" \
"s6-tcpclient options: [ -q | -Q | -v ] [ -4 | -6 ] [ -d | -D ] [ -r | -R ] [ -h | -H ] [ -n | -N ] [ -t timeout ] [ -l localname ] [ -T timeoutconn ] [ -i localip ] [ -p localport ]\n" \
-"s6-tlsc options: [ -S | -s ] [ -Y | -y ] [ -K timeout ]"
+"s6-tlsc options: [ -S | -s ] [ -Y | -y ] [ -K timeout ] [ -k servername ]"
#define dieusage() strerr_dieusage(100, USAGE)
@@ -19,6 +19,7 @@ typedef struct options_s options_t, *options_t_ref ;
struct options_s
{
char const *localname ;
+ char const *servername ;
unsigned int timeout ;
unsigned int ximeout ;
unsigned int yimeout ;
@@ -40,6 +41,7 @@ struct options_s
#define OPTIONS_ZERO \
{ \
.localname = 0, \
+ .servername = 0, \
.timeout = 0, \
.ximeout = 2, \
.yimeout = 58, \
@@ -66,7 +68,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
subgetopt_t l = SUBGETOPT_ZERO ;
for (;;)
{
- register int opt = subgetopt_r(argc, argv, "qQv46DdHhRrnNt:l:T:i:p:SsYyK:", &l) ;
+ register int opt = subgetopt_r(argc, argv, "qQv46DdHhRrnNt:l:T:i:p:SsYyK:k:", &l) ;
if (opt == -1) break ;
switch (opt)
{
@@ -78,7 +80,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
case 'D' : o.flagD = 1 ; break ;
case 'd' : o.flagD = 0 ; break ;
case 'H' : o.flagH = 1 ; break ;
- case 'h' : o.flagh = 0 ; break ;
+ case 'h' : o.flagH = 0 ; break ;
case 'R' : o.flagr = 0 ; break ;
case 'r' : o.flagr = 1 ; break ;
case 'n' : o.flagN = 0 ; break ;
@@ -106,6 +108,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
case 'Y' : o.flagy = 0 ; break ;
case 'y' : o.flagy = 1 ; break ;
case 'K' : if (!uint0_scan(l.arg, &o.kimeout)) dieusage() ; break ;
+ case 'k' : o.servername = l.arg ; break ;
default : dieusage() ;
}
}
@@ -113,13 +116,20 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (argc < 3) dieusage() ;
}
+ if (!o.servername && !o.flagH)
+ {
+ ip46full_t ip ;
+ if (!ip46full_scan(argv[0], &ip))
+ o.servername = argv[0] ;
+ }
+
{
unsigned int m = 0 ;
unsigned int pos = 0 ;
char fmt[UINT_FMT * 4 + UINT16_FMT + IP46_FMT] ;
- char const *newargv[26 + argc] ;
+ char const *newargv[28 + argc] ;
newargv[m++] = S6_NETWORKING_BINPREFIX "s6-tcpclient" ;
- if (o.verbosity != 1) newargv[m++] = o.verbosity ? "-v" ; "-q" ;
+ if (o.verbosity != 1) newargv[m++] = o.verbosity ? "-v" : "-q" ;
if (o.flag4) newargv[m++] = "-4" ;
if (o.flag6) newargv[m++] = "-6" ;
if (o.flagD) newargv[m++] = "-D" ;
@@ -172,6 +182,11 @@ int main (int argc, char const *const *argv, char const *const *envp)
pos += uint_fmt(fmt + pos, o.kimeout) ;
fmt[pos++] = 0 ;
}
+ if (o.servername)
+ {
+ newargv[m++] = "-k" ;
+ newargv[m++] = o.servername ;
+ }
newargv[m++] = "--" ;
while (*argv) newargv[m++] = *argv++ ;
newargv[m++] = 0 ;
diff --git a/src/conn-tools/s6-tlsd.c b/src/conn-tools/s6-tlsd.c
index 73758a2..6a6d4ef 100644
--- a/src/conn-tools/s6-tlsd.c
+++ b/src/conn-tools/s6-tlsd.c
@@ -68,7 +68,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
if (!getuid())
{
- x = env_get2(envp, "TLS_UID") ;
+ char const *x = env_get2(envp, "TLS_UID") ;
if (x)
{
uint64 u ;
diff --git a/src/conn-tools/s6-tlsserver.c b/src/conn-tools/s6-tlsserver.c
index 0154e24..5ba5b0c 100644
--- a/src/conn-tools/s6-tlsserver.c
+++ b/src/conn-tools/s6-tlsserver.c
@@ -105,7 +105,7 @@ int main (int argc, char const *const *argv, char const *const *envp)
case 'D' : o.flagD = 1 ; o.doaccess = 1 ; break ;
case 'd' : o.flagD = 0 ; break ;
case 'H' : o.flagH = 1 ; o.doaccess = 1 ; break ;
- case 'h' : o.flagh = 0 ; break ;
+ case 'h' : o.flagH = 0 ; break ;
case 'R' : o.flagr = 0 ; break ;
case 'r' : o.flagr = 1 ; o.doaccess = 1 ; break ;
case 'P' : o.flagp = 0 ; break ;
@@ -133,14 +133,14 @@ int main (int argc, char const *const *argv, char const *const *envp)
char fmt[UINT_FMT * 5 + GID_FMT * (NGROUPS_MAX + 1) + UINT64_FMT] ;
char const *newargv[44 + argc] ;
newargv[m++] = S6_NETWORKING_BINPREFIX "s6-tcpserver" ;
- if (o.verbosity != 1) newargv[m++] = o.verbosity ? "-v" ; "-q" ;
+ if (o.verbosity != 1) newargv[m++] = o.verbosity ? "-v" : "-q" ;
if (o.flag46) newargv[m++] = o.flag46 == 1 ? "-4" : "-6" ;
if (o.flag1) newargv[m++] = "-1" ;
if (o.maxconn)
{
newargv[m++] = "-c" ;
newargv[m++] = fmt + pos ;
- pos += uint_fmt(fmt + pos, maxconn) ;
+ pos += uint_fmt(fmt + pos, o.maxconn) ;
fmt[pos++] = 0 ;
}
if (o.localmaxconn)
@@ -150,11 +150,11 @@ int main (int argc, char const *const *argv, char const *const *envp)
pos += uint_fmt(fmt + pos, o.localmaxconn) ;
fmt[pos++] = 0 ;
}
- if (backlog != (unsigned int)-1)
+ if (o.backlog != (unsigned int)-1)
{
newargv[m++] = "-b" ;
newargv[m++] = fmt + pos ;
- pos += uint_fmt(fmt + pos, backlog) ;
+ pos += uint_fmt(fmt + pos, o.backlog) ;
fmt[pos++] = 0 ;
}
if (o.gidn != (unsigned int)-1)
diff --git a/src/include/s6-networking/sbearssl.h b/src/include/s6-networking/sbearssl.h
index a41ebd2..4589822 100644
--- a/src/include/s6-networking/sbearssl.h
+++ b/src/include/s6-networking/sbearssl.h
@@ -44,7 +44,7 @@ struct sbearssl_rsa_skey_s
} ;
extern int sbearssl_rsa_skey_from (sbearssl_rsa_skey *, br_rsa_private_key const *, stralloc *) ;
-extern void sbearssl_rsa_privkey_to (sbearssl_rsa_skey const *, br_rsa_private_key *, char const *, size_t) ;
+extern void sbearssl_rsa_skey_to (sbearssl_rsa_skey const *, br_rsa_private_key *, char *) ;
typedef struct sbearssl_ec_skey_s sbearssl_ec_skey, *sbearssl_ec_skey_ref ;
@@ -56,10 +56,10 @@ struct sbearssl_ec_skey_s
} ;
extern int sbearssl_ec_skey_from (sbearssl_ec_skey *, br_ec_private_key const *, stralloc *) ;
-extern void sbearssl_ec_skey_to (sbearssl_ec_skey const *, br_ec_private_key *, char const *, size_t) ;
+extern void sbearssl_ec_skey_to (sbearssl_ec_skey const *, br_ec_private_key *, char *) ;
-union sbearssl_skey_data_u
+union sbearssl_skey_u
{
sbearssl_rsa_skey rsa ;
sbearssl_ec_skey ec ;
@@ -86,7 +86,7 @@ struct br_skey_s
} ;
extern int sbearssl_skey_from (sbearssl_skey *, br_skey const *, stralloc *) ;
-extern int sbearssl_skey_to (sbearssl_skey const *, br_skey *, char const *) ;
+extern int sbearssl_skey_to (sbearssl_skey const *, br_skey *, char *) ;
extern int sbearssl_skey_readfile (char const *, sbearssl_skey *, stralloc *) ;
@@ -103,7 +103,7 @@ struct sbearssl_rsa_pkey_s
} ;
extern int sbearssl_rsa_pkey_from (sbearssl_rsa_pkey *, br_rsa_public_key const *, stralloc *) ;
-extern void sbearssl_rsa_pkey_to (sbearssl_rsa_pkey const *, br_rsa_public_key *, char const *) ;
+extern void sbearssl_rsa_pkey_to (sbearssl_rsa_pkey const *, br_rsa_public_key *, char *) ;
typedef struct sbearssl_ec_pkey_s sbearssl_ec_pkey, *sbearssl_ec_pkey_ref ;
@@ -115,12 +115,12 @@ struct sbearssl_ec_pkey_s
} ;
extern int sbearssl_ec_pkey_from (sbearssl_ec_pkey *, br_ec_public_key const *, stralloc *) ;
-extern void sbearssl_ec_pkey_to (sbearssl_ec_pkey const *, br_ec_public_key *, char const *) ;
+extern void sbearssl_ec_pkey_to (sbearssl_ec_pkey const *, br_ec_public_key *, char *) ;
-union sbearssl_pkey_data_u
+union sbearssl_pkey_u
{
-' sbearssl_rsa_pkey rsa ;
+ sbearssl_rsa_pkey rsa ;
sbearssl_ec_pkey ec ;
} ;
@@ -132,7 +132,7 @@ struct sbearssl_pkey_s
} ;
extern int sbearssl_pkey_from (sbearssl_pkey *, br_x509_pkey const *, stralloc *) ;
-extern int sbearssl_pkey_to (sbearssl_pkey const *, br_x509_pkey *, char const *) ;
+extern int sbearssl_pkey_to (sbearssl_pkey const *, br_x509_pkey *, char *) ;
/* Certificates (x509-encoded) */
@@ -145,7 +145,7 @@ struct sbearssl_cert_s
} ;
extern int sbearssl_cert_from (sbearssl_cert *, br_x509_certificate const *, stralloc *) ;
-extern void sbearssl_cert_to (sbearssl_cert const *, br_x509_certificate *, char const *) ;
+extern void sbearssl_cert_to (sbearssl_cert const *, br_x509_certificate *, char *) ;
extern int sbearssl_cert_readfile (char const *, genalloc *, stralloc *) ;
@@ -153,7 +153,7 @@ extern int sbearssl_cert_readfile (char const *, genalloc *, stralloc *) ;
/* Generic PEM */
typedef struct sbearssl_pemobject_s sbearssl_pemobject, *sbearssl_pemobject_ref ;
-struct sbearssl_s
+struct sbearssl_pemobject_s
{
size_t name ;
size_t data ;
@@ -176,7 +176,7 @@ struct sbearssl_ta_s
} ;
extern int sbearssl_ta_from (sbearssl_ta *, br_x509_trust_anchor const *, stralloc *) ;
-extern void sbearssl_ta_to (sbearssl_ta const *, br_x509_trust_anchor *, char const *) ;
+extern void sbearssl_ta_to (sbearssl_ta const *, br_x509_trust_anchor *, char *) ;
extern int sbearssl_ta_cert (sbearssl_ta *, sbearssl_cert const *, char const *, stralloc *) ;
@@ -196,7 +196,7 @@ extern int sbearssl_run (br_ssl_engine_context *, int *, unsigned int, uint32, t
/* s6-tlsc and s6-tlsd implementations */
-extern int sbearssl_s6tlsc (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int, int *) ;
+extern int sbearssl_s6tlsc (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int, char const *, int *) ;
extern int sbearssl_s6tlsd (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int) ;
#endif
diff --git a/src/include/s6-networking/stls.h b/src/include/s6-networking/stls.h
index 80c3df2..dff3bcf 100644
--- a/src/include/s6-networking/stls.h
+++ b/src/include/s6-networking/stls.h
@@ -17,7 +17,7 @@ extern int stls_run (struct tls *, int *, unsigned int, uint32_t, tain_t const *
/* s6-tlsc and s6-tlsd implementations */
-extern int stls_s6tlsc (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int, int *) ;
+extern int stls_s6tlsc (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int, char const *, int *) ;
extern int stls_s6tlsd (char const *const *, char const *const *, tain_t const *, uint32_t, uint32_t, uid_t, gid_t, unsigned int) ;
#endif
diff --git a/src/sbearssl/sbearssl-internal.h b/src/sbearssl/sbearssl-internal.h
index bffcb16..d2757b1 100644
--- a/src/sbearssl/sbearssl-internal.h
+++ b/src/sbearssl/sbearssl-internal.h
@@ -7,6 +7,7 @@
#include <bearssl.h>
#include <skalibs/stralloc.h>
#include <skalibs/genalloc.h>
+#include <s6-networking/sbearssl.h>
typedef struct sbearssl_strallocerr_s sbearssl_strallocerr, *sbearssl_strallocerr_ref ;
struct sbearssl_strallocerr_s
diff --git a/src/sbearssl/sbearssl_append.c b/src/sbearssl/sbearssl_append.c
index d0a6d64..ae4aac0 100644
--- a/src/sbearssl/sbearssl_append.c
+++ b/src/sbearssl/sbearssl_append.c
@@ -3,7 +3,7 @@
#include <sys/types.h>
#include <errno.h>
#include <skalibs/stralloc.h>
-#include "sbearssl-internal.h>
+#include "sbearssl-internal.h"
void sbearssl_append (void *stuff, void const *src, size_t len)
{
diff --git a/src/sbearssl/sbearssl_cert_from.c b/src/sbearssl/sbearssl_cert_from.c
index b57dca6..3822e05 100644
--- a/src/sbearssl/sbearssl_cert_from.c
+++ b/src/sbearssl/sbearssl_cert_from.c
@@ -6,7 +6,7 @@
int sbearssl_cert_from (sbearssl_cert *sc, br_x509_certificate const *bc, stralloc *sa)
{
- if (!stralloc_catb(sa, bc->data, bc->data_len)) return 0 ;
+ if (!stralloc_catb(sa, (char const *)bc->data, bc->data_len)) return 0 ;
sc->data = sa->len - bc->data_len ;
sc->datalen = bc->data_len ;
return 1 ;
diff --git a/src/sbearssl/sbearssl_cert_readfile.c b/src/sbearssl/sbearssl_cert_readfile.c
index 6090624..6cc78c1 100644
--- a/src/sbearssl/sbearssl_cert_readfile.c
+++ b/src/sbearssl/sbearssl_cert_readfile.c
@@ -10,7 +10,7 @@
#include <skalibs/djbunix.h>
#include <s6-networking/sbearssl.h>
-int sbearssl_cert_readfile (char const *fn, genalloc *certs, stralloc *sa) ;
+int sbearssl_cert_readfile (char const *fn, genalloc *certs, stralloc *sa)
{
char buf[BUFFER_INSIZE] ;
int fd = open_readb(fn) ;
@@ -18,12 +18,14 @@ int sbearssl_cert_readfile (char const *fn, genalloc *certs, stralloc *sa) ;
genalloc pems = GENALLOC_ZERO ;
sbearssl_pemobject *p ;
size_t certsbase = genalloc_len(sbearssl_cert, certs) ;
+ size_t sabase = sa->len ;
size_t n ;
size_t i = 0 ;
int certswasnull = !genalloc_s(sbearssl_cert, certs) ;
+ int sawasnull = !sa->s ;
int r ;
if (fd < 0) return -1 ;
- r = sbearssl_pem_decode_from_buffer(buf, n, &pems, sa) ;
+ r = sbearssl_pem_decode_from_buffer(&b, &pems, sa) ;
if (r) { fd_close(fd) ; return r ; }
fd_close(fd) ;
p = genalloc_s(sbearssl_pemobject, &pems) ;
@@ -46,7 +48,8 @@ int sbearssl_cert_readfile (char const *fn, genalloc *certs, stralloc *sa) ;
fail:
if (certswasnull) genalloc_free(sbearssl_cert, certs) ;
else genalloc_setlen(sbearssl_cert, certs, certsbase) ;
- stralloc_free(&sa) ;
- genalloc_free(sbearssl_pemobject, pems) ;
+ if (sawasnull) stralloc_free(sa) ;
+ else sa->len = sabase ;
+ genalloc_free(sbearssl_pemobject, &pems) ;
return r ;
}
diff --git a/src/sbearssl/sbearssl_cert_to.c b/src/sbearssl/sbearssl_cert_to.c
index ee0eeeb..1ab2d00 100644
--- a/src/sbearssl/sbearssl_cert_to.c
+++ b/src/sbearssl/sbearssl_cert_to.c
@@ -3,8 +3,8 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_cert_to (sbearssl_cert const *sc, br_x509_certificate *bc, char const *s)
+void sbearssl_cert_to (sbearssl_cert const *sc, br_x509_certificate *bc, char *s)
{
- bc->data = s + sc->data ;
+ bc->data = (unsigned char *)s + sc->data ;
bc->data_len = sc->datalen ;
}
diff --git a/src/sbearssl/sbearssl_ec_pkey_from.c b/src/sbearssl/sbearssl_ec_pkey_from.c
index 55c5651..fb97bfb 100644
--- a/src/sbearssl/sbearssl_ec_pkey_from.c
+++ b/src/sbearssl/sbearssl_ec_pkey_from.c
@@ -6,7 +6,7 @@
int sbearssl_ec_pkey_from (sbearssl_ec_pkey *l, br_ec_public_key const *k, stralloc *sa)
{
- if (!stralloc_catb(sa, k->q, k->qlen)) return 0 ;
+ if (!stralloc_catb(sa, (char const *)k->q, k->qlen)) return 0 ;
l->curve = k->curve ;
l->q = sa->len - k->qlen ;
l->qlen = k->qlen ;
diff --git a/src/sbearssl/sbearssl_ec_pkey_to.c b/src/sbearssl/sbearssl_ec_pkey_to.c
index 4cc1e65..df3d799 100644
--- a/src/sbearssl/sbearssl_ec_pkey_to.c
+++ b/src/sbearssl/sbearssl_ec_pkey_to.c
@@ -3,9 +3,9 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_ec_pkey_to (sbearssl_ec_pkey const *l, br_ec_public_key *k, char const *s)
+void sbearssl_ec_pkey_to (sbearssl_ec_pkey const *l, br_ec_public_key *k, char *s)
{
k->curve = l->curve ;
- k->q = s + l->q ;
+ k->q = (unsigned char *)s + l->q ;
k->qlen = l->qlen ;
}
diff --git a/src/sbearssl/sbearssl_ec_skey_from.c b/src/sbearssl/sbearssl_ec_skey_from.c
index 79c326f..b579f7d 100644
--- a/src/sbearssl/sbearssl_ec_skey_from.c
+++ b/src/sbearssl/sbearssl_ec_skey_from.c
@@ -6,7 +6,7 @@
int sbearssl_ec_skey_from (sbearssl_ec_skey *l, br_ec_private_key const *k, stralloc *sa)
{
- if (!stralloc_catb(sa, k->x, k->xlen)) return 0 ;
+ if (!stralloc_catb(sa, (char const *)k->x, k->xlen)) return 0 ;
l->curve = k->curve ;
l->x = sa->len - k->xlen ;
l->xlen = k->xlen ;
diff --git a/src/sbearssl/sbearssl_ec_skey_to.c b/src/sbearssl/sbearssl_ec_skey_to.c
index 54b059c..7cba7ba 100644
--- a/src/sbearssl/sbearssl_ec_skey_to.c
+++ b/src/sbearssl/sbearssl_ec_skey_to.c
@@ -3,9 +3,9 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_ec_skey_to (sbearssl_ec_skey const *l, br_ec_private_key *k, char const *s)
+void sbearssl_ec_skey_to (sbearssl_ec_skey const *l, br_ec_private_key *k, char *s)
{
k->curve = l->curve ;
- k->x = s + l->x ;
+ k->x = (unsigned char *)s + l->x ;
k->xlen = l->xlen ;
}
diff --git a/src/sbearssl/sbearssl_error_str.c b/src/sbearssl/sbearssl_error_str.c
index 7e1e22c..7d2fd21 100644
--- a/src/sbearssl/sbearssl_error_str.c
+++ b/src/sbearssl/sbearssl_error_str.c
@@ -265,7 +265,7 @@ static struct error_s errors[] =
BR_ERR_X509_BAD_BOOLEAN,
"Decoding error: BOOLEAN value has invalid length."
" (BR_ERR_X509_BAD_BOOLEAN)"
- }
+ },
{
BR_ERR_X509_OVERFLOW,
"Decoding error: value is off-limits."
diff --git a/src/sbearssl/sbearssl_pem_push.c b/src/sbearssl/sbearssl_pem_push.c
index b4903de..cd9eba5 100644
--- a/src/sbearssl/sbearssl_pem_push.c
+++ b/src/sbearssl/sbearssl_pem_push.c
@@ -16,11 +16,11 @@ int sbearssl_pem_push (br_pem_decoder_context *ctx, char const *s, size_t len, s
s += tlen ; len -= tlen ;
switch (br_pem_decoder_event(ctx))
{
- case BR_PEM_BEGIN_OBJ ;
+ case BR_PEM_BEGIN_OBJ :
po->name = blah->sa->len ;
if (!stralloc_cats(blah->sa, br_pem_decoder_name(ctx)) || !stralloc_0(blah->sa)) return -1 ;
po->data = blah->sa->len ;
- br_pem_decoder_setdest(&ctx, &sbearssl_append, blah) ;
+ br_pem_decoder_setdest(ctx, &sbearssl_append, blah) ;
*inobj = 1 ;
break ;
case BR_PEM_END_OBJ :
diff --git a/src/sbearssl/sbearssl_pkey_from.c b/src/sbearssl/sbearssl_pkey_from.c
index e9745e8..a1d1076 100644
--- a/src/sbearssl/sbearssl_pkey_from.c
+++ b/src/sbearssl/sbearssl_pkey_from.c
@@ -5,15 +5,15 @@
#include <skalibs/stralloc.h>
#include <s6-networking/sbearssl.h>
-int sbearssl_pkey_from (sbearssl_pkey *l, br_x509_key const *k, stralloc *sa)
+int sbearssl_pkey_from (sbearssl_pkey *l, br_x509_pkey const *k, stralloc *sa)
{
switch (k->key_type)
{
case BR_KEYTYPE_RSA :
- if (!sbearssl_rsa_pkey_from(&l->data.rsa, &k->key.rsa, sa) return 0 ;
+ if (!sbearssl_rsa_pkey_from(&l->data.rsa, &k->key.rsa, sa)) return 0 ;
break ;
case BR_KEYTYPE_EC :
- if (!sbearssl_ec_pkey_from(&l->data.ec, &k->key.ec, sa) return 0 ;
+ if (!sbearssl_ec_pkey_from(&l->data.ec, &k->key.ec, sa)) return 0 ;
break ;
default :
return (errno = EINVAL, 0) ;
diff --git a/src/sbearssl/sbearssl_pkey_to.c b/src/sbearssl/sbearssl_pkey_to.c
index 491901b..54570aa 100644
--- a/src/sbearssl/sbearssl_pkey_to.c
+++ b/src/sbearssl/sbearssl_pkey_to.c
@@ -4,7 +4,7 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-int sbearssl_pkey_to (sbearssl_pkey const *l, br_x509_pkey *k, char const *s)
+int sbearssl_pkey_to (sbearssl_pkey const *l, br_x509_pkey *k, char *s)
{
switch (l->type)
{
diff --git a/src/sbearssl/sbearssl_rsa_pkey_from.c b/src/sbearssl/sbearssl_rsa_pkey_from.c
index a991f0c..3032bb3 100644
--- a/src/sbearssl/sbearssl_rsa_pkey_from.c
+++ b/src/sbearssl/sbearssl_rsa_pkey_from.c
@@ -6,12 +6,12 @@
int sbearssl_rsa_pkey_from (sbearssl_rsa_pkey *l, br_rsa_public_key const *k, stralloc *sa)
{
- if (!stralloc_readyplus(k->nlen + k->elen)) return 0 ;
+ if (!stralloc_readyplus(sa, k->nlen + k->elen)) return 0 ;
l->n = sa->len ;
- stralloc_catb(sa, k->n, k->nlen) ;
+ stralloc_catb(sa, (char const *)k->n, k->nlen) ;
l->nlen = k->nlen ;
l->e = sa->len ;
- stralloc_catb(sa, k->e, k->elen) ;
+ stralloc_catb(sa, (char const *)k->e, k->elen) ;
l->elen = k->elen ;
return 1 ;
}
diff --git a/src/sbearssl/sbearssl_rsa_pkey_to.c b/src/sbearssl/sbearssl_rsa_pkey_to.c
index 13d567e..2f80997 100644
--- a/src/sbearssl/sbearssl_rsa_pkey_to.c
+++ b/src/sbearssl/sbearssl_rsa_pkey_to.c
@@ -3,10 +3,10 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_rsa_pkey_ro (sbearssl_rsa_pkey const *l, br_rsa_public_key *k, char const *s)
+void sbearssl_rsa_pkey_to (sbearssl_rsa_pkey const *l, br_rsa_public_key *k, char *s)
{
- k->n = s + l->n ;
+ k->n = (unsigned char *)s + l->n ;
k->nlen = l->nlen ;
- k->e = s + l->e ;
+ k->e = (unsigned char *)s + l->e ;
k->elen = l->elen ;
}
diff --git a/src/sbearssl/sbearssl_rsa_skey_from.c b/src/sbearssl/sbearssl_rsa_skey_from.c
index 3e6a04b..c9f1c0c 100644
--- a/src/sbearssl/sbearssl_rsa_skey_from.c
+++ b/src/sbearssl/sbearssl_rsa_skey_from.c
@@ -7,22 +7,22 @@
int sbearssl_rsa_skey_from (sbearssl_rsa_skey *l, br_rsa_private_key const *k, stralloc *sa)
{
- if (!stralloc_readyplus(k->plen + k->qlen + k->dplen + k->dqlen + k->iqlen)) return 0 ;
+ if (!stralloc_readyplus(sa, k->plen + k->qlen + k->dplen + k->dqlen + k->iqlen)) return 0 ;
l->n_bitlen = k->n_bitlen ;
l->p = sa->len ;
- stralloc_catb(sa, k->p, k->plen) ;
+ stralloc_catb(sa, (char const *)k->p, k->plen) ;
l->plen = k->plen ;
l->q = sa->len ;
- stralloc_catb(sa, k->q, k->qlen) ;
+ stralloc_catb(sa, (char const *)k->q, k->qlen) ;
l->qlen = k->qlen ;
l->dp = sa->len ;
- stralloc_catb(sa, k->dp, k->dplen) ;
+ stralloc_catb(sa, (char const *)k->dp, k->dplen) ;
l->dplen = k->dplen ;
l->dq = sa->len ;
- stralloc_catb(sa, k->dq, k->dqlen) ;
+ stralloc_catb(sa, (char const *)k->dq, k->dqlen) ;
l->dqlen = k->dqlen ;
l->iq = sa->len ;
- stralloc_catb(sa, k->iq, k->iqlen) ;
+ stralloc_catb(sa, (char const *)k->iq, k->iqlen) ;
l->iqlen = k->iqlen ;
return 1 ;
}
diff --git a/src/sbearssl/sbearssl_rsa_skey_to.c b/src/sbearssl/sbearssl_rsa_skey_to.c
index 3c4139b..93c90b0 100644
--- a/src/sbearssl/sbearssl_rsa_skey_to.c
+++ b/src/sbearssl/sbearssl_rsa_skey_to.c
@@ -3,17 +3,17 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_rsa_skey (sbearssl_rsa_skey const *l, br_rsa_private_key *k, char const *s)
+void sbearssl_rsa_skey_to (sbearssl_rsa_skey const *l, br_rsa_private_key *k, char *s)
{
k->n_bitlen = l->n_bitlen ;
- k->p = s + l->p ;
+ k->p = (unsigned char *)s + l->p ;
k->plen = l->plen ;
- k->q = s + l->q ;
+ k->q = (unsigned char *)s + l->q ;
k->qlen = l->qlen ;
- k->dp = s + l->dp ;
+ k->dp = (unsigned char *)s + l->dp ;
k->dplen = l->dplen ;
- k->dq = s + l->dq ;
+ k->dq = (unsigned char *)s + l->dq ;
k->dqlen = l->dqlen ;
- k->iq = s + l->iq ;
+ k->iq = (unsigned char *)s + l->iq ;
k->iqlen = l->iqlen ;
}
diff --git a/src/sbearssl/sbearssl_run.c b/src/sbearssl/sbearssl_run.c
index af221b5..3ea4a95 100644
--- a/src/sbearssl/sbearssl_run.c
+++ b/src/sbearssl/sbearssl_run.c
@@ -31,30 +31,30 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
unsigned int state = br_ssl_engine_current_state(ctx) ;
int r ;
- tain_add_g(&deadline, isopen[0] && isopen[1] && state & (BR_SSL_SENDAPP | BR_SSL_REVREC) ? tto : &tain_infinite_relative) ;
+ tain_add_g(&deadline, fds[0] >= 0 && fds[2] >= 0 && state & (BR_SSL_SENDAPP | BR_SSL_RECVREC) ? tto : &tain_infinite_relative) ;
- if (fds[0] >= 0 && st & BR_SSL_SENDAPP)
+ if (fds[0] >= 0 && state & BR_SSL_SENDAPP)
{
x[j].fd = fds[0] ;
x[j].events = IOPAUSE_READ ;
xindex[0] = j++ ;
}
else xindex[0] = 4 ;
- if (fds[1] >= 0 && st & BR_SSL_RECVAPP)
+ if (fds[1] >= 0 && state & BR_SSL_RECVAPP)
{
x[j].fd = fds[1] ;
x[j].events = IOPAUSE_WRITE ;
xindex[1] = j++ ;
}
else xindex[1] = 4 ;
- if (fds[2] >= 0 && st & BR_SSL_RECVREC)
+ if (fds[2] >= 0 && state & BR_SSL_RECVREC)
{
x[j].fd = fds[2] ;
x[j].events = IOPAUSE_READ ;
xindex[2] = j++ ;
}
else xindex[2] = 4 ;
- if (fds[3] >= 0 && st & BR_SSL_SENDREC)
+ if (fds[3] >= 0 && state & BR_SSL_SENDREC)
{
x[j].fd = fds[3] ;
x[j].events = IOPAUSE_WRITE ;
@@ -68,7 +68,7 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
else if (!r)
{
fd_close(fds[0]) ; fds[0] = -1 ;
- br_ssl_engine_close(&ctx) ;
+ br_ssl_engine_close(ctx) ;
continue ;
}
@@ -82,8 +82,8 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
if (state & BR_SSL_RECVAPP && x[xindex[1]].revents & IOPAUSE_WRITE)
{
size_t len ;
- char const *s = br_ssl_engine_recvapp_buf(ctx, &len) ;
- size_t w = allwrite(fds[1], s, len) ;
+ unsigned char const *s = br_ssl_engine_recvapp_buf(ctx, &len) ;
+ size_t w = allwrite(fds[1], (char const *)s, len) ;
if (!w)
{
if (!error_isagain(errno))
@@ -106,8 +106,8 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
if (state & BR_SSL_SENDREC && x[xindex[3]].revents & IOPAUSE_WRITE)
{
size_t len ;
- char const *s = br_ssl_engine_sendrec_buf(ctx, &len) ;
- size_t w = allwrite(fds[3], s, len) ;
+ unsigned char const *s = br_ssl_engine_sendrec_buf(ctx, &len) ;
+ size_t w = allwrite(fds[3], (char const *)s, len) ;
if (!w)
{
if (!error_isagain(errno))
@@ -131,8 +131,8 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
if (state & BR_SSL_SENDAPP & x[xindex[0]].revents & IOPAUSE_READ)
{
size_t len ;
- char *s = br_ssl_engine_sendapp_buf(ctx, &len) ;
- size_t w = allread(fds[0], s, len) ;
+ unsigned char *s = br_ssl_engine_sendapp_buf(ctx, &len) ;
+ size_t w = allread(fds[0], (char *)s, len) ;
if (!w)
{
if (!error_isagain(errno))
@@ -160,8 +160,8 @@ int sbearssl_run (br_ssl_engine_context *ctx, int *fds, unsigned int verbosity,
if (state & BR_SSL_RECVREC & x[xindex[2]].revents & IOPAUSE_READ)
{
size_t len ;
- char *s = br_ssl_engine_recvrec_buf(ctx, &len) ;
- size_t w = allread(fds[2], s, len) ;
+ unsigned char *s = br_ssl_engine_recvrec_buf(ctx, &len) ;
+ size_t w = allread(fds[2], (char *)s, len) ;
if (!w)
{
if (!error_isagain(errno))
diff --git a/src/sbearssl/sbearssl_s6tlsc.c b/src/sbearssl/sbearssl_s6tlsc.c
index a8a6582..8bc8f65 100644
--- a/src/sbearssl/sbearssl_s6tlsc.c
+++ b/src/sbearssl/sbearssl_s6tlsc.c
@@ -13,35 +13,37 @@
#include <skalibs/random.h>
#include <s6-networking/sbearssl.h>
-int sbearssl_s6tlsc (char const *const *argv, char const *const *envp, tain_t const *tto, uint32_t preoptions, uint32_t options, uid_t uid, gid_t gid, unsigned int verbosity, int *sfd)
+int sbearssl_s6tlsc (char const *const *argv, char const *const *envp, tain_t const *tto, uint32_t preoptions, uint32_t options, uid_t uid, gid_t gid, unsigned int verbosity, char const *servername, int *sfd)
{
int fds[4] = { sfd[0], sfd[1], sfd[0], sfd[1] } ;
stralloc storage = STRALLOC_ZERO ;
genalloc tas = GENALLOC_ZERO ;
- size_t chainlen ;
- int r ;
+ size_t talen ;
if (preoptions & 1)
strerr_dief1x(100, "client certificates are not supported by BearSSL yet") ;
- x = env_get2(envp, "CADIR") ;
- if (x)
- r = sbearssl_ta_readdir(x, &tas, &storage) ;
- else
{
- x = env_get2(envp, "CAFILE") ;
- if (!x) strerr_dienotset(100, "CADIR or CAFILE") ;
- r = sbearssl_ta_readfile(x, &tas, &storage) ;
- }
+ int r ;
+ char const *x = env_get2(envp, "CADIR") ;
+ if (x)
+ r = sbearssl_ta_readdir(x, &tas, &storage) ;
+ else
+ {
+ x = env_get2(envp, "CAFILE") ;
+ if (!x) strerr_dienotset(100, "CADIR or CAFILE") ;
+ r = sbearssl_ta_readfile(x, &tas, &storage) ;
+ }
- if (r < 0)
- strerr_diefu2sys(111, "read trust anchors in ", x) ;
- else if (r)
- strerr_diefu4x(96, "read trust anchors in ", x, ": ", sbearssl_error_str(r)) ;
+ if (r < 0)
+ strerr_diefu2sys(111, "read trust anchors in ", x) ;
+ else if (r)
+ strerr_diefu4x(96, "read trust anchors in ", x, ": ", sbearssl_error_str(r)) ;
- talen = genalloc_len(sbearssl_ta, &tas) ;
- if (!talen)
- strerr_dief2x(96, "no trust anchor found in ", x) ;
+ talen = genalloc_len(sbearssl_ta, &tas) ;
+ if (!talen)
+ strerr_dief2x(96, "no trust anchor found in ", x) ;
+ }
{
unsigned char buf[BR_SSL_BUFSIZE_BIDI] ;
@@ -59,7 +61,7 @@ int sbearssl_s6tlsc (char const *const *argv, char const *const *envp, tain_t co
if (!random_init())
strerr_diefu1sys(111, "initialize random generator") ;
- random_string(buf, 32) ;
+ random_string((char *)buf, 32) ;
br_ssl_engine_inject_entropy(&cc.eng, buf, 32) ;
random_finish() ;
@@ -68,7 +70,8 @@ int sbearssl_s6tlsc (char const *const *argv, char const *const *envp, tain_t co
if (uid && setuid(uid) < 0) strerr_diefu1sys(111, "setuid") ;
br_ssl_engine_set_buffer(&cc.eng, buf, sizeof(buf), 1) ;
- br_ssl_client_reset(&cc) ;
+ if (!br_ssl_client_reset(&cc, servername, 0))
+ strerr_diefu2x(97, "reset client context: ", sbearssl_error_str(br_ssl_engine_last_error(&cc.eng))) ;
{
int wstat ;
diff --git a/src/sbearssl/sbearssl_s6tlsd.c b/src/sbearssl/sbearssl_s6tlsd.c
index 1bc1114..1198349 100644
--- a/src/sbearssl/sbearssl_s6tlsd.c
+++ b/src/sbearssl/sbearssl_s6tlsd.c
@@ -62,12 +62,12 @@ int sbearssl_s6tlsd (char const *const *argv, char const *const *envp, tain_t co
switch (skey.type)
{
case BR_KEYTYPE_RSA :
- sbearssl_rsa_skey_to(&skey.rsa, &key.rsa, storage.s) ;
+ sbearssl_rsa_skey_to(&skey.data.rsa, &key.rsa, storage.s) ;
br_ssl_server_init_full_rsa(&sc, chain, chainlen, &key.rsa) ;
break ;
case BR_KEYTYPE_EC :
- sbearssl_ec_skey_to(&skey.ec, &key.ec, storage.s) ;
- br_ssl_server_init_full_ec(&sc, chain, chainlen, &key.ec) ;
+ sbearssl_ec_skey_to(&skey.data.ec, &key.ec, storage.s) ;
+ br_ssl_server_init_full_ec(&sc, chain, chainlen, BR_KEYTYPE_EC, &key.ec) ;
break ;
default :
strerr_dief1x(96, "unsupported private key type") ;
@@ -75,7 +75,7 @@ int sbearssl_s6tlsd (char const *const *argv, char const *const *envp, tain_t co
if (!random_init())
strerr_diefu1sys(111, "initialize random generator") ;
- random_string(buf, 32) ;
+ random_string((char *)buf, 32) ;
br_ssl_engine_inject_entropy(&sc.eng, buf, 32) ;
random_finish() ;
diff --git a/src/sbearssl/sbearssl_skey_from.c b/src/sbearssl/sbearssl_skey_from.c
index 26b2788..b1bc938 100644
--- a/src/sbearssl/sbearssl_skey_from.c
+++ b/src/sbearssl/sbearssl_skey_from.c
@@ -10,10 +10,10 @@ int sbearssl_skey_from (sbearssl_skey *l, br_skey const *k, stralloc *sa)
switch (k->type)
{
case BR_KEYTYPE_RSA :
- if (!sbearssl_rsa_skey_from(&l->data.rsa, &k->data.rsa, sa) return 0 ;
+ if (!sbearssl_rsa_skey_from(&l->data.rsa, &k->data.rsa, sa)) return 0 ;
break ;
case BR_KEYTYPE_EC :
- if (!sbearssl_ec_pkey_from(&l->data.ec, &k->data.ec, sa) return 0 ;
+ if (!sbearssl_ec_skey_from(&l->data.ec, &k->data.ec, sa)) return 0 ;
break ;
default :
return (errno = EINVAL, 0) ;
diff --git a/src/sbearssl/sbearssl_skey_readfile.c b/src/sbearssl/sbearssl_skey_readfile.c
index 64ac28d..d5cf2b5 100644
--- a/src/sbearssl/sbearssl_skey_readfile.c
+++ b/src/sbearssl/sbearssl_skey_readfile.c
@@ -22,17 +22,17 @@ static int decode_key (sbearssl_skey *key, char const *s, size_t len, stralloc *
{
case 0 : return br_skey_decoder_last_error(&ctx) ;
case BR_KEYTYPE_RSA :
- if (!sbearssl_rsa_skey_from(&key->data.rsa, ctx.key.rsa, sa) return -1 ;
+ if (!sbearssl_rsa_skey_from(&key->data.rsa, &ctx.key.rsa, sa)) return -1 ;
break ;
case BR_KEYTYPE_EC :
- if (!sbearssl_ec_skey_from(&key->data.ec, ctx.key.ec, sa) return -1 ;
+ if (!sbearssl_ec_skey_from(&key->data.ec, &ctx.key.ec, sa)) return -1 ;
break ;
}
key->type = ktype ;
return 0 ;
}
-int sbearssl_skey_readfile (char const *fn, sbearssl_skey *key, stralloc *sa) ;
+int sbearssl_skey_readfile (char const *fn, sbearssl_skey *key, stralloc *sa)
{
char buf[MAXKEYFILESIZE] ;
stralloc tmp = STRALLOC_ZERO ;
@@ -40,10 +40,10 @@ int sbearssl_skey_readfile (char const *fn, sbearssl_skey *key, stralloc *sa) ;
sbearssl_pemobject *p ;
size_t n ;
size_t i = 0 ;
- int r = openreadnclose(fn, buf, MAKKEYFILESIZE) ;
+ int r = openreadnclose(fn, buf, MAXKEYFILESIZE) ;
if (r < 0) return r ;
n = r ;
- if (sbearssl_isder(buf, n)) return decode_key(key, buf, n) ;
+ if (sbearssl_isder((unsigned char *)buf, n)) return decode_key(key, buf, n, sa) ;
r = sbearssl_pem_decode_from_string(buf, n, &list, &tmp) ;
if (r) return r ;
p = genalloc_s(sbearssl_pemobject, &list) ;
@@ -66,6 +66,6 @@ int sbearssl_skey_readfile (char const *fn, sbearssl_skey *key, stralloc *sa) ;
r = -1 ; errno = EINVAL ;
fail:
stralloc_free(&tmp) ;
- genalloc_free(sbearssl_pemobject, list) ;
+ genalloc_free(sbearssl_pemobject, &list) ;
return r ;
}
diff --git a/src/sbearssl/sbearssl_skey_to.c b/src/sbearssl/sbearssl_skey_to.c
index 9886606..b588578 100644
--- a/src/sbearssl/sbearssl_skey_to.c
+++ b/src/sbearssl/sbearssl_skey_to.c
@@ -4,15 +4,15 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-int sbearssl_skey_to (sbearssl_skey const *l, br_skey *k, char const *s)
+int sbearssl_skey_to (sbearssl_skey const *l, br_skey *k, char *s)
{
switch (l->type)
{
case BR_KEYTYPE_RSA :
- sbearssl_rsa_pkey_to(&l->data.rsa, &k->data.rsa, s) ;
+ sbearssl_rsa_skey_to(&l->data.rsa, &k->data.rsa, s) ;
break ;
case BR_KEYTYPE_EC :
- sbearssl_ec_pkey_to(&l->data.ec, &k->data.ec, s) ;
+ sbearssl_ec_skey_to(&l->data.ec, &k->data.ec, s) ;
break ;
default :
return (errno = EINVAL, 0) ;
diff --git a/src/sbearssl/sbearssl_ta_cert.c b/src/sbearssl/sbearssl_ta_cert.c
index d8f26e5..82019ef 100644
--- a/src/sbearssl/sbearssl_ta_cert.c
+++ b/src/sbearssl/sbearssl_ta_cert.c
@@ -5,6 +5,7 @@
#include <bearssl.h>
#include <skalibs/stralloc.h>
#include <s6-networking/sbearssl.h>
+#include "sbearssl-internal.h"
int sbearssl_ta_cert (sbearssl_ta *ta, sbearssl_cert const *cert, char const *certstorage, stralloc *tastorage)
{
@@ -13,15 +14,14 @@ int sbearssl_ta_cert (sbearssl_ta *ta, sbearssl_cert const *cert, char const *ce
struct sbearssl_strallocerr_s blah = { .sa = tastorage } ;
size_t tastoragebase = tastorage->len ;
int tastoragewasnull = !tastorage->s ;
- br_x509_pkey bpk ;
- int r ;
+ br_x509_pkey *bpk ;
+ int r = -1 ;
br_x509_decoder_init(&ctx, &sbearssl_append, &blah) ;
br_x509_decoder_push(&ctx, certstorage + cert->data, cert->datalen) ;
- if (blah->err)
+ if (blah.err)
{
- r = -1 ;
- errno = blah->err ;
+ errno = blah.err ;
goto fail ;
}
bpk = br_x509_decoder_get_pkey(&ctx) ;
diff --git a/src/sbearssl/sbearssl_ta_from.c b/src/sbearssl/sbearssl_ta_from.c
index d044c27..001b958 100644
--- a/src/sbearssl/sbearssl_ta_from.c
+++ b/src/sbearssl/sbearssl_ta_from.c
@@ -9,8 +9,8 @@ int sbearssl_ta_from (sbearssl_ta *l, br_x509_trust_anchor const *k, stralloc *s
{
size_t sabase = sa->len ;
int sawasnull = !sa->s ;
- sbearssl_ta ta = { .dn = sa->len, .dnlen = k->dn_len, .flags = k.flags } ;
- if (!stralloc_catb(sa, k->dn, k->dn_len)) return 0 ;
+ sbearssl_ta ta = { .dn = sa->len, .dnlen = k->dn_len, .flags = k->flags } ;
+ if (!stralloc_catb(sa, (char const *)k->dn, k->dn_len)) return 0 ;
if (!sbearssl_pkey_from(&ta.pkey, &k->pkey, sa)) goto fail ;
*l = ta ;
return 1 ;
diff --git a/src/sbearssl/sbearssl_ta_readdir.c b/src/sbearssl/sbearssl_ta_readdir.c
index 9821dd2..3d01dc8 100644
--- a/src/sbearssl/sbearssl_ta_readdir.c
+++ b/src/sbearssl/sbearssl_ta_readdir.c
@@ -8,6 +8,7 @@
#include <skalibs/direntry.h>
#include <skalibs/djbunix.h>
#include <s6-networking/sbearssl.h>
+#include "sbearssl-internal.h"
int sbearssl_ta_readdir (char const *dirfn, genalloc *taga, stralloc *tasa)
{
diff --git a/src/sbearssl/sbearssl_ta_readfile_internal.c b/src/sbearssl/sbearssl_ta_readfile_internal.c
index acbba9a..70a0453 100644
--- a/src/sbearssl/sbearssl_ta_readfile_internal.c
+++ b/src/sbearssl/sbearssl_ta_readfile_internal.c
@@ -16,7 +16,7 @@ int sbearssl_ta_readfile_internal (char const *file, genalloc *taga, stralloc *t
size_t tagabase = genalloc_len(sbearssl_ta, taga) ;
int tasawasnull = !tasa->s ;
int tagawasnull = !genalloc_s(sbearssl_ta, taga) ;
- int r = sbearssl_cert_read(file, certga, certsa) ;
+ int r = sbearssl_cert_readfile(file, certga, certsa) ;
sbearssl_cert *p = genalloc_s(sbearssl_cert, certga) ;
size_t n = genalloc_len(sbearssl_cert, certga) ;
if (r) return r ;
diff --git a/src/sbearssl/sbearssl_ta_to.c b/src/sbearssl/sbearssl_ta_to.c
index 4714b47..8c37119 100644
--- a/src/sbearssl/sbearssl_ta_to.c
+++ b/src/sbearssl/sbearssl_ta_to.c
@@ -3,9 +3,9 @@
#include <bearssl.h>
#include <s6-networking/sbearssl.h>
-void sbearssl_ta_to (sbearssl_ta const *sta, br_x509_trust_anchor *bta, char const *s)
+void sbearssl_ta_to (sbearssl_ta const *sta, br_x509_trust_anchor *bta, char *s)
{
- bta->dn = s + sta->dn ;
+ bta->dn = (unsigned char *)s + sta->dn ;
bta->dn_len = sta->dnlen ;
bta->flags = sta->flags ;
sbearssl_pkey_to(&sta->pkey, &bta->pkey, s) ;
diff --git a/src/stls/stls_s6tlsc.c b/src/stls/stls_s6tlsc.c
index 7fd4325..3f8e9cd 100644
--- a/src/stls/stls_s6tlsc.c
+++ b/src/stls/stls_s6tlsc.c
@@ -24,7 +24,7 @@ int stls_s6tlsc (char const *const *argv, char const *const *envp, tain_t const
if (tls_init() < 0) strerr_diefu1sys(111, "tls_init") ;
cfg = tls_config_new() ;
- if (!cfg) strerr_diefu1sys(111, "tls_config_new")
+ if (!cfg) strerr_diefu1sys(111, "tls_config_new") ;
x = env_get2(envp, "CADIR") ;
if (x)
@@ -63,7 +63,7 @@ int stls_s6tlsc (char const *const *argv, char const *const *envp, tain_t const
diecfg(cfg, "tls_config_set_dheparams") ;
if (tls_config_set_ecdhecurve(cfg, "auto") < 0)
- diecfg("tls_config_set_ecdhecurve") ;
+ diecfg(cfg, "tls_config_set_ecdhecurve") ;
tls_config_verify(cfg) ;
tls_config_set_protocols(cfg, TLS_PROTOCOLS_DEFAULT) ;
@@ -71,7 +71,7 @@ int stls_s6tlsc (char const *const *argv, char const *const *envp, tain_t const
ctx = tls_client() ;
if (!ctx) strerr_diefu1sys(111, "tls_client") ;
- if (tls_configure(ctx, cfg) < 0) diectx(97, ctx, "tls_configure) ;
+ if (tls_configure(ctx, cfg) < 0) diectx(97, ctx, "tls_configure") ;
tls_config_free(cfg) ;
pid = child_spawn2(argv[0], argv, envp, fds) ;
@@ -80,7 +80,7 @@ int stls_s6tlsc (char const *const *argv, char const *const *envp, tain_t const
if (uid && setuid(uid) < 0) strerr_diefu1sys(111, "setuid") ;
if (tls_accept_fds(ctx, &cctx, fds[2], fds[3]) < 0)
- diectx(ctx, "tls_accept_fds") ;
+ diectx(97, ctx, "tls_accept_fds") ;
tls_free(ctx) ;
diff --git a/src/stls/stls_s6tlsd.c b/src/stls/stls_s6tlsd.c
index f6d5e7c..dcee5f4 100644
--- a/src/stls/stls_s6tlsd.c
+++ b/src/stls/stls_s6tlsd.c
@@ -24,7 +24,7 @@ int stls_s6tlsd (char const *const *argv, char const *const *envp, tain_t const
if (tls_init() < 0) strerr_diefu1sys(111, "tls_init") ;
cfg = tls_config_new() ;
- if (!cfg) strerr_diefu1sys(111, "tls_config_new")
+ if (!cfg) strerr_diefu1sys(111, "tls_config_new") ;
x = env_get2(envp, "CAFILE") ;
if (x)
@@ -57,7 +57,7 @@ int stls_s6tlsd (char const *const *argv, char const *const *envp, tain_t const
diecfg(cfg, "tls_config_set_dheparams") ;
if (tls_config_set_ecdhecurve(cfg, "auto") < 0)
- diecfg("tls_config_set_ecdhecurve") ;
+ diecfg(cfg, "tls_config_set_ecdhecurve") ;
if (preoptions & 1) tls_config_verify_client(cfg) ;
else tls_config_verify_client_optional(cfg) ;
@@ -76,7 +76,7 @@ int stls_s6tlsd (char const *const *argv, char const *const *envp, tain_t const
if (uid && setuid(uid) < 0) strerr_diefu1sys(111, "setuid") ;
if (tls_accept_fds(ctx, &cctx, fds[2], fds[3]) < 0)
- diectx(ctx, "tls_accept_fds") ;
+ diectx(97, ctx, "tls_accept_fds") ;
tls_free(ctx) ;