diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c index 6aeace5d6..6d732fc0f 100644 --- a/src/modules/module-raop-sink.c +++ b/src/modules/module-raop-sink.c @@ -228,8 +228,8 @@ struct impl { unsigned int do_disconnect:1; - uint8_t key[AES_CHUNK_SIZE]; /* Key for aes-cbc */ - uint8_t iv[AES_CHUNK_SIZE]; /* Initialization vector for cbc */ + uint8_t aes_key[AES_CHUNK_SIZE]; /* Key for aes-cbc */ + uint8_t aes_iv[AES_CHUNK_SIZE]; /* Initialization vector for cbc */ EVP_CIPHER_CTX *ctx; uint16_t control_port; @@ -287,7 +287,7 @@ static inline void bit_writer(uint8_t **p, int *pos, uint8_t data, int len) static int aes_encrypt(struct impl *impl, uint8_t *data, int len) { int i = len & ~0xf, clen = i; - EVP_EncryptInit(impl->ctx, EVP_aes_128_cbc(), impl->key, impl->iv); + EVP_EncryptInit(impl->ctx, EVP_aes_128_cbc(), impl->aes_key, impl->aes_iv); EVP_EncryptUpdate(impl->ctx, data, &clen, data, i); return i; } @@ -783,7 +783,7 @@ static int MD5_hash(char hash[MD5_HASH_LENGTH+1], const char *fmt, ...) return 0; } -static int rtsp_add_auth(struct impl *impl, const char *method) +static int rtsp_add_raop_auth_header(struct impl *impl, const char *method) { char auth[1024]; @@ -831,7 +831,7 @@ static int rtsp_send(struct impl *impl, const char *method, { int res; - rtsp_add_auth(impl, method); + rtsp_add_raop_auth_header(impl, method); res = pw_rtsp_client_send(impl->rtsp, method, &impl->headers->dict, content_type, content, reply, impl); @@ -1105,7 +1105,7 @@ error: return -EIO; } -static int rtsp_announce_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) +static int rtsp_raop_announce_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) { struct impl *impl = data; @@ -1205,12 +1205,12 @@ error: goto done; } -static int rtsp_do_announce(struct impl *impl) +static int rtsp_do_raop_announce(struct impl *impl) { const char *host; - uint8_t rsakey[512]; - char key[512*2]; - char iv[16*2]; + uint8_t rsa_key[512]; + char rsa_key_b64enc[512*2]; + char rsa_iv_b64enc[16*2]; int res, frames, rsa_len, ip_version; spa_autofree char *sdp = NULL; char local_ip[256]; @@ -1241,7 +1241,6 @@ static int rtsp_do_announce(struct impl *impl) if (!sdp) return -errno; break; - case CRYPTO_AUTH_SETUP: sdp = spa_aprintf("v=0\r\n" "o=iTunes %s 0 IN IP%d %s\r\n" @@ -1260,16 +1259,16 @@ static int rtsp_do_announce(struct impl *impl) break; case CRYPTO_RSA: - if ((res = pw_getrandom(impl->key, sizeof(impl->key), 0)) < 0 || - (res = pw_getrandom(impl->iv, sizeof(impl->iv), 0)) < 0) + if ((res = pw_getrandom(impl->aes_key, sizeof(impl->aes_key), 0)) < 0 || + (res = pw_getrandom(impl->aes_iv, sizeof(impl->aes_iv), 0)) < 0) return res; - rsa_len = rsa_encrypt(impl->key, 16, rsakey); + rsa_len = rsa_encrypt(impl->aes_key, 16, rsa_key); if (rsa_len < 0) return -rsa_len; - base64_encode(rsakey, rsa_len, key, '='); - base64_encode(impl->iv, 16, iv, '='); + base64_encode(rsa_key, rsa_len, rsa_key_b64enc, '='); + base64_encode(impl->aes_iv, 16, rsa_iv_b64enc, '='); sdp = spa_aprintf("v=0\r\n" "o=iTunes %s 0 IN IP%d %s\r\n" @@ -1283,7 +1282,7 @@ static int rtsp_do_announce(struct impl *impl) "a=aesiv:%s\r\n", impl->session_id, ip_version, local_ip, ip_version, host, frames, impl->info.rate, - key, iv); + rsa_key_b64enc, rsa_iv_b64enc); if (!sdp) return -errno; break; @@ -1291,19 +1290,19 @@ static int rtsp_do_announce(struct impl *impl) return -ENOTSUP; } - return rtsp_send(impl, "ANNOUNCE", "application/sdp", sdp, rtsp_announce_reply); + return rtsp_send(impl, "ANNOUNCE", "application/sdp", sdp, rtsp_raop_announce_reply); } -static int rtsp_auth_setup_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) +static int rtsp_raop_auth_setup_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) { struct impl *impl = data; pw_log_info("auth-setup status: %d", status); - return rtsp_do_announce(impl); + return rtsp_do_raop_announce(impl); } -static int rtsp_do_auth_setup(struct impl *impl) +static int rtsp_do_raop_auth_setup(struct impl *impl) { static const unsigned char content[33] = "\x01" @@ -1312,22 +1311,22 @@ static int rtsp_do_auth_setup(struct impl *impl) return pw_rtsp_client_url_send(impl->rtsp, "/auth-setup", "POST", &impl->headers->dict, "application/octet-stream", content, sizeof(content), - rtsp_auth_setup_reply, impl); + rtsp_raop_auth_setup_reply, impl); } -static int rtsp_auth_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) +static int rtsp_raop_auth_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) { struct impl *impl = data; int res = 0; - pw_log_info("auth status: %d", status); + pw_log_info("raop auth status: %d", status); switch (status) { case 200: if (impl->encryption == CRYPTO_AUTH_SETUP) - res = rtsp_do_auth_setup(impl); + res = rtsp_do_raop_auth_setup(impl); else - res = rtsp_do_announce(impl); + res = rtsp_do_raop_announce(impl); break; } return res; @@ -1351,7 +1350,7 @@ static const char *find_attr(char **tokens, const char *key) return NULL; } -static int rtsp_do_auth(struct impl *impl, const struct spa_dict *headers) +static int rtsp_do_raop_auth(struct impl *impl, const struct spa_dict *headers) { const char *str, *realm, *nonce; int n_tokens; @@ -1382,10 +1381,10 @@ static int rtsp_do_auth(struct impl *impl, const struct spa_dict *headers) impl->nonce = strdup(nonce); } - return rtsp_send(impl, "OPTIONS", NULL, NULL, rtsp_auth_reply); + return rtsp_send(impl, "OPTIONS", NULL, NULL, rtsp_raop_auth_reply); } -static int rtsp_options_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) +static int rtsp_raop_options_reply(void *data, int status, const struct spa_dict *headers, const struct pw_array *content) { struct impl *impl = data; int res = 0; @@ -1394,13 +1393,13 @@ static int rtsp_options_reply(void *data, int status, const struct spa_dict *hea switch (status) { case 401: - res = rtsp_do_auth(impl, headers); + res = rtsp_do_raop_auth(impl, headers); break; case 200: if (impl->encryption == CRYPTO_AUTH_SETUP) - res = rtsp_do_auth_setup(impl); + res = rtsp_do_raop_auth_setup(impl); else - res = rtsp_do_announce(impl); + res = rtsp_do_raop_announce(impl); break; } return res; @@ -1433,7 +1432,7 @@ static void rtsp_connected(void *data) pw_properties_set(impl->headers, "User-Agent", DEFAULT_USER_AGENT); pw_rtsp_client_send(impl->rtsp, "OPTIONS", &impl->headers->dict, - NULL, NULL, rtsp_options_reply, impl); + NULL, NULL, rtsp_raop_options_reply, impl); } static void connection_cleanup(struct impl *impl) @@ -1530,7 +1529,7 @@ static int rtsp_do_connect(struct impl *impl) if (impl->connected) { if (!impl->ready) - return rtsp_do_announce(impl); + return rtsp_do_raop_announce(impl); return 0; }