make sure this works with latest openssl

This commit is contained in:
Joris Vink 2019-10-28 09:58:58 +01:00
parent 1a9197ffeb
commit 58678ff0ad
1 changed files with 16 additions and 5 deletions

View File

@ -142,7 +142,7 @@ struct acme_order {
char *domain; char *domain;
}; };
static char *keymgr_bignum_base64(BIGNUM *); static char *keymgr_bignum_base64(const BIGNUM *);
static void keymgr_acme_init(void); static void keymgr_acme_init(void);
static void keymgr_acme_sign(struct kore_msg *, const void *); static void keymgr_acme_sign(struct kore_msg *, const void *);
@ -678,9 +678,11 @@ keymgr_ecdsa_sign(struct kore_msg *msg, const void *data, struct key *key)
static void static void
keymgr_acme_init(void) keymgr_acme_init(void)
{ {
RSA *rsa;
struct key *key; struct key *key;
char *e, *n; char *e, *n;
int needsreg; int needsreg;
const BIGNUM *be, *bn;
if (acme_provider == NULL) if (acme_provider == NULL)
return; return;
@ -703,9 +705,18 @@ keymgr_acme_init(void)
kore_log(LOG_INFO, "loaded existing ACME account key"); kore_log(LOG_INFO, "loaded existing ACME account key");
} }
/* XXX - OpenSSL 1.1.x probably denies us doing this. */ #if OPENSSL_VERSION_NUMBER >= 0x10100000L
e = keymgr_bignum_base64(key->pkey->pkey.rsa->e); rsa = EVP_PKEY_get0_RSA(key->pkey);
n = keymgr_bignum_base64(key->pkey->pkey.rsa->n); be = RSA_get0_e(rsa);
bn = RSA_get0_n(rsa);
#else
rsa = key->pkey->pkey.rsa;
be = rsa->e;
bn = rsa->n;
#endif
e = keymgr_bignum_base64(be);
n = keymgr_bignum_base64(bn);
kore_msg_send(KORE_WORKER_ACME, KORE_ACME_RSAKEY_E, e, strlen(e)); kore_msg_send(KORE_WORKER_ACME, KORE_ACME_RSAKEY_E, e, strlen(e));
kore_msg_send(KORE_WORKER_ACME, KORE_ACME_RSAKEY_N, n, strlen(n)); kore_msg_send(KORE_WORKER_ACME, KORE_ACME_RSAKEY_N, n, strlen(n));
@ -970,7 +981,7 @@ keymgr_x509_ext(X509 *x509, int extnid, const char *fmt, ...)
} }
static char * static char *
keymgr_bignum_base64(BIGNUM *bn) keymgr_bignum_base64(const BIGNUM *bn)
{ {
int len; int len;
void *buf; void *buf;