Signed-off-by: Sebastian Andrzej Siewior <sebast...@breakpoint.cc> --- src/plugins/airplay/raop_client.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/src/plugins/airplay/raop_client.c b/src/plugins/airplay/raop_client.c index 17097e0..5310f6f 100644 --- a/src/plugins/airplay/raop_client.c +++ b/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'); -- 2.9.3 -- _______________________________________________ Xmms2-devel mailing list Xmms2-devel@lists.xmms2.org https://lists.xmms2.org/cgi-bin/mailman/listinfo/xmms2-devel