FFmpeg
Loading...
Searching...
No Matches
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
 
static void multiswap_init (const uint8_t keybuf[48], uint32_t keys[12])
 read keys from keybuf into keys
 
static void multiswap_invert_keys (uint32_t keys[12])
 invert the keys so that encryption become decryption keys and the other way round.
 
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
 
static uint64_t multiswap_dec (const uint32_t keys[12], uint64_t key, uint64_t data)
 "MultiSwap" decryption
 
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
vnumber to invert, must be odd!
Returns
number so that result * v = 1 (mod 2^32)

Definition at line 36 of file asfcrypt.c.

◆ multiswap_init()

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

read keys from keybuf into keys

Parameters
keybufbuffer containing the keys
keysoutput 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
keyskey 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
keys32 bit numbers in machine endianness, 0-4 and 6-10 must be inverted from decryption
keyanother key, this one must be the same for the decryption
datadata 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
keys32 bit numbers in machine endianness, 0-4 and 6-10 must be inverted from encryption
keyanother key, this one must be the same as for the encryption
datadata 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 )