ReactOS  0.4.14-dev-114-gc8cbd56
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++; \
}
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLenum src
Definition: glext.h:6340
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++; \
} \
}
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
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLenum GLsizei len
Definition: glext.h:6722
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 61 of file des_crypt.c.

Function Documentation

◆ _des_crypt_call()

int _des_crypt_call ( char ,
int  ,
struct desparams  
)

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  }
69  clnt = clnt_tp_create(NULL, CRYPT_PROG, CRYPT_VERS, nconf);
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 }
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define CRYPT_PROG
Definition: crypt.h:90
u_char des_key[8]
Definition: crypt.h:53
Definition: crypt.h:52
#define DESERR_NONE
Definition: des_crypt.h:60
u_char des_ivec[8]
Definition: crypt.h:77
struct netconfig * getnetconfig(void *handlep)
Definition: getnetconfig.c:253
bool_t(* xdrproc_t)(XDR *,...)
Definition: xdr.h:144
char * nc_protofmly
Definition: netconfig.h:14
desresp * des_crypt_1()
smooth NULL
Definition: ftsmooth.c:416
des_dir des_dir
Definition: crypt.h:54
#define bcopy(s1, s2, n)
Definition: various.h:25
bool_t xdr_desresp()
des_mode des_mode
Definition: crypt.h:55
int stat
Definition: crypt.h:78
Definition: stat.h:55
GLenum GLsizei len
Definition: glext.h:6722
#define DESERR_HWERROR
Definition: des_crypt.h:62
#define DESERR_NOHWDEVICE
Definition: des_crypt.h:61
int endnetconfig(void *handlep)
Definition: getnetconfig.c:373
_CRTIMP int __cdecl stat(const char *_Filename, struct stat *_Stat)
Definition: stat.h:345
struct desresp::@197 desbuf
Definition: crypt.h:72
#define CRYPT_VERS
Definition: crypt.h:91
struct desargs::@196 desbuf
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
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 clnt_freeres(rh, xres, resp)
Definition: clnt.h:231
void * setnetconfig()
Definition: getnetconfig.c:217
#define NC_LOOPBACK
Definition: netconfig.h:46
#define clnt_destroy(rh)
Definition: clnt.h:276
u_char des_ivec[8]
Definition: crypt.h:56

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 }
union desparams::@184 UDES
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
Definition: des.h:45
#define COPY8(src, dst)
Definition: des_crypt.c:51
u_char * UDES_buf
Definition: des.h:53
Definition: des.h:40
static int common_crypt(char *, char *, unsigned, unsigned, struct desparams *)
Definition: des_crypt.c:125
GLenum GLsizei len
Definition: glext.h:6722
#define err(...)
GLenum mode
Definition: glext.h:6217
Definition: des.h:40
Definition: path.c:42

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_call(char *, int, struct desparams *)
Definition: crypt_client.c:46
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define DES_DEVMASK
Definition: des_crypt.h:55
Definition: des.h:39
Definition: des.h:39
#define DESERR_NONE
Definition: des_crypt.h:60
#define DES_MAXDATA
Definition: des_crypt.h:49
#define DES_ENCRYPT
Definition: des_crypt.h:51
smooth NULL
Definition: ftsmooth.c:416
#define DES_SW
Definition: des_crypt.h:57
#define DES_DIRMASK
Definition: des_crypt.h:50
#define COPY8(src, dst)
Definition: des_crypt.c:51
GLenum GLsizei len
Definition: glext.h:6722
enum desdir des_dir
Definition: des.h:47
#define DESERR_HWERROR
Definition: des_crypt.h:62
GLenum mode
Definition: glext.h:6217
#define DESERR_NOHWDEVICE
Definition: des_crypt.h:61
u_char des_key[8]
Definition: des.h:46
#define DESERR_BADPARAM
Definition: des_crypt.h:63
int(* __des_crypt_LOCAL)()=0
Definition: des_crypt.c:46
Definition: path.c:42

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 }
union desparams::@184 UDES
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
Definition: des.h:45
u_char * UDES_buf
Definition: des.h:53
Definition: des.h:40
static int common_crypt(char *, char *, unsigned, unsigned, struct desparams *)
Definition: des_crypt.c:125
GLenum GLsizei len
Definition: glext.h:6722
GLenum mode
Definition: glext.h:6217
Definition: des.h:40
Definition: path.c:42

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().