summaryrefslogtreecommitdiff
path: root/src/sbearssl/sbearssl_x509_minimal_init_with_engine.c
blob: 1b5c7a567be6005c4c53699ab32fcf109e1870f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* ISC license. */

#include <bearssl.h>

#include <s6-networking/sbearssl.h>

void sbearssl_x509_minimal_init_with_engine (br_x509_minimal_context *xc, br_ssl_engine_context *eng, br_x509_trust_anchor const *btas, size_t n)
{
  static const br_hash_class *hashes[] =
  {
    &br_md5_vtable,
    &br_sha1_vtable,
    &br_sha224_vtable,
    &br_sha256_vtable,
    &br_sha384_vtable,
    &br_sha512_vtable
  } ;

  br_x509_minimal_init(xc, &br_sha256_vtable, btas, n) ;
  br_x509_minimal_set_rsa(xc, br_ssl_engine_get_rsavrfy(eng)) ;
  br_x509_minimal_set_ecdsa(xc, br_ssl_engine_get_ec(eng), br_ssl_engine_get_ecdsa(eng)) ;
  for (unsigned int id = br_md5_ID ; id <= br_sha512_ID ; id++)
    br_x509_minimal_set_hash(xc, id, hashes[id-1]) ;
  br_ssl_engine_set_x509(eng, &xc->vtable) ;
}