summaryrefslogtreecommitdiff
path: root/packages/extra/users/testpass.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/extra/users/testpass.pp')
-rw-r--r--packages/extra/users/testpass.pp101
1 files changed, 0 insertions, 101 deletions
diff --git a/packages/extra/users/testpass.pp b/packages/extra/users/testpass.pp
deleted file mode 100644
index c7437ef845..0000000000
--- a/packages/extra/users/testpass.pp
+++ /dev/null
@@ -1,101 +0,0 @@
-Program TestPass;
-
-{Test the user's password}
-{$DEFINE DEBUG}
-
-uses shadow, pwd, strings, crypt_h, cmem;
-
-Var
- strUserName, Password : String;
- sEntry : PPasswordFileEntry;
- pEntry : PPasswd;
-
-Const
- Err_NoErr = 0;
- Err_NoUser = 1;
- Err_WrongPass = 2;
- NoUser = '*NO USER*';
-
-Function UserEncPass(User: String): String;
-Var
- A : Array[0..255] of char;
-Begin
- A := strUserName;
- {$IFDEF DEBUG}
- Writeln('User name is ',A);
- {$ENDIF}
- sEntry := getspnam(A);
- If sEntry = nil then
- Begin
- {$IFDEF DEBUG}
- Writeln('No shadow entry');
- {$ENDIF}
- pEntry := getpwnam(A);
- If pEntry = nil then
- Begin
- {$IFDEF DEBUG}
- Writeln('No passwd entry');
- {$ENDIF}
- UserEncPass := NoUser
- End
- End;
- if sEntry <> nil then UserEncPass := sEntry^.sp_pwdp;
- if pEntry <> nil then UserEncPass := pEntry^.pw_passwd
-End;
-
-Function CheckPass(User, Pass: String): Integer;
-Var
- EncPass, ResultPass, SSalt : String;
- PCPass, PCSalt, PCResult : Array[0..255] of Char;
- I : Integer;
-Begin
- EncPass := UserEncPass(User);
- {$IFDEF DEBUG}
- Writeln('Encrypted PW is : ',EncPass);
- {$ENDIF}
- If EncPass = NoUser then
- Begin
- CheckPass := Err_NoUser;
- {$IFDEF DEBUG}
- Writeln('No user named ',User,'.');
- {$ENDIF}
- Exit
- End;
- PCPass := Pass;
- If Copy(EncPass,1,3) = '$1$' then
- Begin
- I := 4;
- SSalt := '$1$';
- Repeat
- SSalt := SSalt + EncPass[I];
- Inc(I)
- Until EncPass[I] = '$';
- PCSalt := SSalt
- End
- else
- PCSalt := Copy(EncPass,1,2);
- {$IFDEF DEBUG}
- Writeln('Salt is : ',PCSalt);
- {$ENDIF}
- PCResult := crypt(PCPass, PCSalt);
- ResultPass := StrPas(PCResult);
- {$IFDEF DEBUG}
- Writeln('From passwd/shadow : ',EncPass);
- Writeln('From crypt : ',ResultPass);
- {$ENDIF}
- If ResultPass = EncPass then
- CheckPass := Err_NoErr
- else
- CheckPass := Err_WrongPass
-End;
-
-Begin
- Write('User name : ');
- Readln(strUserName);
- Write('Password : ');
- Readln(Password);
- If CheckPass(strUserName, Password) = Err_NoErr then
- Writeln('User authentication succeeded')
- else
- Writeln('User autentication failed.');
-End.