Merge of sam_pwd_hash() function from tng.
authorTim Potter <tpot@samba.org>
Fri, 14 Sep 2001 04:34:06 +0000 (04:34 +0000)
committerTim Potter <tpot@samba.org>
Fri, 14 Sep 2001 04:34:06 +0000 (04:34 +0000)
(This used to be commit b6cb6b837ac06d8b9cb898668e69236b64a8b698)

source3/libsmb/smbdes.c

index c5dbbdf99a98121a55401a17334d13bff9361598..30a574693401d6ceadab1d517e6f47a6ab8b9640 100644 (file)
@@ -397,3 +397,20 @@ void SamOEMhash( unsigned char *data, unsigned char *key, int val)
     data[ind] = data[ind] ^ s_box[t];
   }
 }
+
+/* Decode a sam password hash into a password.  The password hash is the
+   same method used to store passwords in the NT registry.  The DES key
+   used is based on the RID of the user. */
+
+void sam_pwd_hash(unsigned int rid, const uchar *in, uchar *out, int forw)
+{
+       uchar s[14];
+
+       s[0] = s[4] = s[8] = s[12] = (uchar)(rid & 0xFF);
+       s[1] = s[5] = s[9] = s[13] = (uchar)((rid >> 8) & 0xFF);
+       s[2] = s[6] = s[10]        = (uchar)((rid >> 16) & 0xFF);
+       s[3] = s[7] = s[11]        = (uchar)((rid >> 24) & 0xFF);
+
+       smbhash(out, in, s, forw);
+       smbhash(out+8, in+8, s+7, forw);
+}