bool GetConsolePassword(PASSWORD_TYPE Type,const wchar *FileName,SecPassword *Password) { Alarm(); while (true) { if (Type==PASSWORD_GLOBAL) eprintf(L"\n%s: ",St(MAskPsw)); else eprintf(St(MAskPswFor),FileName); wchar PlainPsw[MAXPASSWORD]; GetPasswordText(PlainPsw,ASIZE(PlainPsw)); if (*PlainPsw==0 && Type==PASSWORD_GLOBAL) return false; if (Type==PASSWORD_GLOBAL) { eprintf(St(MReAskPsw)); wchar CmpStr[MAXPASSWORD]; GetPasswordText(CmpStr,ASIZE(CmpStr)); if (*CmpStr==0 || wcscmp(PlainPsw,CmpStr)!=0) { eprintf(St(MNotMatchPsw)); cleandata(PlainPsw,sizeof(PlainPsw)); cleandata(CmpStr,sizeof(CmpStr)); continue; } cleandata(CmpStr,sizeof(CmpStr)); } Password->Set(PlainPsw); cleandata(PlainPsw,sizeof(PlainPsw)); break; } return true; }
bool GetPassword(PASSWORD_TYPE Type,const char *FileName,char *Password,int MaxLength) { Alarm(); while (true) { char PromptStr[256]; #if defined(_EMX) || defined(_BEOS) strcpy(PromptStr,St(MAskPswEcho)); #else strcpy(PromptStr,St(MAskPsw)); #endif if (Type!=PASSWORD_GLOBAL) { strcat(PromptStr,St(MFor)); strcat(PromptStr,PointToName(FileName)); } eprintf("\n%s: ",PromptStr); GetPasswordText(Password,MaxLength); if (*Password==0 && Type==PASSWORD_GLOBAL) return(false); if (Type==PASSWORD_GLOBAL) { strcpy(PromptStr,St(MReAskPsw)); eprintf(PromptStr); char CmpStr[256]; GetPasswordText(CmpStr,sizeof(CmpStr)); if (*CmpStr==0 || strcmp(Password,CmpStr)!=0) { strcpy(PromptStr,St(MNotMatchPsw)); /* #ifdef _WIN_32 CharToOem(PromptStr,PromptStr); #endif */ eprintf(PromptStr); memset(Password,0,MaxLength); memset(CmpStr,0,sizeof(CmpStr)); continue; } memset(CmpStr,0,sizeof(CmpStr)); } break; } return(true); }
bool GetPassword(PASSWORD_TYPE Type,const char *FileName,char *Password,int MaxLength) { Alarm(); while (true) { char PromptStr[NM+256]; #if defined(_EMX) || defined(_BEOS) strcpy(PromptStr,St(MAskPswEcho)); #else strcpy(PromptStr,St(MAskPsw)); #endif if (Type!=PASSWORD_GLOBAL) { strcat(PromptStr,St(MFor)); char *NameOnly=PointToName(FileName); if (strlen(PromptStr)+strlen(NameOnly)<ASIZE(PromptStr)) strcat(PromptStr,NameOnly); } eprintf("\n%s: ",PromptStr); GetPasswordText(Password,MaxLength); if (*Password==0 && Type==PASSWORD_GLOBAL) return(false); if (Type==PASSWORD_GLOBAL) { eprintf(St(MReAskPsw)); char CmpStr[MAXPASSWORD]; GetPasswordText(CmpStr,ASIZE(CmpStr)); if (*CmpStr==0 || strcmp(Password,CmpStr)!=0) { eprintf(St(MNotMatchPsw)); memset(Password,0,MaxLength); memset(CmpStr,0,sizeof(CmpStr)); continue; } memset(CmpStr,0,sizeof(CmpStr)); } break; } return(true); }