Merge commit 'b864230c49089b087eef56988a3d6a784f6f9827'
authorJames Almer <jamrial@gmail.com>
Sat, 21 Oct 2017 16:31:13 +0000 (13:31 -0300)
committerJames Almer <jamrial@gmail.com>
Sat, 21 Oct 2017 16:32:13 +0000 (13:32 -0300)
* commit 'b864230c49089b087eef56988a3d6a784f6f9827':
  rtmp: Move RTMP digest calculation to a separate file

Merged-by: James Almer <jamrial@gmail.com>
1  2 
libavformat/Makefile
libavformat/rtmpdigest.c
libavformat/rtmpproto.c

@@@ -544,26 -380,15 +544,26 @@@ OBJS-$(CONFIG_YUV4MPEGPIPE_MUXER
  
  # external libraries
  OBJS-$(CONFIG_AVISYNTH_DEMUXER)          += avisynth.o
 +OBJS-$(CONFIG_CHROMAPRINT_MUXER)         += chromaprint.o
 +OBJS-$(CONFIG_LIBGME_DEMUXER)            += libgme.o
 +OBJS-$(CONFIG_LIBMODPLUG_DEMUXER)        += libmodplug.o
 +OBJS-$(CONFIG_LIBOPENMPT_DEMUXER)        += libopenmpt.o
  OBJS-$(CONFIG_LIBRTMP)                   += librtmp.o
 +OBJS-$(CONFIG_LIBSSH_PROTOCOL)           += libssh.o
 +OBJS-$(CONFIG_LIBSMBCLIENT_PROTOCOL)     += libsmbclient.o
  
  # protocols I/O
 +OBJS-$(CONFIG_ASYNC_PROTOCOL)            += async.o
  OBJS-$(CONFIG_APPLEHTTP_PROTOCOL)        += hlsproto.o
 +OBJS-$(CONFIG_BLURAY_PROTOCOL)           += bluray.o
 +OBJS-$(CONFIG_CACHE_PROTOCOL)            += cache.o
  OBJS-$(CONFIG_CONCAT_PROTOCOL)           += concat.o
  OBJS-$(CONFIG_CRYPTO_PROTOCOL)           += crypto.o
- OBJS-$(CONFIG_FFRTMPCRYPT_PROTOCOL)      += rtmpcrypt.o rtmpdh.o
 +OBJS-$(CONFIG_DATA_PROTOCOL)             += data_uri.o
+ OBJS-$(CONFIG_FFRTMPCRYPT_PROTOCOL)      += rtmpcrypt.o rtmpdigest.o rtmpdh.o
  OBJS-$(CONFIG_FFRTMPHTTP_PROTOCOL)       += rtmphttp.o
  OBJS-$(CONFIG_FILE_PROTOCOL)             += file.o
 +OBJS-$(CONFIG_FTP_PROTOCOL)              += ftp.o
  OBJS-$(CONFIG_GOPHER_PROTOCOL)           += gopher.o
  OBJS-$(CONFIG_HLS_PROTOCOL)              += hlsproto.o
  OBJS-$(CONFIG_HTTP_PROTOCOL)             += http.o httpauth.o urldecode.o
@@@ -574,13 -399,12 +574,13 @@@ OBJS-$(CONFIG_MD5_PROTOCOL
  OBJS-$(CONFIG_MMSH_PROTOCOL)             += mmsh.o mms.o asf.o
  OBJS-$(CONFIG_MMST_PROTOCOL)             += mmst.o mms.o asf.o
  OBJS-$(CONFIG_PIPE_PROTOCOL)             += file.o
- OBJS-$(CONFIG_RTMP_PROTOCOL)             += rtmpproto.o rtmppkt.o
- OBJS-$(CONFIG_RTMPE_PROTOCOL)            += rtmpproto.o rtmppkt.o
- OBJS-$(CONFIG_RTMPS_PROTOCOL)            += rtmpproto.o rtmppkt.o
- OBJS-$(CONFIG_RTMPT_PROTOCOL)            += rtmpproto.o rtmppkt.o
- OBJS-$(CONFIG_RTMPTE_PROTOCOL)           += rtmpproto.o rtmppkt.o
- OBJS-$(CONFIG_RTMPTS_PROTOCOL)           += rtmpproto.o rtmppkt.o
 +OBJS-$(CONFIG_PROMPEG_PROTOCOL)          += prompeg.o
+ OBJS-$(CONFIG_RTMP_PROTOCOL)             += rtmpproto.o rtmpdigest.o rtmppkt.o
+ OBJS-$(CONFIG_RTMPE_PROTOCOL)            += rtmpproto.o rtmpdigest.o rtmppkt.o
+ OBJS-$(CONFIG_RTMPS_PROTOCOL)            += rtmpproto.o rtmpdigest.o rtmppkt.o
+ OBJS-$(CONFIG_RTMPT_PROTOCOL)            += rtmpproto.o rtmpdigest.o rtmppkt.o
+ OBJS-$(CONFIG_RTMPTE_PROTOCOL)           += rtmpproto.o rtmpdigest.o rtmppkt.o
+ OBJS-$(CONFIG_RTMPTS_PROTOCOL)           += rtmpproto.o rtmpdigest.o rtmppkt.o
  OBJS-$(CONFIG_RTP_PROTOCOL)              += rtpproto.o
  OBJS-$(CONFIG_SCTP_PROTOCOL)             += sctp.o
  OBJS-$(CONFIG_SRTP_PROTOCOL)             += srtpproto.o srtp.o
index 0000000,e7645d3..a9b1177
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,67 +1,67 @@@
 - * This file is part of Libav.
+ /*
+  * RTMP network protocol
+  * Copyright (c) 2009 Konstantin Shishkov
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ /**
+  * @file
+  * RTMP protocol digest
+  */
+ #include <stdint.h>
+ #include "libavutil/error.h"
+ #include "libavutil/hmac.h"
+ #include "rtmp.h"
+ int ff_rtmp_calc_digest(const uint8_t *src, int len, int gap,
+                         const uint8_t *key, int keylen, uint8_t *dst)
+ {
+     AVHMAC *hmac;
+     hmac = av_hmac_alloc(AV_HMAC_SHA256);
+     if (!hmac)
+         return AVERROR(ENOMEM);
+     av_hmac_init(hmac, key, keylen);
+     if (gap <= 0) {
+         av_hmac_update(hmac, src, len);
+     } else { //skip 32 bytes used for storing digest
+         av_hmac_update(hmac, src, gap);
+         av_hmac_update(hmac, src + gap + 32, len - gap - 32);
+     }
+     av_hmac_final(hmac, dst, 32);
+     av_hmac_free(hmac);
+     return 0;
+ }
+ int ff_rtmp_calc_digest_pos(const uint8_t *buf, int off, int mod_val,
+                             int add_val)
+ {
+     int i, digest_pos = 0;
+     for (i = 0; i < 4; i++)
+         digest_pos += buf[i + off];
+     digest_pos = digest_pos % mod_val + add_val;
+     return digest_pos;
+ }
Simple merge