/[smeserver]/rpms/ppp/sme8/ppp-2.4.4-HashorBin.patch
ViewVC logotype

Annotation of /rpms/ppp/sme8/ppp-2.4.4-HashorBin.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Tue Jun 12 20:34:43 2007 UTC (17 years ago) by slords
Branch: MAIN
CVS Tags: ppp-2_4_4-1_3_el5_sme, HEAD
Import on branch sme8 of package ppp-2.4.4-1.3.el5.sme.src.rpm

1 slords 1.1 diff -ru ppp-2.4.4.orig/pppd/chap_ms.c ppp-2.4.4+ldap/pppd/chap_ms.c
2     --- ppp-2.4.4.orig/pppd/chap_ms.c 2006-05-21 07:56:40.000000000 -0400
3     +++ ppp-2.4.4+ldap/pppd/chap_ms.c 2006-11-17 16:47:11.000000000 -0500
4     @@ -529,17 +529,73 @@
5    
6     }
7    
8     +/* From libsmb - From SAMBA */
9     +/*
10     + * Routine to get the 32 hex characters and turn them
11     + * into a 16 byte array.
12     + */
13     +int gethexpwd(unsigned char *p, unsigned char *pwd)
14     +{
15     +
16     + int i;
17     + unsigned char lonybble, hinybble;
18     + char *hexchars = "0123456789ABCDEF";
19     + char *p1, *p2;
20     +
21     + for (i = 0; i < 32; i += 2)
22     + {
23     +
24     + hinybble = toupper(p[i]);
25     + lonybble = toupper(p[i + 1]);
26     +
27     + p1 = strchr(hexchars, hinybble);
28     + p2 = strchr(hexchars, lonybble);
29     +
30     + if (!p1 || !p2)
31     + {
32     +
33     + return (0);
34     +
35     + }
36     +
37     + hinybble = (p1 - hexchars);
38     + lonybble = (p2 - hexchars);
39     +
40     + pwd[i / 2] = (hinybble << 4) | lonybble;
41     +
42     + }
43     +
44     + return (1);
45     +
46     +}
47     +
48     +/*
49     + * Hash the Unicode version of the secret (== password).
50     + * Or get the binary representation of the secret
51     + * if it already looks like a hash
52     + */
53     +void
54     +HashorBin(char secret[], int secret_len, u_char PasswordHash[])
55     +{
56     + u_char unicodePassword[MAX_NT_PASSWORD * 2];
57     + if (secret_len != 32)
58     + {
59     + ascii2unicode(secret, secret_len, unicodePassword);
60     + NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
61     + }
62     + else
63     + {
64     + gethexpwd(secret, PasswordHash);
65     + }
66     +}
67     +
68     static void
69     ChapMS_NT(u_char *rchallenge, char *secret, int secret_len,
70     u_char NTResponse[24])
71     {
72     - u_char unicodePassword[MAX_NT_PASSWORD * 2];
73     u_char PasswordHash[MD4_SIGNATURE_SIZE];
74    
75     - /* Hash the Unicode version of the secret (== password). */
76     - ascii2unicode(secret, secret_len, unicodePassword);
77     - NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
78     -
79     + HashorBin(secret, secret_len, PasswordHash);
80     ChallengeResponse(rchallenge, PasswordHash, NTResponse);
81     }
82    
83     @@ -547,16 +603,12 @@
84     ChapMS2_NT(u_char *rchallenge, u_char PeerChallenge[16], char *username,
85     char *secret, int secret_len, u_char NTResponse[24])
86     {
87     - u_char unicodePassword[MAX_NT_PASSWORD * 2];
88     u_char PasswordHash[MD4_SIGNATURE_SIZE];
89     u_char Challenge[8];
90    
91     ChallengeHash(PeerChallenge, rchallenge, username, Challenge);
92    
93     - /* Hash the Unicode version of the secret (== password). */
94     - ascii2unicode(secret, secret_len, unicodePassword);
95     - NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
96     -
97     + HashorBin(secret, secret_len, PasswordHash);
98     ChallengeResponse(Challenge, PasswordHash, NTResponse);
99     }
100    
101     @@ -637,13 +689,10 @@
102     u_char *rchallenge, char *username,
103     u_char authResponse[MS_AUTH_RESPONSE_LENGTH+1])
104     {
105     - u_char unicodePassword[MAX_NT_PASSWORD * 2];
106     u_char PasswordHash[MD4_SIGNATURE_SIZE];
107     u_char PasswordHashHash[MD4_SIGNATURE_SIZE];
108    
109     - /* Hash (x2) the Unicode version of the secret (== password). */
110     - ascii2unicode(secret, secret_len, unicodePassword);
111     - NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
112     + HashorBin(secret, secret_len, PasswordHash);
113     NTPasswordHash(PasswordHash, sizeof(PasswordHash),
114     PasswordHashHash);
115    
116     @@ -682,13 +731,10 @@
117     static void
118     Set_Start_Key(u_char *rchallenge, char *secret, int secret_len)
119     {
120     - u_char unicodePassword[MAX_NT_PASSWORD * 2];
121     u_char PasswordHash[MD4_SIGNATURE_SIZE];
122     u_char PasswordHashHash[MD4_SIGNATURE_SIZE];
123    
124     - /* Hash (x2) the Unicode version of the secret (== password). */
125     - ascii2unicode(secret, secret_len, unicodePassword);
126     - NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
127     + HashorBin(secret, secret_len, PasswordHash);
128     NTPasswordHash(PasswordHash, sizeof(PasswordHash), PasswordHashHash);
129    
130     mppe_set_keys(rchallenge, PasswordHashHash);
131     @@ -797,12 +843,10 @@
132     static void
133     SetMasterKeys(char *secret, int secret_len, u_char NTResponse[24], int IsServer)
134     {
135     - u_char unicodePassword[MAX_NT_PASSWORD * 2];
136     u_char PasswordHash[MD4_SIGNATURE_SIZE];
137     u_char PasswordHashHash[MD4_SIGNATURE_SIZE];
138     - /* Hash (x2) the Unicode version of the secret (== password). */
139     - ascii2unicode(secret, secret_len, unicodePassword);
140     - NTPasswordHash(unicodePassword, secret_len * 2, PasswordHash);
141     +
142     + HashorBin(secret, secret_len, PasswordHash);
143     NTPasswordHash(PasswordHash, sizeof(PasswordHash), PasswordHashHash);
144     mppe_set_keys2(PasswordHashHash, NTResponse, IsServer);
145     }

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed