Procedure ValidatePassword(tcPassword) If Len(m.tcPassword) < 10 Return .F. Endif Local ix, IsValid, lcChar, punctuation, digit, upCase, lowCase Store 0 To punctuation, digit, upCase, lowCase For ix=1 To Len(m.tcPassword) lcChar = Substr(m.tcPassword,m.ix,1) Do Case Case m.lcChar $ "!@#$%^&*_-+=':;.," punctuation = m.punctuation + 1 Case Isalpha(m.lcChar) If Isupper(m.lcChar) upCase = m.upCase + 1 Else lowCase = m.lowCase + 1 Endif Case Isdigit(m.lcChar) digit = m.digit + 1 Endcase Endfor IsValid = m.punctuation >= 2 ; And m.digit >= 2 ; And m.upCase >= 2 And m.lowCase >= 2 If m.IsValid Local Array laUsed[1] Select Count(*) ; FROM passwordStore ; WHERE MyCryptor.Decrypt(passwordField) == m.tcPassword ; INTO Array laUsed IsValid = (laUsed = 0) Endif Return m.IsValid endprocCetin