LCOV - code coverage report
Current view: top level - libavformat - rtmpdigest.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 18 0.0 %
Date: 2017-12-18 13:19:42 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /*
       2             :  * RTMP network protocol
       3             :  * Copyright (c) 2009 Konstantin Shishkov
       4             :  *
       5             :  * This file is part of FFmpeg.
       6             :  *
       7             :  * FFmpeg is free software; you can redistribute it and/or
       8             :  * modify it under the terms of the GNU Lesser General Public
       9             :  * License as published by the Free Software Foundation; either
      10             :  * version 2.1 of the License, or (at your option) any later version.
      11             :  *
      12             :  * FFmpeg is distributed in the hope that it will be useful,
      13             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      14             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      15             :  * Lesser General Public License for more details.
      16             :  *
      17             :  * You should have received a copy of the GNU Lesser General Public
      18             :  * License along with FFmpeg; if not, write to the Free Software
      19             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      20             :  */
      21             : 
      22             : /**
      23             :  * @file
      24             :  * RTMP protocol digest
      25             :  */
      26             : 
      27             : #include <stdint.h>
      28             : 
      29             : #include "libavutil/error.h"
      30             : #include "libavutil/hmac.h"
      31             : 
      32             : #include "rtmp.h"
      33             : 
      34           0 : int ff_rtmp_calc_digest(const uint8_t *src, int len, int gap,
      35             :                         const uint8_t *key, int keylen, uint8_t *dst)
      36             : {
      37             :     AVHMAC *hmac;
      38             : 
      39           0 :     hmac = av_hmac_alloc(AV_HMAC_SHA256);
      40           0 :     if (!hmac)
      41           0 :         return AVERROR(ENOMEM);
      42             : 
      43           0 :     av_hmac_init(hmac, key, keylen);
      44           0 :     if (gap <= 0) {
      45           0 :         av_hmac_update(hmac, src, len);
      46             :     } else { //skip 32 bytes used for storing digest
      47           0 :         av_hmac_update(hmac, src, gap);
      48           0 :         av_hmac_update(hmac, src + gap + 32, len - gap - 32);
      49             :     }
      50           0 :     av_hmac_final(hmac, dst, 32);
      51             : 
      52           0 :     av_hmac_free(hmac);
      53             : 
      54           0 :     return 0;
      55             : }
      56             : 
      57           0 : int ff_rtmp_calc_digest_pos(const uint8_t *buf, int off, int mod_val,
      58             :                             int add_val)
      59             : {
      60           0 :     int i, digest_pos = 0;
      61             : 
      62           0 :     for (i = 0; i < 4; i++)
      63           0 :         digest_pos += buf[i + off];
      64           0 :     digest_pos = digest_pos % mod_val + add_val;
      65             : 
      66           0 :     return digest_pos;
      67             : }

Generated by: LCOV version 1.13