FFmpeg
Functions
asfcrypt.c File Reference
#include <stddef.h>
#include "libavutil/bswap.h"
#include "libavutil/des.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "libavutil/rc4.h"
#include "asfcrypt.h"

Go to the source code of this file.

Functions

static uint32_t  inverse (uint32_t v)
  find multiplicative inverse modulo 2 ^ 32 More...
 
static void  multiswap_init (const uint8_t keybuf[48], uint32_t keys[12])
  read keys from keybuf into keys More...
 
static void  multiswap_invert_keys (uint32_t keys[12])
  invert the keys so that encryption become decryption keys and the other way round. More...
 
static uint32_t  multiswap_step (const uint32_t keys[6], uint32_t v)
 
static uint32_t  multiswap_inv_step (const uint32_t keys[6], uint32_t v)
 
static uint64_t  multiswap_enc (const uint32_t keys[12], uint64_t key, uint64_t data)
  "MultiSwap" encryption More...
 
static uint64_t  multiswap_dec (const uint32_t keys[12], uint64_t key, uint64_t data)
  "MultiSwap" decryption More...
 
void  ff_asfcrypt_dec (const uint8_t key[20], uint8_t *data, int len)
 

Function Documentation

inverse()

static uint32_t inverse ( uint32_t  v )
static

find multiplicative inverse modulo 2 ^ 32

Parameters
v number to invert, must be odd!
Returns
number so that result * v = 1 (mod 2^32)

Definition at line 36 of file asfcrypt.c.

Referenced by multiswap_invert_keys().

multiswap_init()

static void multiswap_init ( const uint8_t  keybuf[48],
uint32_t  keys[12] 
)
static

read keys from keybuf into keys

Parameters
keybuf buffer containing the keys
keys output key array containing the keys for encryption in native endianness

Definition at line 55 of file asfcrypt.c.

Referenced by ff_asfcrypt_dec().

multiswap_invert_keys()

static void multiswap_invert_keys ( uint32_t  keys[12] )
static

invert the keys so that encryption become decryption keys and the other way round.

Parameters
keys key array of ints to invert

Definition at line 67 of file asfcrypt.c.

Referenced by ff_asfcrypt_dec().

multiswap_step()

static uint32_t multiswap_step ( const uint32_t  keys[6],
uint32_t  v 
)
static

Definition at line 76 of file asfcrypt.c.

Referenced by multiswap_enc().

multiswap_inv_step()

static uint32_t multiswap_inv_step ( const uint32_t  keys[6],
uint32_t  v 
)
static

Definition at line 88 of file asfcrypt.c.

Referenced by multiswap_dec().

multiswap_enc()

static uint64_t multiswap_enc ( const uint32_t  keys[12],
uint64_t  key,
uint64_t  data 
)
static

"MultiSwap" encryption

Parameters
keys 32 bit numbers in machine endianness, 0-4 and 6-10 must be inverted from decryption
key another key, this one must be the same for the decryption
data data to encrypt
Returns
encrypted data

Definition at line 108 of file asfcrypt.c.

Referenced by ff_asfcrypt_dec().

multiswap_dec()

static uint64_t multiswap_dec ( const uint32_t  keys[12],
uint64_t  key,
uint64_t  data 
)
static

"MultiSwap" decryption

Parameters
keys 32 bit numbers in machine endianness, 0-4 and 6-10 must be inverted from encryption
key another key, this one must be the same as for the encryption
data data to decrypt
Returns
decrypted data

Definition at line 132 of file asfcrypt.c.

Referenced by ff_asfcrypt_dec().

ff_asfcrypt_dec()

void ff_asfcrypt_dec ( const uint8_t  key[20],
uint8_t *  data,
int  len 
)

Definition at line 148 of file asfcrypt.c.

Referenced by asf_parse_packet(), asf_read_multiple_payload(), and asf_read_single_payload().


Generated on Sat Oct 18 2025 19:24:13 for FFmpeg by   doxygen 1.8.17

AltStyle によって変換されたページ (->オリジナル) /