From b8d1d0a1f43f652b19277c93a0eeb2d7432bc8a0 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> Date: Tue, 30 Aug 2016 21:28:52 +0200 Subject: OTHER: Build against openssl 1.1.0. Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> diff --git a/src/plugins/airplay/raop_client.c b/src/plugins/airplay/raop_client.c index 1d86cf3..ef113cb 100644 --- src/plugins/airplay/raop_client.c +++ src/plugins/airplay/raop_client.c @@ -135,15 +135,34 @@ raop_rsa_encrypt (guchar *text, gint len, guchar *res) 0x5e,0xf,0xc8,0x75,0x34,0x3e,0xc7,0x82,0x11,0x76,0x25,0xcd ,0xbf,0x98,0x44,0x7b}; static const guchar exp[] = {0x01, 0x00, 0x01}; + BIGNUM *n, *e; rsa = RSA_new (); - rsa->n = BN_bin2bn (mod, 256, NULL); - rsa->e = BN_bin2bn (exp, 3, NULL); + n = BN_bin2bn (mod, 256, NULL); + e = BN_bin2bn (exp, 3, NULL); + if (!rsa || !n || !e) + goto err; + +#if OPENSSL_VERSION_NUMBER < 0x10100000 + rsa->n = n; + rsa->e = e; +#else + if (!RSA_set0_key(rsa, n, e, NULL)) + goto err; +#endif size = RSA_public_encrypt (len, text, res, rsa, RSA_PKCS1_OAEP_PADDING); RSA_free (rsa); return size; +err: + if (rsa) + RSA_free(rsa); + if (n) + BN_free(n); + if (e) + BN_free(e); + return 0; } static void @@ -250,6 +269,8 @@ raop_rtsp_announce (raop_client_t *rc) gint ret = RAOP_EOK; size = raop_rsa_encrypt (rc->aes_key_str, 16, enc_aes_key); + if (size == 0) + return RAOP_EFAIL; size = b64_encode_alloc (enc_aes_key, size, &key); g_strdelimit (key, "=", '\0'); -- cgit v0.10.2