/[radius]/radius/lib/cryptpass.c
ViewVC logotype

Diff of /radius/lib/cryptpass.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by gray, Sat Nov 1 13:44:40 2003 UTC revision 1.7 by gray, Sun Nov 2 21:45:11 2003 UTC
# Line 254  encrypt_tunnel_password(VALUE_PAIR *pair Line 254  encrypt_tunnel_password(VALUE_PAIR *pair
254  {  {
255          u_char *encr_text;          u_char *encr_text;
256          size_t encr_size;          size_t encr_size;
257          unsigned short salt;          char *plaintext;
258                    size_t length = strlen(password);
259          salt = htons( (((long)pair ^ *(long *)vector) & 0xffff) | 0x8000 );          unsigned short salt = htons( (((long)pair ^ *(long *)vector) & 0xffff)
260                                         | 0x8000 );
261                    
262            plaintext = emalloc(length+2);
263            plaintext[0] = length;
264            memcpy(&plaintext[1], password, length + 1);
265          encrypt_text(&encr_text, &encr_size,          encrypt_text(&encr_text, &encr_size,
266                       password, vector, secret,                       plaintext, vector, secret,
267                       &salt, 2);                       (u_char*) &salt, 2);
268            efree(plaintext);
269          pair->avp_strlength = 4 + encr_size;          
270            pair->avp_strlength = 3 + encr_size;
271          pair->avp_strvalue = emalloc(pair->avp_strlength);          pair->avp_strvalue = emalloc(pair->avp_strlength);
272          pair->avp_strvalue[0] = tag;          pair->avp_strvalue[0] = tag;
273          pair->avp_strvalue[1] = strlen(password);          memcpy(&pair->avp_strvalue[1], &salt, 2);
274          memcpy(&pair->avp_strvalue[2], &salt, 2);          memcpy(&pair->avp_strvalue[3], encr_text, encr_size);
         memcpy(&pair->avp_strvalue[4], encr_text, encr_size);  
275          efree(encr_text);          efree(encr_text);
276  }  }
277    
# Line 279  decrypt_tunnel_password(char *password, Line 283  decrypt_tunnel_password(char *password,
283                          char *vector,     /* Request authenticator */                          char *vector,     /* Request authenticator */
284                          char *secret)     /* Shared secret */                          char *secret)     /* Shared secret */
285  {  {
286            size_t length;
287          decrypt_text(password,          decrypt_text(password,
288                       pair->avp_strvalue + 4,                       pair->avp_strvalue + 3,
289                       pair->avp_strlength - 4,                       pair->avp_strlength - 3,
290                       vector,                       vector,
291                       secret,                       secret,
292                       &pair->avp_strvalue[2],                       &pair->avp_strvalue[1],
293                       2);                       2);
294          password[pair->avp_strvalue[1]] = 0;          length = *(u_char*) password;
295            memmove(password, password + 1, length);
296            password[length] = 0;
297          *tag = pair->avp_strvalue[0];          *tag = pair->avp_strvalue[0];
298  }  }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26