diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2026-04-13 03:32:51 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2026-04-13 03:32:51 +0000 |
| commit | 030078b7bf67a4307623f1a5c58284561ff64a56 (patch) | |
| tree | 908d840523cf84fad55753a1dc16cee31a1a0d65 /src/sbearssl/sbearssl_x509_small_init_full_options.c | |
| parent | c2ffcd960ba55570fb701de2b9f4e2ad6e1d628d (diff) | |
| download | s6-networking-030078b7bf67a4307623f1a5c58284561ff64a56.tar.gz | |
Implement --no-verify-cert for s6-tlsc and s6-tlsc-io
Diffstat (limited to 'src/sbearssl/sbearssl_x509_small_init_full_options.c')
| -rw-r--r-- | src/sbearssl/sbearssl_x509_small_init_full_options.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/sbearssl/sbearssl_x509_small_init_full_options.c b/src/sbearssl/sbearssl_x509_small_init_full_options.c new file mode 100644 index 0000000..ca8069b --- /dev/null +++ b/src/sbearssl/sbearssl_x509_small_init_full_options.c @@ -0,0 +1,46 @@ +/* ISC license. */ + +#include <stddef.h> +#include <stdint.h> + +#include <bearssl.h> + +#include <skalibs/tai.h> + +#include <s6-networking/sbearssl.h> + +struct eltinfo_s +{ + size_t offset ; + size_t size ; + unsigned char oid[4] ; +} ; + +static struct eltinfo_s const eltinfo[6] = +{ + { .offset = offsetof(sbearssl_dn, c), .size = sizeof(((sbearssl_dn *)0)->c), .oid = "\x03\x55\x04\x06" }, + { .offset = offsetof(sbearssl_dn, st), .size = sizeof(((sbearssl_dn *)0)->st), .oid = "\x03\x55\x04\x08" }, + { .offset = offsetof(sbearssl_dn, l), .size = sizeof(((sbearssl_dn *)0)->l), .oid = "\x03\x55\x04\x07" }, + { .offset = offsetof(sbearssl_dn, o), .size = sizeof(((sbearssl_dn *)0)->o), .oid = "\x03\x55\x04\x0a" }, + { .offset = offsetof(sbearssl_dn, ou), .size = sizeof(((sbearssl_dn *)0)->ou), .oid = "\x03\x55\x04\x0b" }, + { .offset = offsetof(sbearssl_dn, cn), .size = sizeof(((sbearssl_dn *)0)->cn), .oid = "\x03\x55\x04\x03" } +} ; + +void sbearssl_x509_small_init_full_options (sbearssl_x509_small_context *ctx, br_x509_trust_anchor *btas, size_t n, sbearssl_dn *eedn, uint8_t *eltstatus, char *eehash, uint32_t flags) +{ + ctx->vtable = &sbearssl_x509_small_vtable ; + br_x509_minimal_init_full(&ctx->minimal, btas, n) ; +#ifdef BR_FEATURE_X509_TIME_CALLBACK + br_x509_minimal_set_time_callback(&ctx->minimal, tain_secp(&STAMP), &sbearssl_x509_time_check) ; +#endif + for (unsigned int i = 0 ; i < 6 ; i++) + { + ctx->elts[i].oid = eltinfo[i].oid ; + ctx->elts[i].buf = (char *)eedn + eltinfo[i].offset ; + ctx->elts[i].len = eltinfo[i].size ; + } + br_x509_minimal_set_name_elements(&ctx->minimal, ctx->elts, 6) ; + ctx->eltstatus = eltstatus ; + ctx->eehash = eehash ; + ctx->flags = flags ; +} |
