*============================================ * Program: DOCRYPTO.PRG * cCipher = x.EncryptStream("This is easy", ; * "look Ma, no hands!") *============================================ x = CREATEOBJECT("docrypto") ? x.EncryptStream("This is easy", "look Ma, no hands!") return DEFINE CLASS docrypto AS Session && OLEPUBLIC PROTECTED oCrypto oCrypto = "" MinimumPasswordLength = 5 ********************************************* PROCEDURE Init this.oCrypto = NEWOBJECT("_cryptapi", Home(1) + "\Ffc\_crypt.vcx") IF VARTYPE(this.oCrypto) != "O" RETURN .f. ENDIF ENDPROC ********************************************* PROCEDURE EncryptStream(tcString as Character, tcPassword as Character) as Character IF PCOUNT() < 2 RETURN "Usage: EncryptStream(String, Passphrase)" ENDIF LOCAL lcEncryptedStream IF EMPTY(tcString) RETURN "Nothing to do!" ENDIF IF LEN(tcPassWord) < nMinimumPasswordLength RETURN "Passphrase must >= " + TRANSFORM(nMinimumPasswordLength) + " chars!" ENDIF IF This.oCrypto.EncryptSessionStreamString(tcString, tcPassWord, @lcEncryptedStream) RETURN lcEncryptedStream ELSE RETURN .F. ENDIF ENDPROC ********************************************* PROCEDURE DecryptStream(tcEncryptedString as Character, tcPassWord as Character) as Character IF PCOUNT() < 2 RETURN "Usage: DecryptStream(EncryptedString, Passphrase)" ENDIF LOCAL lcDecryptedString IF EMPTY(tcEncryptedString) RETURN "Nothing to do!" ENDIF IF LEN(tcPassWord) < nMinimumPasswordLength RETURN "Passphrase must >= " + TRANSFORM(nMinimumPasswordLength) + " chars!" ENDIF IF This.oCrypto.DecryptSessionStreamString(tcEncryptedString, tcPassWord, @lcDecryptedString) RETURN lcDecryptedString ELSE RETURN .F. ENDIF ENDPROC ********************************************* PROCEDURE Destroy this.oCrypto = .null. ENDPROC ********************************************* PROCEDURE Error(nError, cMethod, nLine) RETURN MESSAGE() + " - (" + TRANSFORM(ERROR()) + ")" ENDPROC ENDDEFINEHTH