diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index dd850f72ed..4f866eb76c 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -1256,7 +1256,10 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) int i; int server_pos, client_pos; uint8_t digest[32], signature[32]; - int ret, type = 0; + int ret; +#if CONFIG_FFRTMPCRYPT_PROTOCOL + int type = 0; +#endif av_log(s, AV_LOG_DEBUG, "Handshaking...\n"); @@ -1265,7 +1268,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) for (i = 9; i <= RTMP_HANDSHAKE_PACKET_SIZE; i++) tosend[i] = av_lfg_get(&rnd) >> 24; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* When the client wants to use RTMPE, we have to change the command * byte to 0x06 which means to use encrypted data and we have to set * the flash version to at least 9.0.115.0. */ @@ -1280,6 +1284,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if ((ret = ff_rtmpe_gen_pub_key(rt->stream, tosend + 1)) < 0) return ret; } +#endif client_pos = rtmp_handshake_imprint_with_digest(tosend + 1, rt->encrypted); if (client_pos < 0) @@ -1313,7 +1318,9 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) return server_pos; if (!server_pos) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL type = 1; +#endif server_pos = rtmp_validate_digest(serverdata + 1, 8); if (server_pos < 0) return server_pos; @@ -1343,7 +1350,8 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if (ret < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Compute the shared secret key sent by the server and initialize * the RC4 encryption. */ if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1, @@ -1353,6 +1361,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) /* Encrypt the signature received by the server. */ ff_rtmpe_encrypt_sig(rt->stream, signature, digest, serverdata[0]); } +#endif if (memcmp(signature, clientdata + RTMP_HANDSHAKE_PACKET_SIZE - 32, 32)) { av_log(s, AV_LOG_ERROR, "Signature mismatch\n"); @@ -1373,25 +1382,30 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) if (ret < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Encrypt the signature to be send to the server. */ ff_rtmpe_encrypt_sig(rt->stream, tosend + RTMP_HANDSHAKE_PACKET_SIZE - 32, digest, serverdata[0]); } +#endif // write reply back to the server if ((ret = ffurl_write(rt->stream, tosend, RTMP_HANDSHAKE_PACKET_SIZE)) < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Set RC4 keys for encryption and update the keystreams. */ if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0) return ret; } +#endif } else { - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Compute the shared secret key sent by the server and initialize * the RC4 encryption. */ if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1, @@ -1404,16 +1418,19 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt) serverdata[0]); } } +#endif if ((ret = ffurl_write(rt->stream, serverdata + 1, RTMP_HANDSHAKE_PACKET_SIZE)) < 0) return ret; - if (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted) { +#if CONFIG_FFRTMPCRYPT_PROTOCOL + if (rt->encrypted) { /* Set RC4 keys for encryption and update the keystreams. */ if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0) return ret; } +#endif } return 0;