Merge commit 'd860a3cc0a12360a92b9ffd179a0c34413beaf88'
authorClément Bœsch <u@pkh.me>
Sat, 1 Apr 2017 13:39:57 +0000 (15:39 +0200)
committerClément Bœsch <u@pkh.me>
Sat, 1 Apr 2017 13:45:32 +0000 (15:45 +0200)
* commit 'd860a3cc0a12360a92b9ffd179a0c34413beaf88':
  crypto: Add encryption support

See 00d4013d9f841c189a2f10dd05526ca40129b880

Merged-by: Clément Bœsch <u@pkh.me>
1  2 
libavformat/crypto.c

@@@ -94,12 -91,13 +94,12 @@@ static int set_aes_arg(URLContext *h, u
                     desc, default_buf_len, BLOCKSIZE);
              return AVERROR(EINVAL);
          }
 -        *buf = av_malloc(default_buf_len);
 +        *buf = av_memdup(default_buf, default_buf_len);
          if (!*buf)
              return AVERROR(ENOMEM);
 -        memcpy(*buf, default_buf, default_buf_len);
          *buf_len = default_buf_len;
      } else if (*buf_len != BLOCKSIZE) {
-         av_log(c, AV_LOG_ERROR,
+         av_log(h, AV_LOG_ERROR,
                 "invalid %s size (%d bytes, block size is %d)\n",
                 desc, *buf_len, BLOCKSIZE);
          return AVERROR(EINVAL);
@@@ -155,13 -149,9 +153,13 @@@ static int crypto_open2(URLContext *h, 
              ret = AVERROR(ENOMEM);
              goto err;
          }
-         ret = av_aes_init(c->aes_decrypt, c->decrypt_key, BLOCKSIZE*8, 1);
+         ret = av_aes_init(c->aes_decrypt, c->decrypt_key, BLOCKSIZE * 8, 1);
          if (ret < 0)
              goto err;
 +
 +        // pass back information about the context we openned
 +        if (c->hd->is_streamed)
 +            h->is_streamed = c->hd->is_streamed;
      }
  
      if (flags & AVIO_FLAG_WRITE) {
              ret = AVERROR(ENOMEM);
              goto err;
          }
-         ret = av_aes_init(c->aes_encrypt, c->encrypt_key, BLOCKSIZE*8, 0);
+         ret = av_aes_init(c->aes_encrypt, c->encrypt_key, BLOCKSIZE * 8, 0);
          if (ret < 0)
              goto err;
 +        // for write, we must be streamed
 +        // - linear write only for crytpo aes-128-cbc
 +        h->is_streamed = 1;
      }
  
-     c->pad_len = 0;
 -    h->is_streamed = 1;
--
  err:
      return ret;
  }