summaryrefslogtreecommitdiff
path: root/src/sbearssl/sbearssl_rsa_skey_from.c
blob: c9f1c0cd9c22235aac7def0f62edfccaa3cd0fa4 (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
26
27
28
/* ISC license. */

#include <sys/types.h>
#include <bearssl.h>
#include <skalibs/stralloc.h>
#include <s6-networking/sbearssl.h>

int sbearssl_rsa_skey_from (sbearssl_rsa_skey *l, br_rsa_private_key const *k, stralloc *sa)
{
  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, (char const *)k->p, k->plen) ;
  l->plen = k->plen ;
  l->q = sa->len ;
  stralloc_catb(sa, (char const *)k->q, k->qlen) ;
  l->qlen = k->qlen ;
  l->dp = sa->len ;
  stralloc_catb(sa, (char const *)k->dp, k->dplen) ;
  l->dplen = k->dplen ;
  l->dq = sa->len ;
  stralloc_catb(sa, (char const *)k->dq, k->dqlen) ;
  l->dqlen = k->dqlen ;
  l->iq = sa->len ;
  stralloc_catb(sa, (char const *)k->iq, k->iqlen) ;
  l->iqlen = k->iqlen ;
  return 1 ;
}