FFmpeg
Loading...
Searching...
No Matches
crypto.c File Reference
#include <inttypes.h>
#include <string.h>
#include "libavutil/aes.h"
#include "libavutil/avstring.h"
#include "libavutil/error.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "url.h"

Go to the source code of this file.

Data Structures

struct  CryptoContext
 

Macros

#define MAX_BUFFER_BLOCKS   257
 
#define BLOCKSIZE   16
 
#define OFFSET(x)
 
#define D   AV_OPT_FLAG_DECODING_PARAM
 
#define E   AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static int set_aes_arg (URLContext *h, uint8_t **buf, int *buf_len, uint8_t *default_buf, int default_buf_len, const char *desc)
 
static int crypto_open2 (URLContext *h, const char *uri, int flags, AVDictionary **options)
 
static int crypto_read (URLContext *h, uint8_t *buf, int size)
 
static int64_t crypto_seek (URLContext *h, int64_t pos, int whence)
 
static int crypto_write (URLContext *h, const unsigned char *buf, int size)
 
static int crypto_close (URLContext *h)
 

Variables

static const AVOption crypto_options []
 
static const AVClass crypto_class
 
const URLProtocol ff_crypto_protocol
 

Macro Definition Documentation

◆ MAX_BUFFER_BLOCKS

#define MAX_BUFFER_BLOCKS   257

Definition at line 33 of file crypto.c.

◆ BLOCKSIZE

#define BLOCKSIZE   16

Definition at line 34 of file crypto.c.

◆ OFFSET

#define OFFSET ( x)
Value:
offsetof(CryptoContext, x)

Definition at line 66 of file crypto.c.

◆ D

Definition at line 67 of file crypto.c.

◆ E

Definition at line 68 of file crypto.c.

Function Documentation

◆ set_aes_arg()

static int set_aes_arg ( URLContext * h,
uint8_t ** buf,
int * buf_len,
uint8_t * default_buf,
int default_buf_len,
const char * desc )
static

Definition at line 86 of file crypto.c.

Referenced by crypto_open2().

◆ crypto_open2()

static int crypto_open2 ( URLContext * h,
const char * uri,
int flags,
AVDictionary ** options )
static

Definition at line 113 of file crypto.c.

◆ crypto_read()

static int crypto_read ( URLContext * h,
uint8_t * buf,
int size )
static

Definition at line 186 of file crypto.c.

Referenced by crypto_seek().

◆ crypto_seek()

static int64_t crypto_seek ( URLContext * h,
int64_t pos,
int whence )
static

Definition at line 236 of file crypto.c.

◆ crypto_write()

static int crypto_write ( URLContext * h,
const unsigned char * buf,
int size )
static

Definition at line 330 of file crypto.c.

◆ crypto_close()

static int crypto_close ( URLContext * h)
static

Definition at line 371 of file crypto.c.

Variable Documentation

◆ crypto_options

const AVOption crypto_options[]
static
Initial value:
= {
{"key", "AES encryption/decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, .flags = D|E },
{"iv", "AES encryption/decryption initialization vector", OFFSET(iv), AV_OPT_TYPE_BINARY, .flags = D|E },
{"decryption_key", "AES decryption key", OFFSET(decrypt_key), AV_OPT_TYPE_BINARY, .flags = D },
{"decryption_iv", "AES decryption initialization vector", OFFSET(decrypt_iv), AV_OPT_TYPE_BINARY, .flags = D },
{"encryption_key", "AES encryption key", OFFSET(encrypt_key), AV_OPT_TYPE_BINARY, .flags = E },
{"encryption_iv", "AES encryption initialization vector", OFFSET(encrypt_iv), AV_OPT_TYPE_BINARY, .flags = E },
{ NULL }
}
#define E
Definition avdct.c:34
#define D
Definition avdct.c:35
#define NULL
Definition coverity.c:32
const char * key
#define OFFSET(x)
@ AV_OPT_TYPE_BINARY
Underlying C type is a uint8_t* that is either NULL or points to an array allocated with the av_mallo...
Definition opt.h:285

Definition at line 69 of file crypto.c.

◆ crypto_class

const AVClass crypto_class
static
Initial value:
= {
.class_name = "crypto",
.item_name = av_default_item_name,
.option = crypto_options,
}
static const AVOption crypto_options[]
Definition crypto.c:69
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 79 of file crypto.c.

◆ ff_crypto_protocol

const URLProtocol ff_crypto_protocol
Initial value:
= {
.name = "crypto",
.url_open2 = crypto_open2,
.url_seek = crypto_seek,
.url_read = crypto_read,
.url_write = crypto_write,
.url_close = crypto_close,
.priv_data_size = sizeof(CryptoContext),
.priv_data_class = &crypto_class,
}
#define flags(name, subs,...)
Definition cbs_h264.c:74
static int64_t crypto_seek(URLContext *h, int64_t pos, int whence)
Definition crypto.c:236
static int crypto_write(URLContext *h, const unsigned char *buf, int size)
Definition crypto.c:330
static int crypto_open2(URLContext *h, const char *uri, int flags, AVDictionary **options)
Definition crypto.c:113
static int crypto_close(URLContext *h)
Definition crypto.c:371
static const AVClass crypto_class
Definition crypto.c:79
static int crypto_read(URLContext *h, uint8_t *buf, int size)
Definition crypto.c:186
#define URL_PROTOCOL_FLAG_NESTED_SCHEME
Definition url.h:32

Definition at line 392 of file crypto.c.