ReactOS 0.4.16-dev-205-g7b2bb7e
des_crypt.c File Reference
#include <wintirpc.h>
#include <sys/types.h>
#include <rpc/types.h>
#include <rpc/des_crypt.h>
#include <rpc/des.h>
Include dependency graph for des_crypt.c:

Go to the source code of this file.

Macros

#define COPY8(src, dst)
 
#define DESCOPY(src, dst, len)
 

Functions

static int common_crypt (char *, char *, unsigned, unsigned, struct desparams *)
 
int _des_crypt_call (char *, int, struct desparams *)
 
int cbc_crypt (char *key, char *buf, unsigned len, unsigned mode, char *ivec)
 
int ecb_crypt (char *key, char *buf, unsigned len, unsigned mode)
 

Variables

int(* __des_crypt_LOCAL )()=0
 

Macro Definition Documentation

◆ COPY8

#define COPY8 (   src,
  dst 
)
Value:
{ \
char *a = (char *) dst; \
char *b = (char *) src; \
*a++ = *b++; *a++ = *b++; *a++ = *b++; *a++ = *b++; \
*a++ = *b++; *a++ = *b++; *a++ = *b++; *a++ = *b++; \
}
GLenum src
Definition: glext.h:6340
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLenum GLenum dst
Definition: glext.h:6340
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 51 of file des_crypt.c.

◆ DESCOPY

#define DESCOPY (   src,
  dst,
  len 
)
Value:
{ \
char *a = (char *) dst; \
char *b = (char *) src; \
int i; \
for (i = (int) len; i > 0; i -= 8) { \
*a++ = *b++; *a++ = *b++; *a++ = *b++; *a++ = *b++; \
*a++ = *b++; *a++ = *b++; *a++ = *b++; *a++ = *b++; \
} \
}
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248

Definition at line 61 of file des_crypt.c.

Function Documentation

◆ _des_crypt_call()

int _des_crypt_call ( char buf,
int  len,
struct desparams dparms 
)

Definition at line 46 of file crypt_client.c.

50{
51 CLIENT *clnt;
52 desresp *result_1;
53 desargs des_crypt_1_arg;
54 struct netconfig *nconf;
55 void *localhandle;
56 int stat;
57
58 nconf = NULL;
59 localhandle = setnetconfig();
60 while ((nconf = getnetconfig(localhandle)) != NULL) {
61 if (nconf->nc_protofmly != NULL &&
62 strcmp(nconf->nc_protofmly, NC_LOOPBACK) == 0)
63 break;
64 }
65 if (nconf == NULL) {
66 //warnx("getnetconfig: %s", nc_sperror());
67 return(DESERR_HWERROR);
68 }
70 if (clnt == (CLIENT *) NULL) {
71 endnetconfig(localhandle);
72 return(DESERR_HWERROR);
73 }
74 endnetconfig(localhandle);
75
76 des_crypt_1_arg.desbuf.desbuf_len = len;
77 des_crypt_1_arg.desbuf.desbuf_val = buf;
78 des_crypt_1_arg.des_dir = dparms->des_dir;
79 des_crypt_1_arg.des_mode = dparms->des_mode;
80 bcopy(dparms->des_ivec, des_crypt_1_arg.des_ivec, 8);
81 bcopy(dparms->des_key, des_crypt_1_arg.des_key, 8);
82
83 result_1 = des_crypt_1(&des_crypt_1_arg, clnt);
84 if (result_1 == (desresp *) NULL) {
85 clnt_destroy(clnt);
86 return(DESERR_HWERROR);
87 }
88
89 stat = result_1->stat;
90
91 if (result_1->stat == DESERR_NONE ||
92 result_1->stat == DESERR_NOHWDEVICE) {
93 bcopy(result_1->desbuf.desbuf_val, buf, len);
94 bcopy(result_1->des_ivec, dparms->des_ivec, 8);
95 }
96
97 clnt_freeres(clnt, (xdrproc_t)xdr_desresp, result_1);
98 clnt_destroy(clnt);
99
100 return(stat);
101}
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define stat
Definition: acwin.h:99
#define bcopy(s1, s2, n)
Definition: various.h:25
#define clnt_freeres(rh, xres, resp)
Definition: clnt.h:231
#define clnt_destroy(rh)
Definition: clnt.h:276
CLIENT * clnt_tp_create(const char *hostname, const rpcprog_t prog, const rpcvers_t vers, const struct netconfig *nconf)
Definition: clnt_generic.c:282
#define DESERR_NONE
Definition: des_crypt.h:60
#define DESERR_NOHWDEVICE
Definition: des_crypt.h:61
#define DESERR_HWERROR
Definition: des_crypt.h:62
#define NULL
Definition: types.h:112
#define CRYPT_PROG
Definition: crypt.h:90
#define CRYPT_VERS
Definition: crypt.h:91
desresp * des_crypt_1()
bool_t xdr_desresp()
int endnetconfig(void *handlep)
Definition: getnetconfig.c:373
struct netconfig * getnetconfig(void *handlep)
Definition: getnetconfig.c:253
void * setnetconfig()
Definition: getnetconfig.c:217
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define NC_LOOPBACK
Definition: netconfig.h:51
Definition: crypt.h:52
des_dir des_dir
Definition: crypt.h:54
u_char des_ivec[8]
Definition: crypt.h:56
des_mode des_mode
Definition: crypt.h:55
u_char des_key[8]
Definition: crypt.h:53
struct desargs::@205 desbuf
u_char des_ivec[8]
Definition: des.h:49
enum desmode des_mode
Definition: des.h:48
u_char des_key[8]
Definition: des.h:46
enum desdir des_dir
Definition: des.h:47
Definition: crypt.h:72
int stat
Definition: crypt.h:78
u_char des_ivec[8]
Definition: crypt.h:77
struct desresp::@206 desbuf
char * nc_protofmly
Definition: netconfig.h:19
Definition: stat.h:55
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144

Referenced by common_crypt().

◆ cbc_crypt()

int cbc_crypt ( char key,
char buf,
unsigned  len,
unsigned  mode,
char ivec 
)

Definition at line 75 of file des_crypt.c.

81{
82 int err;
83 struct desparams dp;
84
85#ifdef BROKEN_DES
86 dp.UDES.UDES_buf = buf;
87 dp.des_mode = ECB;
88#else
89 dp.des_mode = CBC;
90#endif
91 COPY8(ivec, dp.des_ivec);
92 err = common_crypt(key, buf, len, mode, &dp);
93 COPY8(dp.des_ivec, ivec);
94 return(err);
95}
static int common_crypt(char *, char *, unsigned, unsigned, struct desparams *)
Definition: des_crypt.c:125
#define COPY8(src, dst)
Definition: des_crypt.c:51
@ CBC
Definition: des.h:40
@ ECB
Definition: des.h:40
GLenum mode
Definition: glext.h:6217
#define err(...)
Definition: des.h:45
u_char * UDES_buf
Definition: des.h:53
union desparams::@193 UDES
Definition: copy.c:22

Referenced by _svcauth_des(), and authdes_marshal().

◆ common_crypt()

static int common_crypt ( char key,
char buf,
unsigned  len,
unsigned  mode,
struct desparams desp 
)
static

Definition at line 125 of file des_crypt.c.

131{
132 int desdev;
133
134 if ((len % 8) != 0 || len > DES_MAXDATA) {
135 return(DESERR_BADPARAM);
136 }
137 desp->des_dir =
139
140 desdev = mode & DES_DEVMASK;
141 COPY8(key, desp->des_key);
142 /*
143 * software
144 */
145 if (__des_crypt_LOCAL != NULL) {
146 if (!__des_crypt_LOCAL(buf, len, desp)) {
147 return (DESERR_HWERROR);
148 }
149 } else {
150 if (!_des_crypt_call(buf, len, desp)) {
151 return (DESERR_HWERROR);
152 }
153 }
154 return(desdev == DES_SW ? DESERR_NONE : DESERR_NOHWDEVICE);
155}
int(* __des_crypt_LOCAL)()=0
Definition: des_crypt.c:46
int _des_crypt_call(char *, int, struct desparams *)
Definition: crypt_client.c:46
#define DES_SW
Definition: des_crypt.h:57
#define DES_DIRMASK
Definition: des_crypt.h:50
#define DES_ENCRYPT
Definition: des_crypt.h:51
#define DES_MAXDATA
Definition: des_crypt.h:49
#define DES_DEVMASK
Definition: des_crypt.h:55
#define DESERR_BADPARAM
Definition: des_crypt.h:63
@ DECRYPT
Definition: des.h:39
@ ENCRYPT
Definition: des.h:39

Referenced by cbc_crypt(), and ecb_crypt().

◆ ecb_crypt()

int ecb_crypt ( char key,
char buf,
unsigned  len,
unsigned  mode 
)

Definition at line 102 of file des_crypt.c.

107{
108 struct desparams dp;
109
110#ifdef BROKEN_DES
111 dp.UDES.UDES_buf = buf;
112 dp.des_mode = CBC;
113#else
114 dp.des_mode = ECB;
115#endif
116 return(common_crypt(key, buf, len, mode, &dp));
117}

Referenced by _svcauth_des(), authdes_marshal(), and authdes_validate().

Variable Documentation

◆ __des_crypt_LOCAL

int(* __des_crypt_LOCAL) ()=0 ( )

Definition at line 46 of file des_crypt.c.

Referenced by common_crypt().