Ruby
2.4.2p198(2017-09-14revision59899)
|
#include "ruby/missing.h"
#include "crypt.h"
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include "des_tables.c"
Go to the source code of this file.
Data Structures | |
struct | des_tables_t |
Macros | |
#define | _PASSWORD_EFMT1 '_' |
#define | numberof(array) (int)(sizeof(array) / sizeof((array)[0])) |
#define | MUST_ALIGN |
#define | INIT_DES 0 |
#define | INIT_DES 1 |
#define | TO_SIX_BIT(rslt, src) |
#define | ZERO(d, d0, d1) ((d0) = 0, (d1) = 0) |
#define | LOAD(d, d0, d1, bl) ((d0) = (bl).b32.i0, (d1) = (bl).b32.i1) |
#define | LOADREG(d, d0, d1, s, s0, s1) ((d0) = (s0), (d1) = (s1)) |
#define | OR(d, d0, d1, bl) ((d0) |= (bl).b32.i0, (d1) |= (bl).b32.i1) |
#define | STORE(s, s0, s1, bl) ((bl).b32.i0 = (s0), (bl).b32.i1 = (s1)) |
#define | DCL_BLOCK(d, d0, d1) long d0, d1 |
#define | PERM6464(d, d0, d1, cpp, p) { C_block tblk; permute((cpp),&tblk,(p),8); LOAD ((d),(d0),(d1),tblk); } |
#define | PERM3264(d, d0, d1, cpp, p) { C_block tblk; permute((cpp),&tblk,(p),4); LOAD ((d),(d0),(d1),tblk); } |
#define | A64TOI1(c) |
#define | A64TOI4(base) A64TOI1(base+0), A64TOI1(base+1), A64TOI1(base+2), A64TOI1(base+3) |
#define | A64TOI16(base) A64TOI4(base+0), A64TOI4(base+4), A64TOI4(base+8), A64TOI4(base+12) |
#define | A64TOI64(base) A64TOI16(base+0x00), A64TOI16(base+0x10), A64TOI16(base+0x20), A64TOI16(base+0x30) |
#define | des_tables ((const des_tables_t *)des_tables) |
#define | PC1ROT (des_tables->PC1ROT) |
#define | PC2ROT (des_tables->PC2ROT) |
#define | IE3264 (des_tables->IE3264) |
#define | SPE (des_tables->SPE) |
#define | CF6464 (des_tables->CF6464) |
#define | KS (data->KS) |
#define | cryptresult (data->cryptresult) |
#define | SALT salt |
#define | SPTAB(t, i) (*(const unsigned long *)((const unsigned char *)(t) + (i)*(sizeof(long)/4))) |
#define | DOXOR(x, y, i) k=B.b[(i)]; (x)^=SPTAB(SPE[0][(i)],k); (y)^=SPTAB(SPE[1][(i)],k); |
#define | CRUNCH(p0, p1, q0, q1) |
Functions | |
STATIC void | permute (const unsigned char *cp, C_block *out, register const C_block *p, int chars_in) |
STATIC void | init_des (void) |
STATIC void | init_perm (C_block perm[64/CHUNKBITS][1<< CHUNKBITS], unsigned char p[64], int chars_in, int chars_out) |
static void | des_setkey_r (const unsigned char *key, struct crypt_data *data) |
static void | des_cipher_r (const unsigned char *in, unsigned char *out, long salt, int num_iter, struct crypt_data *data) |
char * | crypt_r (const char *key, const char *setting, struct crypt_data *data) |
void | setkey_r (const char *key, struct crypt_data *data) |
void | encrypt_r (char *block, int flag, struct crypt_data *data) |
Variables | |
static const unsigned char | IP [] |
static const unsigned char | ExpandTr [] |
static const unsigned char | PC1 [] |
static const unsigned char | Rotates [] |
static const unsigned char | PC2 [] |
static const unsigned char | S [8][64] |
static const unsigned char | P32Tr [] |
static const unsigned char | CIFP [] |
static const unsigned char | itoa64 [] |
static const unsigned char | a64toi [256] |
static des_tables_t | des_tables [1] |
static const C_block | constdatablock = {{0}} |
#define A64TOI1 | ( | c | ) |
#define A64TOI64 | ( | base | ) | A64TOI16(base+0x00), A64TOI16(base+0x10), A64TOI16(base+0x20), A64TOI16(base+0x30) |
#define CF6464 (des_tables->CF6464) |
Definition at line 361 of file crypt.c.
Referenced by des_cipher_r(), encrypt_r(), and init_des().
#define CRUNCH | ( | p0, | |
p1, | |||
q0, | |||
q1 | |||
) |
Referenced by des_cipher_r().
#define cryptresult (data->cryptresult) |
Definition at line 127 of file crypt.c.
Referenced by des_setkey_r(), and permute().
#define des_tables ((const des_tables_t *)des_tables) |
#define IE3264 (des_tables->IE3264) |
Definition at line 359 of file crypt.c.
Referenced by des_cipher_r(), encrypt_r(), and init_des().
#define KS (data->KS) |
Definition at line 369 of file crypt.c.
Referenced by des_cipher_r(), and des_setkey_r().
Definition at line 123 of file crypt.c.
Referenced by des_cipher_r().
Definition at line 124 of file crypt.c.
Referenced by des_cipher_r().
#define numberof | ( | array | ) | (int)(sizeof(array) / sizeof((array)[0])) |
Definition at line 53 of file crypt.c.
Referenced by des_setkey_r(), and encrypt_r().
#define PC1ROT (des_tables->PC1ROT) |
Definition at line 357 of file crypt.c.
Referenced by des_setkey_r(), encrypt_r(), and init_des().
#define PC2ROT (des_tables->PC2ROT) |
Definition at line 358 of file crypt.c.
Referenced by des_setkey_r(), encrypt_r(), and init_des().
#define PERM3264 | ( | d, | |
d0, | |||
d1, | |||
cpp, | |||
p | |||
) | { C_block tblk; permute((cpp),&tblk,(p),4); LOAD ((d),(d0),(d1),tblk); } |
Definition at line 149 of file crypt.c.
Referenced by des_cipher_r().
#define PERM6464 | ( | d, | |
d0, | |||
d1, | |||
cpp, | |||
p | |||
) | { C_block tblk; permute((cpp),&tblk,(p),8); LOAD ((d),(d0),(d1),tblk); } |
Definition at line 147 of file crypt.c.
Referenced by des_cipher_r(), and des_setkey_r().
#define SALT salt |
#define SPE (des_tables->SPE) |
Definition at line 360 of file crypt.c.
Referenced by encrypt_r(), and init_des().
#define SPTAB | ( | t, | |
i | |||
) | (*(const unsigned long *)((const unsigned char *)(t) + (i)*(sizeof(long)/4))) |
#define STORE | ( | s, | |
s0, | |||
s1, | |||
bl | |||
) | ((bl).b32.i0 = (s0), (bl).b32.i1 = (s1)) |
Definition at line 126 of file crypt.c.
Referenced by des_cipher_r(), des_setkey_r(), and permute().
#define TO_SIX_BIT | ( | rslt, | |
src | |||
) |
Definition at line 110 of file crypt.c.
Referenced by des_cipher_r(), and init_des().
char* crypt_r | ( | const char * | key, |
const char * | setting, | ||
struct crypt_data * | data | ||
) |
Definition at line 396 of file crypt.c.
References _PASSWORD_EFMT1, a64toi, C_block::b, cryptresult, des_cipher_r(), des_setkey_r(), itoa64, and L.
Referenced by rb_str_crypt().
|
static |
|
static |
Definition at line 484 of file crypt.c.
References C_block::b, DCL_BLOCK, init_des(), KS, numberof, PC1ROT, PC2ROT, PERM6464, Rotates, and STORE.
Referenced by crypt_r(), and setkey_r().
void encrypt_r | ( | char * | block, |
int | flag, | ||
struct crypt_data * | data | ||
) |
Definition at line 835 of file crypt.c.
References C_block::b, CF6464, des_cipher_r(), IE3264, init_des(), L, main(), numberof, PC1ROT, PC2ROT, SPE, and STATIC.
Referenced by setkey_r().
STATIC void init_des | ( | void | ) |
Definition at line 634 of file crypt.c.
References CF6464, CIFP, ExpandTr, IE3264, init_perm(), IP, P32Tr, PC1, PC1ROT, PC2, PC2ROT, des_tables_t::ready, Rotates, S, SPE, STATIC, and TO_SIX_BIT.
Referenced by des_setkey_r(), and encrypt_r().
STATIC void init_perm | ( | C_block | perm[64/CHUNKBITS][1<< CHUNKBITS], |
unsigned char | p[64], | ||
int | chars_in, | ||
int | chars_out | ||
) |
Definition at line 776 of file crypt.c.
References CHUNKBITS, key, LGCHUNKBITS, setkey(), and setkey_r().
Referenced by init_des().
void setkey_r | ( | const char * | key, |
struct crypt_data * | data | ||
) |
Definition at line 807 of file crypt.c.
References C_block::b, des_setkey_r(), encrypt(), and encrypt_r().
Referenced by init_perm().
|
static |
|
static |
Definition at line 301 of file crypt.c.
Referenced by init_des().
|
static |
|
static |
Definition at line 189 of file crypt.c.
Referenced by init_des().
|
static |
Definition at line 176 of file crypt.c.
Referenced by init_des().
|
static |
|
static |
Definition at line 290 of file crypt.c.
Referenced by init_des().
|
static |
Definition at line 200 of file crypt.c.
Referenced by init_des().
|
static |
Definition at line 219 of file crypt.c.
Referenced by init_des().
|
static |
Definition at line 213 of file crypt.c.
Referenced by des_setkey_r(), and init_des().
|
static |
Definition at line 231 of file crypt.c.
Referenced by init_des().