#include "libavutil/blowfish.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/rc4.h"
#include "libavutil/xtea.h"
#include "internal.h"
#include "rtmp.h"
#include "rtmpdh.h"
#include "rtmpcrypt.h"
#include "url.h"
Go to the source code of this file.
| Data Structures | |
| struct | RTMPEContext | 
| Defines | |
| #define | OFFSET(x) offsetof(RTMPEContext, x) | 
| #define | DEC AV_OPT_FLAG_DECODING_PARAM | 
| Functions | |
| int | ff_rtmpe_gen_pub_key (URLContext *h, uint8_t *buf) | 
| Initialize the Diffie-Hellmann context and generate the public key. | |
| int | ff_rtmpe_compute_secret_key (URLContext *h, const uint8_t *serverdata, const uint8_t *clientdata, int type) | 
| Compute the shared secret key and initialize the RC4 encryption. | |
| static void | rtmpe8_sig (const uint8_t *in, uint8_t *out, int key_id) | 
| static void | rtmpe9_sig (const uint8_t *in, uint8_t *out, int key_id) | 
| void | ff_rtmpe_encrypt_sig (URLContext *h, uint8_t *sig, const uint8_t *digest, int type) | 
| Encrypt the signature. | |
| int | ff_rtmpe_update_keystream (URLContext *h) | 
| Update the keystream and set RC4 keys for encryption. | |
| static int | rtmpe_close (URLContext *h) | 
| static int | rtmpe_open (URLContext *h, const char *uri, int flags) | 
| static int | rtmpe_read (URLContext *h, uint8_t *buf, int size) | 
| static int | rtmpe_write (URLContext *h, const uint8_t *buf, int size) | 
| Variables | |
| static const uint8_t | rtmpe8_keys [16][16] | 
| static const uint8_t | rtmpe9_keys [16][24] | 
| static const AVOption | ffrtmpcrypt_options [] | 
| static const AVClass | ffrtmpcrypt_class | 
| URLProtocol | ff_ffrtmpcrypt_protocol | 
Definition in file rtmpcrypt.c.
| #define DEC AV_OPT_FLAG_DECODING_PARAM | 
Definition at line 313 of file rtmpcrypt.c.
| #define OFFSET | ( | x | ) | offsetof(RTMPEContext, x) | 
Definition at line 312 of file rtmpcrypt.c.
| int ff_rtmpe_compute_secret_key | ( | URLContext * | h, | |
| const uint8_t * | serverdata, | |||
| const uint8_t * | clientdata, | |||
| int | type | |||
| ) | 
Compute the shared secret key and initialize the RC4 encryption.
| h | an URLContext | |
| serverdata | server data (1536 bytes) | |
| clientdata | client data (1536 bytes) | |
| type | the position of the server digest | 
Definition at line 145 of file rtmpcrypt.c.
Referenced by rtmp_handshake().
| void ff_rtmpe_encrypt_sig | ( | URLContext * | h, | |
| uint8_t * | signature, | |||
| const uint8_t * | digest, | |||
| int | type | |||
| ) | 
Encrypt the signature.
| h | an URLContext | |
| signature | the signature to encrypt | |
| digest | the digest used for finding the encryption key | |
| type | type of encryption (8 for XTEA, 9 for Blowfish) | 
Definition at line 207 of file rtmpcrypt.c.
Referenced by rtmp_handshake().
| int ff_rtmpe_gen_pub_key | ( | URLContext * | h, | |
| uint8_t * | buf | |||
| ) | 
Initialize the Diffie-Hellmann context and generate the public key.
| h | an URLContext | |
| buf | handshake data (1536 bytes) | 
Definition at line 122 of file rtmpcrypt.c.
Referenced by rtmp_handshake().
| int ff_rtmpe_update_keystream | ( | URLContext * | h | ) | 
Update the keystream and set RC4 keys for encryption.
| h | an URLContext | 
Definition at line 223 of file rtmpcrypt.c.
Referenced by rtmp_handshake().
| static int rtmpe_close | ( | URLContext * | h | ) |  [static] | 
| static int rtmpe_open | ( | URLContext * | h, | |
| const char * | uri, | |||
| int | flags | |||
| ) |  [static] | 
Definition at line 248 of file rtmpcrypt.c.
| static int rtmpe_read | ( | URLContext * | h, | |
| uint8_t * | buf, | |||
| int | size | |||
| ) |  [static] | 
Definition at line 276 of file rtmpcrypt.c.
| static int rtmpe_write | ( | URLContext * | h, | |
| const uint8_t * | buf, | |||
| int | size | |||
| ) |  [static] | 
Definition at line 296 of file rtmpcrypt.c.
Initial value:
 {
    .name            = "ffrtmpcrypt",
    .url_open        = rtmpe_open,
    .url_read        = rtmpe_read,
    .url_write       = rtmpe_write,
    .url_close       = rtmpe_close,
    .priv_data_size  = sizeof(RTMPEContext),
    .flags           = URL_PROTOCOL_FLAG_NETWORK,
    .priv_data_class = &ffrtmpcrypt_class,
}
Definition at line 327 of file rtmpcrypt.c.
| const AVClass ffrtmpcrypt_class  [static] | 
Initial value:
 {
    .class_name = "ffrtmpcrypt",
    .item_name  = av_default_item_name,
    .option     = ffrtmpcrypt_options,
    .version    = LIBAVUTIL_VERSION_INT,
}
Definition at line 320 of file rtmpcrypt.c.
| const AVOption ffrtmpcrypt_options[]  [static] | 
Initial value:
 {
    {"ffrtmpcrypt_tunneling", "Use a HTTP tunneling connection (RTMPTE).", OFFSET(tunneling), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, DEC},
    { NULL },
}
Definition at line 315 of file rtmpcrypt.c.
| const uint8_t rtmpe8_keys[16][16]  [static] | 
| const uint8_t rtmpe9_keys[16][24]  [static] | 
 1.5.8
 1.5.8