LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
Macros | Functions
des.c File Reference
#include "des.h"
#include <string.h>
Include dependency graph for des.c:

Go to the source code of this file.

Macros

#define XYSSL_DES_C
 
#define GET_ULONG_BE(n, b, i)
 
#define PUT_ULONG_BE(n, b, i)
 
#define DES_IP(X, Y)
 
#define DES_FP(X, Y)
 
#define DES_ROUND(X, Y)
 
#define SWAP(a, b)   { unsigned long t = a; a = b; b = t; t = 0; }
 

Functions

void des_setkey_enc (des_context *ctx, unsigned char key[8])
 DES key schedule (56-bit, encryption) More...
 
void des_setkey_dec (des_context *ctx, unsigned char key[8])
 DES key schedule (56-bit, decryption) More...
 
void des3_set2key_enc (des3_context *ctx, unsigned char key[16])
 Triple-DES key schedule (112-bit, encryption) More...
 
void des3_set2key_dec (des3_context *ctx, unsigned char key[16])
 Triple-DES key schedule (112-bit, decryption) More...
 
void des3_set3key_enc (des3_context *ctx, unsigned char key[24])
 Triple-DES key schedule (168-bit, encryption) More...
 
void des3_set3key_dec (des3_context *ctx, unsigned char key[24])
 Triple-DES key schedule (168-bit, decryption) More...
 
void des_crypt_ecb (des_context *ctx, unsigned char input[8], unsigned char output[8])
 DES-ECB block encryption/decryption. More...
 
void des_crypt_cbc (des_context *ctx, int mode, int length, unsigned char iv[8], unsigned char *input, unsigned char *output)
 DES-CBC buffer encryption/decryption. More...
 
void des3_crypt_ecb (des3_context *ctx, unsigned char input[8], unsigned char output[8])
 3DES-ECB block encryption/decryption More...
 
void des3_crypt_cbc (des3_context *ctx, int mode, int length, unsigned char iv[8], unsigned char *input, unsigned char *output)
 3DES-CBC buffer encryption/decryption More...
 

Macro Definition Documentation

◆ DES_FP

#define DES_FP (   X,
 
)
Value:
{ \
X = ((X << 31) | (X >> 1)) & 0xFFFFFFFF; \
T = (X ^ Y) & 0xAAAAAAAA; X ^= T; Y ^= T; \
Y = ((Y << 31) | (Y >> 1)) & 0xFFFFFFFF; \
T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \
T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \
T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \
T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \
}

Definition at line 259 of file des.c.

◆ DES_IP

#define DES_IP (   X,
 
)
Value:
{ \
T = ((X >> 4) ^ Y) & 0x0F0F0F0F; Y ^= T; X ^= (T << 4); \
T = ((X >> 16) ^ Y) & 0x0000FFFF; Y ^= T; X ^= (T << 16); \
T = ((Y >> 2) ^ X) & 0x33333333; X ^= T; Y ^= (T << 2); \
T = ((Y >> 8) ^ X) & 0x00FF00FF; X ^= T; Y ^= (T << 8); \
Y = ((Y << 1) | (Y >> 31)) & 0xFFFFFFFF; \
T = (X ^ Y) & 0xAAAAAAAA; Y ^= T; X ^= T; \
X = ((X << 1) | (X >> 31)) & 0xFFFFFFFF; \
}

Definition at line 245 of file des.c.

◆ DES_ROUND

#define DES_ROUND (   X,
 
)
Value:
{ \
T = *SK++ ^ X; \
Y ^= SB8[ (T ) & 0x3F ] ^ \
SB6[ (T >> 8) & 0x3F ] ^ \
SB4[ (T >> 16) & 0x3F ] ^ \
SB2[ (T >> 24) & 0x3F ]; \
\
T = *SK++ ^ ((X << 28) | (X >> 4)); \
Y ^= SB7[ (T ) & 0x3F ] ^ \
SB5[ (T >> 8) & 0x3F ] ^ \
SB3[ (T >> 16) & 0x3F ] ^ \
SB1[ (T >> 24) & 0x3F ]; \
}
#define SK(sense)
Definition: ata.c:420

Definition at line 273 of file des.c.

◆ GET_ULONG_BE

#define GET_ULONG_BE (   n,
  b,
 
)
Value:
{ \
(n) = ( (unsigned long) (b)[(i) ] << 24 ) \
| ( (unsigned long) (b)[(i) + 1] << 16 ) \
| ( (unsigned long) (b)[(i) + 2] << 8 ) \
| ( (unsigned long) (b)[(i) + 3] ); \
}

Definition at line 41 of file des.c.

◆ PUT_ULONG_BE

#define PUT_ULONG_BE (   n,
  b,
 
)
Value:
{ \
(b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
(b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
(b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
(b)[(i) + 3] = (unsigned char) ( (n) ); \
}

Definition at line 51 of file des.c.

◆ SWAP

#define SWAP (   a,
 
)    { unsigned long t = a; a = b; b = t; t = 0; }

Definition at line 288 of file des.c.

◆ XYSSL_DES_C

#define XYSSL_DES_C

Definition at line 29 of file des.c.

Function Documentation

◆ des3_crypt_cbc()

void des3_crypt_cbc ( des3_context ctx,
int  mode,
int  length,
unsigned char  iv[8],
unsigned char *  input,
unsigned char *  output 
)

3DES-CBC buffer encryption/decryption

Parameters
ctx3DES context
modeDES_ENCRYPT or DES_DECRYPT
lengthlength of the input data
ivinitialization vector (updated after use)
inputbuffer holding the input data
outputbuffer holding the output data

Definition at line 595 of file des.c.

◆ des3_crypt_ecb()

void des3_crypt_ecb ( des3_context ctx,
unsigned char  input[8],
unsigned char  output[8] 
)

3DES-ECB block encryption/decryption

Parameters
ctx3DES context
input64-bit input block
output64-bit output block

Definition at line 554 of file des.c.

◆ des3_set2key_dec()

void des3_set2key_dec ( des3_context ctx,
unsigned char  key[16] 
)

Triple-DES key schedule (112-bit, decryption)

Parameters
ctx3DES context to be initialized
key16-byte secret key

Definition at line 422 of file des.c.

◆ des3_set2key_enc()

void des3_set2key_enc ( des3_context ctx,
unsigned char  key[16] 
)

Triple-DES key schedule (112-bit, encryption)

Parameters
ctx3DES context to be initialized
key16-byte secret key

Definition at line 411 of file des.c.

◆ des3_set3key_dec()

void des3_set3key_dec ( des3_context ctx,
unsigned char  key[24] 
)

Triple-DES key schedule (168-bit, decryption)

Parameters
ctx3DES context to be initialized
key24-byte secret key

Definition at line 467 of file des.c.

◆ des3_set3key_enc()

void des3_set3key_enc ( des3_context ctx,
unsigned char  key[24] 
)

Triple-DES key schedule (168-bit, encryption)

Parameters
ctx3DES context to be initialized
key24-byte secret key

Definition at line 456 of file des.c.

◆ des_crypt_cbc()

void des_crypt_cbc ( des_context ctx,
int  mode,
int  length,
unsigned char  iv[8],
unsigned char *  input,
unsigned char *  output 
)

DES-CBC buffer encryption/decryption.

Parameters
ctxDES context
modeDES_ENCRYPT or DES_DECRYPT
lengthlength of the input data
ivinitialization vector (updated after use)
inputbuffer holding the input data
outputbuffer holding the output data

Definition at line 507 of file des.c.

◆ des_crypt_ecb()

void des_crypt_ecb ( des_context ctx,
unsigned char  input[8],
unsigned char  output[8] 
)

DES-ECB block encryption/decryption.

Parameters
ctxDES context
input64-bit input block
output64-bit output block

Definition at line 478 of file des.c.

◆ des_setkey_dec()

void des_setkey_dec ( des_context ctx,
unsigned char  key[8] 
)

DES key schedule (56-bit, decryption)

Parameters
ctxDES context to be initialized
key8-byte secret key

Definition at line 370 of file des.c.

◆ des_setkey_enc()

void des_setkey_enc ( des_context ctx,
unsigned char  key[8] 
)

DES key schedule (56-bit, encryption)

Parameters
ctxDES context to be initialized
key8-byte secret key

Definition at line 362 of file des.c.