Sample code for 30+ languages & platforms
Visual FoxPro

SSH Tunnel Credentials from OS Secure Storage

See more SSH Tunnel Examples

Demonstrates the EnableSecrets property, which enables automatic resolution of credentials from the operating system's secure storage. When enabled, password properties and methods may receive a "secret specification string" beginning with !! instead of a literal password.

Background: This is a cleaner alternative to reading a secret yourself and passing it in: with EnableSecrets on, you hand Chilkat a reference like !!my_secret_name and it fetches the actual value from the platform's secure store — Windows Credential Manager, Apple Keychain, and so on. The literal password never appears in your source or configuration, which is exactly the practice recommended throughout these examples.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loTunnel
LOCAL lnSshPort
LOCAL lcPassword
LOCAL lnListenPort
LOCAL lnWaitForThreadExit

lnSuccess = 0

*  Demonstrates the SshTunnel.EnableSecrets property, which enables automatic resolution of
*  credentials from the operating system's secure storage.

loTunnel = CreateObject('Chilkat.SshTunnel')

*  When EnableSecrets is 1, supported password properties and methods may receive a "secret
*  specification string" beginning with "!!" instead of a literal password.  Chilkat resolves the
*  secret from the OS secure store (Windows Credential Manager, Apple Keychain, etc.).
loTunnel.EnableSecrets = 1

loTunnel.DestHostname = "db.internal.example.com"
loTunnel.DestPort = 5432

lnSshPort = 22
lnSuccess = loTunnel.Connect("ssh.example.com",lnSshPort)
IF (lnSuccess = 0) THEN
    ? loTunnel.LastErrorText
    RELEASE loTunnel
    CANCEL
ENDIF

*  Pass a secret specification instead of a literal password.  Chilkat looks up the named secret
*  in the OS secure store rather than using this text directly.
lcPassword = "!!my_ssh_password_secret"
lnSuccess = loTunnel.AuthenticatePw("mySshLogin",lcPassword)
IF (lnSuccess = 0) THEN
    ? loTunnel.LastErrorText
    RELEASE loTunnel
    CANCEL
ENDIF

lnListenPort = 1080
lnSuccess = loTunnel.BeginAccepting(lnListenPort)
IF (lnSuccess = 0) THEN
    ? loTunnel.LastErrorText
    RELEASE loTunnel
    CANCEL
ENDIF

? "Authenticated using a secret from OS secure storage."

lnWaitForThreadExit = 1
lnSuccess = loTunnel.CloseTunnel(lnWaitForThreadExit)
IF (lnSuccess = 0) THEN
    ? loTunnel.LastErrorText
    RELEASE loTunnel
    CANCEL
ENDIF

RELEASE loTunnel