Trying to use Cryptor 5 in a Visual FoxPro 6 application. I can use the Encode() and Decode() methods successfully, but can't get the WatchDLL/Register process to work. Here's my code with some additional comments:
----------------------------------------------------------------------
Initial File Encryption (THIS WORKS):
lcDataFolder = "Data"
loCryptor = CREATEOBJECT("XitechCryptor.Cryptor")
lcPassword = "blahblahblah"
lnMethod = ENCODER_LEVEL2
lnShredPasses = 1
IF ;
loCryptor.EncodeFile(lcDataFolder+"\Resident.DBF", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS and ;
loCryptor.EncodeFile(lcDataFolder+"\Resident.FPT", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS and ;
loCryptor.EncodeFile(lcDataFolder+"\Resident.CDX", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS and ;
loCryptor.EncodeFile(lcDataFolder+"\Letter.DBF", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS and ;
loCryptor.EncodeFile(lcDataFolder+"\Letter.FPT", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS and ;
loCryptor.EncodeFile(lcDataFolder+"\Letter.CDX", lcPassword, lnMethod) = CRYPTOR_ERR_SUCCESS
*-- Delete the temporary decrypted backups
loCryptor.ShredFile(lcDataFolder+"\Resident.CRB", lnShredPasses)
loCryptor.ShredFile(lcDataFolder+"\Letter.CRB", lnShredPasses)
ELSE
MESSAGEBOX("Error: "+"Data encryption failure."+chr(13)+chr(13)+MESSAGE())
ENDIF
Return
----------------------------------------------------------------------
WatchDLL/Register Process (THIS FAILS):
public poCryptor
local lcDataFolder, lnStatus, lcPassword, lnMethod
lcDataFolder = "Data"
poCryptor = CREATEOBJECT("XitechCryptor.Cryptor")
poCryptor.Deep = .T.
poCryptor.BackupMode = 2 && Shred backup
lcPassword = "blahblahblah"
lnMethod = ENCODER_LEVEL2
*-- The WatchDLL and Register calls all return "CRYPTOR_ERR_SUCCESS"
lnStatus = poCryptor.WatchDLL("VFP6R.DLL") && for production
lnStatus = lnStatus+poCryptor.WatchDLL("VFP6.EXE") && for development
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Resident.DBF", lcPassword, lnMethod)
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Resident.FPT", lcPassword, lnMethod)
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Resident.CDX", lcPassword, lnMethod)
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Letter.DBF", lcPassword, lnMethod)
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Letter.FPT", lcPassword, lnMethod)
lnStatus = lnStatus+poCryptor.Register(lcDataFolder+"\Letter.CDX", lcPassword, lnMethod)
if lnStatus = CRYPTOR_ERR_SUCCESS
*-- Attempting to Use the tables still returns "not a table" errors
use data\resident in 0
use data\letter in 0
*-- Clean up data encryption mechanism
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Resident.DBF")
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Resident.FPT")
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Resident.CDX")
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Letter.DBF")
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Letter.FPT")
lnStatus = lnStatus+poCryptor.UnRegister(lcDataFolder+"\Letter.CDX")
release poCryptor
else
=Messagebox("Severe System Error"+chr(13)+;
"Data encryption error."+chr(13)+;
"Please contact Support Services")
endif
----------------------------------------------------------------------
GOOOOOOOO BUCS !!!!!!!!!