table top left corner CapeSoft CryptoNite table top right corner
table left side


table top left corner   table top right corner
table left side


Version: version number
CapeSoft Software copyright


table right side
table bottom left corner table bottom table bottom right corner


table top left corner  Cryptonite Version History table top right corner
table left side

    bullet smallDownload latest version here

NOTE: CryptoNite requires StringTheory

Version 1.28 - 18 May 2012

  • Removed a possible warning from the compile.
  • Fixed a syntax error in Blowfish Class, not returning value from Encrypt method.

Version 1.27 - 17 May 2012

  • Syntax error in Blowfish class - in.out instead of in,out

Version 1.26 - 14 May 2012

  • Tweaked classes so they compile fine in Clarion 5.5.

Version 1.25 - 10 February 2012

Requires StringTheory 1.38 or later

  • Fixed: The new bfEcrypt and bfDecrypt wrappers:

    bfEncrypt Procedure (*StringTheory st, string pbKey, string pIV, long pMode=Crypto:CFB, long pPad=Crypto:PadNone, long pEnc=Crypto:EncNone), bool, proc, virtual
    bfDecrypt Procedure (*StringTheory st, string pbKey, string pIV, long pMode=Crypto:CFB, long pPad=Crypto:PadNone, long pEnc=Crypto:EncNone), bool, proc, virtual

    These two methods were not correctly handling the key being passed as a result of an undocumented Clarion built in named "pKey". This could result in the data always being encrypted and decrypted using the same key value, rather than the value passed.

    Note that this does not effect the standard bfEncrypt and bfDecrypt methods, only these two new wrapper methods.
  • Fixed: The Blowfish examples generating the same EXE name rather than seperate EXEs based on each App name.


Version 1.24 - 03 January 2012

Requires StringTheory 1.38 or later

  • Added: New defines for SafeUpdate 2.01.


Version 1.23 - 10 November 2011

Requires StringTheory 1.38 or later

  • Fixed: Compile error with the latest releases of StringTheory as a result of the .length property being renamed.
  • Fixed: Potentially incorrect reference assignment in VerifySignature
  • Changed: GetSignature parameter to explicitly pass a *string rather than taking the address of a string in a long.


Version 1.22 - 21 July 2011

Requires StringTheory 1.38 or later

  • Added: bfEncrypt method that provides a wrapper for all Blowfish encryption tasks, including initializing and destroying the Blowfish object and optionally encoding the output as either a Hex or Base64 encoded string.
  • Added: bfDecrypt method that provides a wrapped for all Blowfish decryption tasks.
  • Added: bfCrypt: Wrapper method for Blowfish encryption and decryption.
  • Added: New Blowfish example application that demonstrates using the new simplified approach to Blowfish encryption. The old Blowfish example has been moved to the and demonstrates using the methods to manually accomplish the same tasks that are handled by the bfEncyrpt and bfDecrypt methods.
  • Added: Full documentation and example code for the bfEncrypt(StringTheory) and bfEncrypt(StringTheory) methods, which provide a manual alternative to the standard bfEncrypt and bfDecypt methods.
  • Updated: The Blowfish documentation to demonstrate the use of the new simplified bfEncrypt and bfDecrypt methods.
  • Added: File hashing to the SimpleHashing example application.


Version 1.21 - 1 July 2011

Requires StringTheory 1.38 or later

  • Fixed: EnumProviders was including a null terminator in the string for the provider name and provider type name.
  • Fixed: EnumProviderTypes was including a null terminator in the string for the provider type name.
  • Added: GetHashProvider method acquires an appropriate context for the requested hash algorithm. The context is returned and should be disposed once the hash has been created. Use by the new MakeHash() method.
  • Added: New MakeHash method takes a StringTheory object and the hashing algorithm desired and hashes and hex encodes the output. It handles the acquisition of a non keyset context using the appropriate provider for the algorithm and the disposal of the context once complete. This does not affect any other context that has already been acquired.
  • Added: New SimpleHashing example demonstrates the new MakeHash method for simplified hashing.
  • Added: New code to the Providers example that demonstrates using the XP SP3 specific version of the AES provider and attempting to acquire the standard AES provider, followed by the XP SP3 version and finally falling back to the standard RSA provider if neither is available.
  • Added: New Hashing JumpStart to the documentation


Version 1.20 - 29 June 2011

Requires StringTheory 1.38 or later

  • Fixed: Incorrect template symbol that could cause problems generating the object declaration.


Version 1.19 - 6 June 2011

Requires StringTheory 1.38 or later

  • Fixed: Two typographical errors in template symbols which broke compilation in C7 and C8.
  • Changed: The Legacy example now uses CFB mode for the Blowfish encryption.


Version 1.18 - 3 June 2011

Requires StringTheory 1.37

  • Added: FAQ section to the documentation.
  • Added/Improved: The Table/Field encryption support:
  • The encryption mode defaults to CFB mode (allows any length of data to be encrypted)
  • Added support for encrypting non string fields, including: long, real, short, ulong, ushort, unsigned, byte, cstring, decimal, sreal.
  • Fixed double encryption/decryption of fields
  • Fixed encryption of both the File and View
  • Updated the FilesAndFields Example
  • Added a SQL file/table encryption example



Version 1.17 - 6 May 2011

  • Fixed: Missing ampersand in the csFile class CopyFile method.


Version 1.16 - 4 May 2011
  • Updated template to support some changes in Clarion 8.
  • Updated template so derived methods, in a SOURCE procedure, return value correctly.


Version 1.15 - 7 April 2011

Important: Requires Stringtheory 1.32 or higher.

  • Updated for Safe Update 2.0. This version is the minimum required for SafeUpdate 2.0.


Version 1.14 - 7 April 2011

Important: Requires Stringtheory 1.32 or higher.

  • New: GetProviderAlgs method enumerates all algorithms supported by the current provider and populates a queue with the names, ALG_IDs, key lengths (default, maximum and minimum etc.)
  • Updated: The Providers example. This now demonstrates listing all supported algorithms for the current provider and displaying the details in a listbox. This example is highly recommended as it covers:
    • The basics of using Cryptographic Service Providers;
    • Creating key stores and keys;
    • Listing providers available;
    • Falling back to default providers when newer providers are not available on a machine;
    • Using newer provider functionality such as SHA256 hashing, and falling back to algorithms supported by older providers when it is not available;
    • Exporting and importing keys;
    • Encrypting and Decrypting data using public/private key pairs;
    • Hashing of data (digest creation).
  • New: The GetUserKey method now allows the key length and flags to be specified if a new key is created (when the key set does not exist and the createKey parameter is passed as True)
  • Fixed: The GenPPK method now uses the key length and flags passed when generating the key set. Both flags are optional and the default values will be used if they are not specified.
  • Fixed: The ExchangeKeyFromBlob method was ignoring rarely used import flags.
  • Fixed: The SUError.clw file was still being linked in to the project by the template rather than the new csError.clw file.
  • New: Documentation for the CryptoNite class methods. Add documentation for undocumented methods, expanded existing documentation for methods, including:
    GetUserKey Gets the user's current exchange key and stores the handle in the object property.
    BlobToKey Store the passed session key as an encrypted BLOB in the passed StringTheory object
    KeyToBlob Stores the key reference by the hSessionKey handle as an encrypted key BLOB in the passed StringTheory object.
    NewSessionKey Create a new session key. Use KeyToBlob to save this session key and BlobToKey to load it.
    KeyFromPassword Create a session key derived from the passed password.
    ExchangeKeyToBlob Creates an encrypted BLOB of the exchange key pair.
    ExchangeKeyFromBlob Imports an exchange key pair from an encrypted BLOB.
    ExchangeKeyToFile Creates an encrypted BLOB from the exchange key pair and saves it.
    ExchangeKeyFromFile Imports an exchange key pair from an encrypted BLOB on disk.
    EncryptFile Encrypt a file when passed the file name. Require a context and public/private key pair in the current container
    DecryptFile ecrypts the passed file and saves the unencrypted output to the file name specified by the plainFile parameter. Assumes that the EncryptFile method was used to encrypt the file and the a context has been acquired with the correct PPK pair.
    Encrypt Encrypts the passed data, using the passed key
    Decrypt Decrypts the passed data, using the passed key
    AcquireContext Gets a Cryptographic context and key container
    ReleaseContext Releases a Cryptographic context that has been acquired
    ChooseCertificate Selects a certificate from the certificates store
    GetCertList This is a diagnostic function for inspecting the contents of a given certificate store
    Get_OID Get the type of encoding algorithm used in the encryption. Typically not called directly.
    EnumProviders Lists all Cryptographic Service Providers available
    EnumProviderTypes List the types of Cryptographic Servvice providers
    EncryptDecrypt Wraps encryption and decryption, encrypts or decrypts any passed data using the provided key.
    DestroyKey Destroys the passed key handle (cleans up allocated memory)
    ExportKey Exports a key to the specified key BLOB
    GenPPK Creates a Public Private key pair and stores the handle in the .hExchangeKey property
    GenKey Generates a new key key of the specified tytpe
    GetKey Returns the key handle to the session or exchange key stored by the object.
    GetKeyBlob Exports the specified keytype to the associated key BLOB property of the object.
    GetKeyBlobSize Returns the size required to store a specified key as a BLOB
    GetKeyFromBlob Extracts the session key from the passed encrypted message BLOB.
    GetProviderAlgs Populates a queue with all the algorithms supported by the current Cryptographic Services Provider, and details for each algorithms such as the name, ALG_ID, key lengths etc.
    PutKeyBlobToFile Writes a session key to disk, encypted using the current exchange key, used when writing an encrypted message to disk.
    ImportKey Imports a key BLOB into the current container
    SetKey Sets the exchange or signing key to the passed key handle
    SetKeyBlob Stores the passed key BLOB in the specified object key BLOB property.
    PutSignature Creates a signature and appends it to a the specified file
    SignMessage Obtains and uses the user certificate and hash algorithm identifier to generate a signature for the message.
    VerifySignature Verifies that a signature was created using a specific certificate
    PFXAddToStore Adds a PFX BLOB to a temporary store for processing
    PFXImportStore Processes the passed PFX store and adds all certificates to a system store
    CreateHash Creates a Hash (Digest) using the specified algorithm
    HashData Adds data to a hash (digest)
    DestroyHash Deallocates memory assigned for a hash object
    GetHash Retrieves the hash from the object
    GetHashInfo Retrieves the hash size or hash from a Hash object
    ToCstring Converts a Clarion string to a cstring and returns a pointer to the new cstring
    ReverseBytes Swaps the byte order in the passed string (the byte order is swapped for the entire string, so the string is inverted entirely in ordering on a byte level.
    StripLineBreaks Removes linebreaks from the passed string
    LocateProcedure Load a function at runtime from a DLL
    _CheckCertificate Check the validity of a certificate
    _CryptAcquireContext Acquires a Cryptographic context for a specific Cryptographic provider and a specific container.
    _GetExpiryDate Find the expiry date of a certificate.
    _GetIdentityList Searches the certificates for a match on the substring parameter. A list is constructed of all matches. Each element in the list will contain "Common Name, Email".
    _GetCertChain Retrieves each certificate name in the CA chain
    _GetSerialNumber Find the serial number of a certificate
    _GetSubjectFromCert Returns the Subject field of the certificate as a string. The Subject field contains all the identication information for the certificate.
    _GetIssuerCert Locate the issuer certificate in one of the stores on the local machine.
    _FindCertificate Enumerates all the certificates in the given store and selects the one that matches the specified owner.
    _FindRDNAttr Takes a given certificate context and retrieves the specified attribute.
    _LoadDLLs Runtime DLL loading of the CryptoAPI libraries
    _TestSignatureProperty Tests a given certificate context for whether or not it has the AT_SIGNATURE property in its key info.
    _TrustSigner Check whether the signer or the chain of issuance of the signer is trusted


Version 1.13 - 23 March 2011

Important: Requires Stringtheory 1.32 or higher.

  • Fixed: The publicOnly parameter of the ExchangeKeyToBlob method was being flipped incorrectly.


Version 1.12 - 22 March 2011

Important: Requires Stringtheory 1.32 or higher.

  • Fixed: The ExchangeKeyToBlob method could set the BLOB type incorrectly, resulting in the key import failing.
  • Added: New logging code.
  • Added: If no password is specified when exporting a key the BLOB is created unencrypted


Version 1.11 - 15 March 2011

Important: Requires Stringtheory 1.29 or higher.

  • Fixed: The ExchangeKeyToBlob method was failing when exporting a public key only BLOB
  • Added: Support for exporting private keys without encryption when calling ExchangeKeyToBlob (note: This is not recommended).


Version 1.10 - 21 January 2011

Important: Requires Stringtheory 1.29 or higher.

  • Changed StringTheory method calls to use the Clarion 5.5 compatible names.
  • Updated the Blowfish section of the main Demo example.
  • Fixed incorrect references to OddJob in the documentation.
  • Fixed incorrect image paths in the documentation.
  • Fixed incorrect menu in the History section of the documentation.


Version 1.09 - 19 January 2011

Important: Requires Stringtheory 1.29 or higher.

  • Renamed the SUError class to csError for consistency and backward compatibility with SafeUpdate 1.
  • Added a number of API prototypes to provide backward compatibility with SafeUpdate 1.
  • This release can now be installed on top of SafeUpdate 1 without causing conflicts. Not that you SafeUpdate 1 should be installed first, followed by CryptoNite.
  • Reduced the width of the example code in the main doc to reduce the minimum width of the document for viewing.


Version 1.08 - 18 January 2011

Important: Requires Stringtheory 1.29 or higher.

  • Fixed a template error on %ClassExternal symbol
  • Fixed compile errors with SafeUpdate as the result of incompatible files with the same name
  • New GenRandom method generates any amount of cryptographically random data.
  • New Blowfish example applications:
  • EncryptFish - full Blowfish example.
  • Demonstrates Blowfish encryption and decryption of any amount of data using ECB, CBC and CFB modes.
  • Cipher Text Stealing and PKCS padding for ECB and CBC modes.
  • Base64 encoding and decoding
  • Hex string encoding and decoding
  • Random data generation
  • Initialization vector creation
  • Key handling and object initialization
  • TestVectors - demonstrates basic block encryption and decryption and validates the Blowfish implementation against the reference test vectors.
  • The csBlowfish class has been completely rewritten:
    • Validated implementation of the Blowfish algorithm
    • Two new example applications for Blowfish encryption
    • New example demonstrating encrypting the Blowfish test vectors and validating the output against the reference test vectors
    • Supports for any amount of data being encrypted of any length (does not need to be a multiple of the block length).
    • Support for CBC (Cipher Block Chaining) mode encryption, improved security over the standard ECB mode encryption, which is some senses doesn't provide serious message confidentiality, and it is not recommended for use in cryptographic protocols at all,
    • Support for CBF (Cipher Feedback) mode encryption, which provides the same level of security as CBC, and turns the block cipher into a stream cipher, allowing any length of data to be encrypted without any padding.
    • Support for PKCS#5/PKCS#7 padding for ECB and CBC mode encryption to allow any length of data to be encrypted (the size of the ciphertext output 1 to 8 bytes larger than the input plaintext).
    • Support for Cipher Text Stealing for ECB and CBC modes. Allows any length of data to be encrypted and the output ciphertext is the same length as the input ciphertext.
    • Support for Initialization Vectors for CBC and CBF modes.
    • New csBlowfish Methods
      • Init Procedure (*string key, long keyLen=0, <*SBlock chain>, long padding=0), virtual
      • ResetChain Procedure (), virtual
      • Encrypt Procedure (*string in, *string out, long inLen=0, long mode =0), bool, proc, virtual
      • Decrypt Procedure (*string in, *string out, long inLen=0, long mode =0), bool, proc, virtual
      • SetKey Procedure (*string key, long keyLen=0, <*SBlock chain>, long padding=-1, long mode=-1), bool, proc, virtual
      • SetMode Procedure (long mode), virtual
      • SetPadding Procedure (long padding), virtual
      • SetIv Procedure (*string iv), virtual
      • SetMultiBlock Procedure (long bool), virtual
    • New csBlowfish Internal methods
      • _Encrypt Procedure (*SBlock sb), virtual
      • _Decrypt Procedure (*SBlock sb), virtual
      • _EncryptCFB Procedure(*string in, *string out, long inLen), virtual
      • _EncryptCBC Procedure(*string in, *string out, long inLen, long padLen), virtual
      • _EncryptECB Procedure(*string in, *string out, long inLen, long padLen), virtual
      • _DecryptCFB Procedure(*string in, *string out, long inLen), virtual
      • _DecryptCBC Procedure(*string in, *string out, long inLen, long padLen), virtual
      • _DecryptECB Procedure(*string in, *string out, long inLen, long padLen), virtual
      • _PArray Procedure (), virtual
      • _SBox Procedure (), virtual
      • F Procedure (ulong x, bool debug=false), ulong, virtual
      • _WriteBoxes Procedure(long state=0), virtual
    • New csBlowfish Properties
      • chain
      • padding
      • iv
      • mode
      • multiBlock
  • New CryptoNite methods:
    • bfSetKey Procedure (string keyBytes), long, proc, virtual
    • bfSetIv Procedure (string iv), long, proc, virtual
    • bfResetChain Procedure (), long, proc, virtual
    • bfSetMode Procedure (long mode), long, proc, virtual
    • bfSetPadding Procedure (long pad), long, proc, virtual


Version 1.07 - 2 January 2011

 Important: Requires Stringtheory 1.29 or higher.

  • Fixed compile errors as a result of an incorrect file in the 1.0.6 release.


Version 1.06 - 24 December 2010

Important: Requires Stringtheory 1.29 or higher.

  • New Methods (Beta)
  • CertOpenSystemStore Procedure (<string name>), HCERTSTORE, virtual
    Opens a certificate store to allow certificates to be located and used.
  • CertCloseStore Procedure (HCERTSTORE hStore), virtual
    Closes an opened store.
  • CertFind Procedure (HCERTSTORE hStore, string certName), PCCERT_CONTEXT, virtual
    CertFind Procedure (HCERTSTORE hStore, ulong encoding, ulong flags, ulong type, string pParam, PCCERT_CONTEXT prevCert), PCCERT_CONTEXT, virtual
    Find a certificate by name in the specified store and allows it to be used for encryption, signing etc.
  • CertNext Procedure (HCERTSTORE hStore, PCCERT_CONTEXT prevCert, string certName), PCCERT_CONTEXT, virtual
    Retrieves the next certificate matching the passed name
  • CertFree Procedure (PCCERT_CONTEXT hCert)
    Frees memory allocated when a certificate is retrieved from a store.
  • CertGetContainer Procedure (PCCERT_CONTEXT hCert), long, virtual
    Retrieve a Cryptographic Context and key set using the specified certificate handle
  • _CertGetPrivateKey Procedure (PCCERT_CONTEXT hCert, *bool freeKey, DWORD keySpec=cs:AT_KEYEXCHANGE), HCRYPTPROV, virtual
    Retrieves a CSP context and key container for a certificate. This context can then be used to retrieve the keys associated with the certificate, as well as to perform encryption, decryption and signing using the certificate. Typically CertGetContainer is called to perform this functionality and retreive the container and key set.
  • Updated the "Provider" example which demonstrates:
  • Using the AES Cryptographic Service Provider (CSP) available on newer versions of Windows (including Vista and Windows 7).
  • Listing the Providers and Provider Types available on a machine
  • Checking whether a specific provider is available, and falling back to the default if it is not
  • Using algorithms appropriate to the providers available
  • Importing and exporting public/private key pairs using a sessions key (derived from a password).
  • Using a password to create a session key.
  • Using SHA256 and other alternative hashing algorithms available when using CSPs such as the AES provider, and falling back to the default provider and SHA-1 on older versions of windows.
  • Creating and deleting containers and key sets.
  • New Section in the Documentation
  • Cryptographic Service Providers: An introduction to Cryptographic Service Providers
  • Available Service Providers: The providers available and their functionality that they provide.
  • Cryptographic Service Provider Types: Provider types and algorithms supported by different types of Providers
  • General documentation updates


Version 1.05 - 10 December 2010

Important: Requires Stringtheory 1.29 or higher.

  • Improved: The CryptAcquireContext methods to allow additional provide details and types to be passed.
  • Fixed: The GetContainer method not correctly passing the provider type to AcquireContext
  • Improved: The KeyFromPassword method compatibility with different version of Windows.
  • Improved: Additional error and information logging for tracking down encryption and key errors
  • New: Example of importing and exporting keys, using a custom provider type, and hash creation  using a SHA-256 hash. See the "Providers" example.
  • Updated: The LegCrypt example application (demonstrates the Demo example functionality in a Legacy application).
  • Improved: DeleteContainer now allows the provider name and type to be passed. This enabled the deletion of existing containers without acquiring the container first.
  • Fixed: GenPPK creating non exportable keys by default
  • Improved: Changed the key type created by GenPPK to explicity be AT_EXCHANGE. This does not change any functionality, however it ensure that the type is always specified for improved functionality across different versions of Windows and the CryptoAPI.
  • Fixed: _CryptAcquireContext setting the provider to the default when one was passed in Clarion 5.5 as the result of an Omit statement using the parameter name rather than position.
  • New: The encryption now automatically derives the correct block size from the algorithm used for the key..
  • New: Encryption now defaults to RC4 encryption throughout.
  • Note: The Microsoft Enhanced Cryptographic Service provider is the default CSP. The provider type defaults to PROV_RSA_FULL, which is a general purpose CSP which supports the following algorithms:
    Purpose Supported algorithms
    Key Exchange RSA
    Signature RSA
    Encryption RC2


    Hashing MD5



Version 1.04 - 03 December 2010
  • Updated the Class Reference documentation with the outline for the following methods:
    • _CheckCertificate       Procedure (PCCERT_CONTEXT pCertContext, HCRYPTPROV phCryptProv), long, proc, virtual
      _CryptAcquireContext    Procedure (*HCRYPTPROV phProv, LPSTR pszContainer, LPSTR pszProvider, DWORD dwFlags), long, proc, virtual
      _FindCertificate        Procedure (HCRYPTPROV hCryptProv, HCERTSTORE hCertStore, *cstring certId, *PCCERT_CONTEXT ppCertContext), long, proc, virtual
      _FindRDNAttr            Procedure (*cstring pszAttrId, PCCERT_CONTEXT pCertContext, *long pAttr),bool, proc, virtual
      _GetCertChain           Procedure (PCCERT_CONTEXT pSignerCert, *DSUserDataForVerify pVerifyArg), long, proc, virtual
      _GetExpiryDate          Procedure (string pSigner, *long pExpiry), long, proc, virtual
      _GetIdentityList        Procedure (long pCsp, *cstring pSubstring, bool pOnlyValidCerts, *MsgQType pListQ), long, proc, virtual
      _GetIssuerCert          Procedure (PCCERT_CONTEXT pSignerCert, HCRYPTPROV hCryptProv, *HCERTSTORE pStore, *PCCERT_CONTEXT pIssuerCert), long, proc, virtual
      _GetSerialNumber        Procedure (string pSigner, *string pSerial),bool, proc, virtual
      _GetSubjectFromCert     Procedure (*PCCERT_CONTEXT pCertContext, *cryCertFields certFields, bool wholeSubject=false), bool, proc, virtual
      _LoadDLLs               Procedure (),HANDLE, proc, virtual
      _TestSignatureProperty  Procedure (PCCERT_CONTEXT pCertContext), long, proc, virtual
      _TrustSigner            Procedure (*DSUserDataForVerify pVerifyArg, CERT_INFO pCertInfo, string pSerial), long, proc, virtual
      AcquireContext          Procedure (string container, string providerName, ulong provType=0, ulong flags=0), long, proc, virtual
      AppendSignature         Procedure (string pInfile, *StringTheory pSignature), long, proc, virtual
      BlobToKey               Procedure (HCRYPTKEY hSessionKey, *StringTheory keyBlob), long, proc, virtual
      BuildIV                 Procedure (long ivBytes = 8, <string iv>), long, proc, virtual
      CertFieldsToString      Procedure (*cryCertFields certFields), *cstring, virtual
      CertGetAttribute        Procedure (*PCCERT_CONTEXT pCertContext, string attName, *string attribute), long, virtual
      CertGetSubjectAsString  Procedure (*PCCERT_CONTEXT pCertContext, *cstring subject, bool wholeSubject=false), long, virtual
      CertMatchField          Procedure (string searchVal, *cryCertFields certFields, bool strict=false), long, virtual
      ChooseCertificate       Procedure (*cstring pEmail, *cstring pProvider, *cstring pSigner), long, virtual
      Construct               Procedure ()
      CreateContainer         Procedure (string container), long, virtual
      CreateHash              Procedure (long algId, long phKey=0), long, proc, virtual
      CreateHash              Procedure (long hProv, long algId, long phKey, long flags=0, *HCRYPTHASH hash), long, proc, virtual
      Decrypt                 Procedure (HCRYPTKEY hCryptKey, *string pbData, *long dataLen, HCRYPTHASH hCryptHash=0, long flags=0), long, proc, virtual
      DecryptFile             Procedure (string cipherFile, string plainFile), long, virtual
      DeleteContainer         Procedure (string container), long, proc, virtual
      DestroyHash             Procedure (), virtual
      DestroyHash             Procedure (*HCRYPTHASH hHash), virtual
      DestroyKey              Procedure (ulong hCryptoKey), long, proc, virtual
      Destruct                Procedure ()
      Encrypt                 Function (*string cipherData, *long dataLen, *string sessionKey, *long sessionLen, long algId = cs:CALG_RC4, long keyLen=0), long, proc, virtual
      Encrypt                 Procedure (HCRYPTKEY hCryptKey, *string pbData, *long dataLen, HCRYPTHASH hCryptHash=0, long flags=0), long, proc, virtual
      EncryptDecrypt          Procedure (HCRYPTKEY hCryptKey, *string pbData, *long dataLen, long decrypt=0, HCRYPTHASH hCryptHash=0, long flags=0), long, proc, virtual
      EncryptFile             Procedure (string inFileName, string outFileName), long, virtual
      EnumProviders           Procedure (*providersQueueType providers), long, proc, virtual
      EnumProviderTypes       Procedure (*providerTypesQueueType provTypes), long, proc, virtual
      ExportKey               Procedure (long keyType=0), long, proc, virtual
      ExportKey               Procedure (long phKey, long blobType, *string keyBlob, *long dataLen, long hExpKey=0, long flags=0), long, virtual
      FreeIV                  Procedure (), virtual
      GenKey                  Procedure (long algId, long options, long keyLength, *HCRYPTKEY phKey), long, proc, virtual
      GenPPK                  Procedure (), long, proc, virtual
      Get_OID                 Procedure (string pOIDstr),string, virtual
      GetCertList             Procedure (long pCsp, *cstring pCertStoreName, long pWholeSubject, *MsgQType pCertQ), long, proc, virtual
      GetContainer            Procedure (string container, bool createContainer=false), long, virtual
      GetHash                 Procedure (), *string, virtual
      GetHashInfo             Procedure (long dType, <*string pHash>, <*long hashLen>), long, proc, virtual
      GetKey                  Procedure (long keyType), long, virtual
      GetKeyBlob              Procedure (long keyType=0), *string, virtual
      GetKeyBlobSize          Procedure (long phKey, ulong blobType, long hExpKey = 0), long, virtual
      GetKeyFromBlob          Procedure (*string cipherData, *HCRYPTKEY hSessionKey, *long keyLen), long, virtual
      GetUserKey              Procedure (ulong keyType=0, bool createKey=false), long, proc, virtual
      HashData                Procedure (*string inData, ulong dataLen=0), long, virtual
      HashData                Procedure (HCRYPTHASH hHash, *string inData, ulong dataLen = 0), long, proc, virtual
      ImportKey               Procedure (*string pbData, long dataLen, *long hNewKey, long hProv =0, long phKey=0, long flags=0), long, proc, virtual
      ImportKey               Procedure (long keyType=0), long, proc, virtual
      ImportKeyFile           Procedure (string keyFileName), long, virtual
      Init                    Procedure (), virtual
      KeyToBlob               Procedure (HCRYPTKEY hSessionKey, *StringTheory keyBlob), long, proc, virtual
      Kill                    Procedure (), virtual
      LocateProcedure         Procedure (long hLib, string pProcedure), long, virtual
      MakeHash                Procedure (*string inData, *string hashValue, *long hashLen), long, proc, virtual
      NewSessionKey           Procedure(long algId = cs:CALG_3DES, long keyLen = 0), long, proc, virtual
      PFXAddFromStore         Procedure (HCERTSTORE pfxStore, HCERTSTORE hDestStore, long flags = 1), long, virtual
      PFXImport               Procedure (string pfxFileName, <string pPassword>, <string pStore>), long, virtual
      PFXImportToStore        Procedure (*CRYPT_DATA_BLOB pfxBlob, ulong flags, <string pPassword>), HCERTSTORE, virtual
      PutKeyBlobToFile        Procedure (string fName, HCRYPTKEY hKey), long, virtual
      PutSignature            Procedure (string pFilename, *cstring pEmail, *cstring pProvider), long, proc, virtual
      ReleaseContext          Procedure (), long, proc, virtual
      ReverseBytes            Procedure (*string binData), virtual
      SetKey                  Procedure (long keyType, long phKey), long, proc, virtual
      SetKeyBlob              Procedure (string keyBlob, long keyLen = 0, long keyType=0), long, proc, virtual
      SignMessage             Procedure (*string pMsg, long pMsgLen, long pCsp, string pHashAlg, *cstring pSigner, *StringTheory pSignature, long pIncludeCerts=1, bool detach=true), long, proc, virtual
      StripLineBreaks         Procedure (*string mText, byte replacement=0), virtual
      ToCstring               Procedure (*string s), *cstring, virtual
      VerifySignature         Procedure (*string pMsg, long pMsgLen, long pCsp, *string pSignature, long pSignatureLen, *cstring pSigner, *long pCertInfo, *CryCertFields pCertChain, *long pVerifyStatus), long, proc, virtual
      VerifySignature         Procedure (string pDataFile, long pWhichSig, *cstring pSigner, *long pCertInfo, *CryCertFields pCertChain, *long pStatus), long, proc, virtual
  • Complete internal refactor of a large number of methods, new methods additions (listed above), and general cleanup

  • Fixed a number of memory leaks

  • Fixed a number of internal method errors that could result in methods failing incorrectly.

  • Deprecated methods: _realloc, _instring, _freelist


Version 1.02 - 30 September 2010

Important: Requires Stringtheory 1.26 or higher.

  • Uses the new methods in StringTheory to convert data to hexidecimal strings (demonstrated in the creation of hashes in the example).
  • Demo example now defaults to SHA-1 digests (hashes) rather than MD5 on the main window.
  • Adjusted hash creation in the example to clip the text strings for the plain text data. The data would not be clipped if it were binary data, however for text data if you don't clip the strings when calculating the length, then the encryption and hashing will be performed on the entire string, including trailing spaces.
  • Added examples of using the new StringToHex() StringTheory method. Used for displaying the digests (hashes) as their hexidecimal values, rather than base64 encoding the string.


Version 1.01 - 23 September 2010
  • Fix for GPF on second time entrance to window with FileField encryption/decryption turned on.
  • First official release.


Version 1.00 - 22 September 2010
  • Initial release.
table right side
table bottom left corner table bottom table bottom right corner


table right side
table bottom left corner table bottom table bottom right corner

All content © Copyright CapeSoft Software