DEFINITION MODULE diCrPKI; FROM SYSTEM IMPORT LOC; <*/CALLS:WINDOWSCALL/DLLDEF/NOHIGH*> <*/ALIGN:8/NOPACK*> (* $Id: diCrPKI.h $ *) (* For `CryptoSys PKI Pro` Version 11.0.0. Requires `diCrPKI.lib` and `diCrPKI.dll` for Win32/64 or `diCrPKI.a` or `libcryptosyspki.so` for Linux. *) (* Copyright (C) 2002-16 DI Management Services Pty Limited <www.di-mgt.com.au> <www.cryptosys.net> All rights reserved. Last updated: $Date: 2016-05-20 19:29:00 $ $Revision: 11.1.0 $ *) CONST DICRPKI_H_ = 1; (* GENERAL CONSTANTS *) PKI_DIR_ENCRYPT = 1; PKI_DIR_DECRYPT = 0; (* Synonyms for direction *) ENCRYPT = 1; DECRYPT = 0; (* Maximum number of bytes in hash digest byte array *) PKI_MAX_HASH_BYTES = 64; PKI_SHA1_BYTES = 20; PKI_SHA224_BYTES = 28; PKI_SHA256_BYTES = 32; PKI_SHA384_BYTES = 48; PKI_SHA512_BYTES = 64; PKI_MD5_BYTES = 16; PKI_MD2_BYTES = 16; PKI_RMD160_BYTES = 20; PKI_BTC160_BYTES = 20; (* Maximum number of hex characters in hash digest (excl null) *) PKI_MAX_HASH_CHARS = 2*PKI_MAX_HASH_BYTES; PKI_SHA1_CHARS = 2*PKI_SHA1_BYTES; PKI_SHA224_CHARS = 2*PKI_SHA224_BYTES; PKI_SHA256_CHARS = 2*PKI_SHA256_BYTES; PKI_SHA384_CHARS = 2*PKI_SHA384_BYTES; PKI_SHA512_CHARS = 2*PKI_SHA512_BYTES; PKI_MD5_CHARS = 2*PKI_MD5_BYTES; PKI_MD2_CHARS = 2*PKI_MD2_BYTES; PKI_RMD160_CHARS = 2*PKI_RMD160_BYTES; PKI_BTC160_CHARS = 2*PKI_BTC160_BYTES; (* Synonym retained for backwards compatibility *) PKI_MAX_HASH_LEN = PKI_MAX_HASH_CHARS; (* Encryption block sizes in bytes *) PKI_BLK_TDEA_BYTES = 8; PKI_BLK_AES_BYTES = 16; (* Key size in bytes *) PKI_KEYSIZE_TDEA_BYTES = 24; PKI_KEYSIZE_MAX_BYTES = 32; (* Required size for RNG seed file *) PKI_RNG_SEED_BYTES = 64; (* OPTIONS *) PKI_DEFAULT = 0; (* Signature algorithms *) PKI_SIG_SHA1RSA = 0; PKI_SIG_MD5RSA = 1; PKI_SIG_MD2RSA = 2; PKI_SIG_SHA256RSA = 3; PKI_SIG_SHA384RSA = 4; PKI_SIG_SHA512RSA = 5; PKI_SIG_SHA224RSA = 6; (* New in [v11.0] ... *) PKI_SIG_ECDSA_SHA1 = 10H; PKI_SIG_ECDSA_SHA224 = 20H; PKI_SIG_ECDSA_SHA256 = 30H; PKI_SIG_ECDSA_SHA384 = 40H; PKI_SIG_ECDSA_SHA512 = 50H; (* PKCS#5 Password-based encryption algorithms *) (* Default *) PKI_PBE_SHA_3DES = 0; (* Added in [v11.0] as simpler alternative to PKI_PBE_PBES2 + PKI_BC *) PKI_PBE_PBKDF2_DESEDE3 = 1010H; PKI_PBE_PBKDF2_AES128 = 1020H; PKI_PBE_PBKDF2_AES192 = 1030H; PKI_PBE_PBKDF2_AES256 = 1040H; (* --0x1820L Reserved for PKI_PBE_SCRYPT_AES128 *) (* --0x1840L Reserved for PKI_PBE_SCRYPT_AES256 *) (* These next 3 changed in [v11.0] (by adding 0x8000000) *) (* [not recommended for new implementations] *) PKI_PBE_MD5_DES = 8000001H; (* [not recommended for new implementations] *) PKI_PBE_MD2_DES = 8000002H; (* [not recommended for new implementations] *) PKI_PBE_SHA_DES = 8000003H; (* Synonym retained for backwards compatibility *) PKI_PBES2_3DES = PKI_PBE_PBKDF2_DESEDE3; (* Older alternative to specify PBES2 PBKDF2 *) (* Add PKI_BC_* option to specify encryption alg *) PKI_PBE_PBES2 = 1000H; (* Message digest hash algorithms *) PKI_HASH_SHA1 = 0; PKI_HASH_MD5 = 1; PKI_HASH_MD2 = 2; PKI_HASH_SHA256 = 3; PKI_HASH_SHA384 = 4; PKI_HASH_SHA512 = 5; PKI_HASH_SHA224 = 6; (* RIPEMD160 - New in [v11.0] *) PKI_HASH_RMD160 = 7; (* BITCOIN160 - New in [v11.0] *) PKI_HASH_BTC160 = 8; PKI_HASH_MODE_TEXT = 10000H; (* New in [v11.0] *) PKI_HASH_DOUBLE = 20000H; (* HMAC algorithms *) (* Added [v11.0] as convenient synonyms *) PKI_HMAC_SHA1 = 0; PKI_HMAC_SHA224 = 6; PKI_HMAC_SHA256 = 3; PKI_HMAC_SHA384 = 4; PKI_HMAC_SHA512 = 5; (* nFermatExp values for RSA exponent *) PKI_RSAEXP_EQ_3 = 0; PKI_RSAEXP_EQ_5 = 1; PKI_RSAEXP_EQ_17 = 2; PKI_RSAEXP_EQ_257 = 3; PKI_RSAEXP_EQ_65537 = 4; (* Return values for RSA_CheckKey *) PKI_VALID_PUBLICKEY = 1; PKI_VALID_PRIVATEKEY = 0; (* BIT FLAGS *) (* Key generation *) PKI_KEYGEN_INDICATE = 1000000H; PKI_KEY_FORMAT_PEM = 10000H; PKI_KEY_FORMAT_SSL = 20000H; (* New in [v11.0] *) PKI_KEY_TYPE_PKCS8 = 40000H; PKI_PFX_PLAIN_CERT = 2000000H; PKI_PFX_CLONE_KEY = 4000000H; PKI_PFX_ALT_FORMAT = 100000H; (* New in [v10.0] *) PKI_PFX_P7CHAIN = 0400H; PKI_CMS_FORMAT_BASE64 = 10000H; PKI_CMS_EXCLUDE_CERTS = 0100H; PKI_CMS_EXCLUDE_DATA = 0200H; PKI_CMS_CERTS_ONLY = 0400H; PKI_CMS_INCLUDE_ATTRS = 0800H; PKI_CMS_ADD_SIGNTIME = 1000H; PKI_CMS_ADD_SMIMECAP = 2000H; (* New in [v10.0] *) PKI_CMS_NO_INFLATE = 1000000H; PKI_CMS_NO_OUTER = 2000000H; PKI_CMS_ALT_ALGID = 4000000H; PKI_CMS_BIGFILE = 8000000H; (*ifndef PKI_XML_DEFINED_*) CONST PKI_XML_RSAKEYVALUE = 0001H; PKI_XML_EXCLPRIVATE = 0010H; (* New in [v10.0] *) PKI_XML_REQPRIVATE = 0020H; PKI_XML_HEXBINARY = 0100H; (*endif*) (* PKI_XML_DEFINED_ *) (*ifndef PKI_ENCOD_DEFINED_*) CONST PKI_EME_DEFAULT = 00H; PKI_EME_PKCSV1_5 = 00H; PKI_EME_OAEP = 10H; PKI_EMSIG_DEFAULT = 20H; PKI_EMSIG_PKCSV1_5 = 20H; PKI_EMSIG_DIGESTONLY = 1000H; PKI_EMSIG_DIGINFO = 2000H; PKI_EMSIG_ISO9796 = 100000H; (*$endif*) (* PKI_ENCOD_DEFINED_ *) (*$ifndef PKI_X509_DEFINED_*) (* X.509 Option flags *) CONST PKI_X509_FORMAT_PEM = 10000H; PKI_X509_FORMAT_BIN = 20000H; PKI_X509_REQ_KLUDGE = 100000H; PKI_X509_NO_TIMECHECK = 200000H; PKI_X509_LATIN1 = 400000H; PKI_X509_UTF8 = 800000H; PKI_X509_AUTHKEYID = 1000000H; PKI_X509_NO_BASIC = 2000000H; PKI_X509_CA_TRUE = 4000000H; PKI_X509_VERSION1 = 8000000H; PKI_X509_LDAP = 1000H; PKI_X509_DECIMAL = 8000H; (* Flags for X.509 Key Usage *) PKI_X509_KEYUSAGE_DIGITALSIGNATURE = 0001H; PKI_X509_KEYUSAGE_NONREPUDIATION = 0002H; PKI_X509_KEYUSAGE_KEYENCIPHERMENT = 0004H; PKI_X509_KEYUSAGE_DATAENCIPHERMENT = 0008H; PKI_X509_KEYUSAGE_KEYAGREEMENT = 0010H; PKI_X509_KEYUSAGE_KEYCERTSIGN = 0020H; PKI_X509_KEYUSAGE_CRLSIGN = 0040H; PKI_X509_KEYUSAGE_ENCIPHERONLY = 0080H; PKI_X509_KEYUSAGE_DECIPHERONLY = 0100H; (* Specific return values *) PKI_X509_EXPIRED = -(1); PKI_X509_VALID_NOW = 0; PKI_X509_VERIFY_SUCCESS = 0; PKI_X509_VERIFY_FAILURE = -(1); PKI_X509_REVOKED = 1; PKI_X509_INVALID = 1; (*endif*) (* PKI_X509_DEFINED_ *) (* Return values for CNV_CheckUTF *) CONST PKI_CHRS_NOT_UTF8 = 0; PKI_CHRS_ALL_ASCII = 1; PKI_CHRS_ANSI8 = 2; PKI_CHRS_MULTIBYTE = 3; (* Options for CNV_ByteEncoding *) PKI_CNV_UTF8_FROM_LATIN1 = 1; PKI_CNV_LATIN1_FROM_UTF8 = 2; (* Options for CNV_Num[To/From]Bytes - new in [v11.0] *) PKI_CNV_BIG_ENDIAN = 0H; PKI_CNV_LITTLE_ENDIAN = 1H; (* Flags and return values for X.509 and CMS query functions *) PKI_QUERY_GETTYPE = 100000H; PKI_QUERY_NUMBER = 1; PKI_QUERY_STRING = 2; (* Options for RNG functions *) PKI_RNG_STRENGTH_112 = 00H; PKI_RNG_STRENGTH_128 = 01H; (* Block cipher (BC) algorithm options *) PKI_BC_TDEA = 10H; (* ) *) PKI_BC_3DES = 10H; (* ) equiv. synonyms for Triple DES *) PKI_BC_DESEDE3 = 10H; (* ) *) PKI_BC_AES128 = 20H; PKI_BC_AES192 = 30H; PKI_BC_AES256 = 40H; (* Block cipher mode options *) PKI_MODE_ECB = 000H; PKI_MODE_CBC = 100H; PKI_MODE_OFB = 200H; PKI_MODE_CFB = 300H; PKI_MODE_CTR = 400H; (* Block cipher padding options *) PKI_PAD_DEFAULT = 0H; PKI_PAD_NOPAD = 10000H; PKI_PAD_PKCS5 = 20000H; PKI_PAD_1ZERO = 30000H; (* Added [v11.1] *) PKI_PAD_AX923 = 40000H; PKI_PAD_W3C = 50000H; (* Cipher file option flags - added [v11.1] *) PKI_IV_PREFIX = 1000H; PKI_PAD_LEAVE = 2000H; (* Key transport algorithms *) PKI_KT_RSAES_PKCS = 0000H; (* --0x1000L Reserved for PKI_KT_RSAES_OEAP *) (* --0x2000L Reserved for PKI_KT_RSA_KEM *) (* Key derivation functions *) PKI_KDF_KDF2 = 000H; (* --0x300L Reserved for PKI_KDF_KDF3 *) (* --0x800L Reserved for PKI_KDF_SCRYPT *) (* ASN.1 utilities - added [v10.0] *) PKI_ASN1_NOCOMMENTS = 100000H; PKI_ASN1_ADDLEVELS = 800000H; PKI_ASN1_TYPE_MAXCHARS = 64; (* SIG functions *) (* Added [v10.0] *) PKI_SIG_USEDIGEST = 1000H; (* Added [v11.0] *) PKI_SIG_DETERMINISTIC = 2000H; (* Added [v11.0] *) PKI_SIG_ASN1DER = 200000H; (* SMIME functions - added [v10.0] *) PKI_SMIME_ENCODE_BASE64 = 10000H; PKI_SMIME_ENCODE_BINARY = 20000H; PKI_SMIME_ADDX = 100000H; (* Encoding options - added [v11.0] *) PKI_ENCODE_HEX = 30000H; PKI_ENCODE_BASE64URL = 40000H; (* General *) PKI_GEN_PLATFORM = 40H; (* Added [v11.0] *) PKI_GEN_LEGACY = 8000000H; (* GENERAL FUNCTIONS *) PROCEDURE PKI_Version(VAR nReserved1: INTEGER; VAR nReserved2: INTEGER): INTEGER; PROCEDURE PKI_LicenceType(nOptions: INTEGER): INTEGER; PROCEDURE PKI_LastError(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER): INTEGER; PROCEDURE PKI_ErrorCode(): INTEGER; PROCEDURE PKI_ErrorLookup(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nErrCode: INTEGER): INTEGER; PROCEDURE PKI_CompileTime(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER): INTEGER; PROCEDURE PKI_ModuleName(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PKI_PowerUpTests(nOptions: INTEGER): INTEGER; (* CRYPTOGRAPHIC MESSAGE SYNTAX (CMS) FUNCTIONS *) PROCEDURE CMS_MakeEnvData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertList: NOHIGH ARRAY OF CHAR; VAR szSeed: NOHIGH ARRAY OF CHAR; nSeedLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE CMS_MakeEnvDataFromString(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szDataIn: NOHIGH ARRAY OF CHAR; VAR szCertList: NOHIGH ARRAY OF CHAR; VAR szSeed: NOHIGH ARRAY OF CHAR; nSeedLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE CMS_ReadEnvData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_ReadEnvDataToString(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_MakeSigData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertList: NOHIGH ARRAY OF CHAR; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_MakeSigDataFromString(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szDataIn: NOHIGH ARRAY OF CHAR; VAR szCertList: NOHIGH ARRAY OF CHAR; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_MakeSigDataFromSigValue(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR lpSigValue: NOHIGH ARRAY OF LOC; nSigLen: INTEGER; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR szCertList: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_MakeDetachedSig(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szHexDigest: NOHIGH ARRAY OF CHAR; VAR szCertList: NOHIGH ARRAY OF CHAR; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_ReadSigData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_ReadSigDataToString(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_GetSigDataDigest(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_VerifySigData(VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szHexDigest: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_QuerySigData(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szQuery: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_QueryEnvData(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szQuery: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* New in v10.0 *) PROCEDURE CMS_MakeComprData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CMS_ReadComprData(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* RSA KEY FUNCTIONS *) PROCEDURE RSA_MakeKeys(VAR szPubKeyFile: NOHIGH ARRAY OF CHAR; VAR szEpkFile: NOHIGH ARRAY OF CHAR; nBits: INTEGER; nExpFermat: INTEGER; nTests: INTEGER; nCount: INTEGER; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR lpSeed: NOHIGH ARRAY OF CHAR; nSeedLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE RSA_ReadEncPrivateKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szEpkFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_ReadPrivateKeyInfo(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_GetPrivateKeyFromPFX(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szPfxFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_ReadPublicKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szPubKeyFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_GetPublicKeyFromCert(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szCertFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_SavePublicKey(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_SavePrivateKeyInfo(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_SaveEncPrivateKey(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szKeyString: NOHIGH ARRAY OF CHAR; nCount: INTEGER; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_KeyBits(VAR szKeyString: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE RSA_KeyBytes(VAR szKeyString: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE RSA_ToXMLString(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_FromXMLString(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szXmlString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_CheckKey(VAR szKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_KeyHashCode(VAR szKeyString: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE RSA_KeyMatch(VAR szPrivateKey: NOHIGH ARRAY OF CHAR; VAR szPublicKey: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE RSA_ReadPrivateKeyFromPFX(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szPfxFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_PublicKeyFromPrivate(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* New in v10.0 *) PROCEDURE RSA_ReadAnyPrivateKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyFileOrString: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_ReadAnyPublicKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyFileOrString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_KeyValue(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyString: NOHIGH ARRAY OF CHAR; VAR szFieldName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* 'RAW' RSA ENCRYPTION/DECRYPTION FUNCTIONS *) PROCEDURE RSA_RawPublic(VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR szPublicKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_RawPrivate(VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR szPrivateKey: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RSA_EncodeMsg(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE RSA_DecodeMsg(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; nOptions: INTEGER): INTEGER; (* ELLIPTIC CURVE CRYPTOGRAPHY FUNCTIONS *) (* New in v11.0 *) PROCEDURE ECC_MakeKeys(VAR szPubKeyFile: NOHIGH ARRAY OF CHAR; VAR szPriKeyFile: NOHIGH ARRAY OF CHAR; VAR szCurveName: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szParams: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_ReadKeyByCurve(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szHexKey: NOHIGH ARRAY OF CHAR; VAR szCurveName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_ReadPrivateKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyFileOrString: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_ReadPublicKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szKeyFileOrString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_SaveEncKey(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szIntKeyString: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szParams: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_SaveKey(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szIntKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_PublicKeyFromPrivate(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szIntKeyString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ECC_QueryKey(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szIntKeyString: NOHIGH ARRAY OF CHAR; VAR szQuery: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* PKCS12 FILE FUNCTIONS *) PROCEDURE PFX_MakeFile(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szEpkFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szFriendlyName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE PFX_VerifySig(VAR szFileName: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* X509 CERTIFICATE FUNCTIONS *) PROCEDURE X509_MakeCert(VAR szNewCertFile: NOHIGH ARRAY OF CHAR; VAR szIssuerCertFile: NOHIGH ARRAY OF CHAR; VAR szSubjectPubKeyFile: NOHIGH ARRAY OF CHAR; VAR szIssuerEpkFile: NOHIGH ARRAY OF CHAR; nCertNum: INTEGER; nYearsValid: INTEGER; VAR szDistName: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; nKeyUsageFlags: INTEGER; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_MakeCertSelf(VAR szNewCertFile: NOHIGH ARRAY OF CHAR; VAR szEpkFile: NOHIGH ARRAY OF CHAR; nCertNum: INTEGER; nYearsValid: INTEGER; VAR szDistName: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; nKeyUsageFlags: INTEGER; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertRequest(VAR szNewReqFile: NOHIGH ARRAY OF CHAR; VAR szEpkFile: NOHIGH ARRAY OF CHAR; VAR szDistName: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_VerifyCert(VAR szCertToVerify: NOHIGH ARRAY OF CHAR; VAR szIssuerCert: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertThumb(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertIsValidNow(VAR szCertFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertIssuedOn(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertExpiresOn(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertSerialNumber(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_HashIssuerAndSN(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertIssuerName(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szDelim: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_CertSubjectName(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szDelim: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_GetCertFromP7Chain(VAR szNewCertFile: NOHIGH ARRAY OF CHAR; VAR szP7cFile: NOHIGH ARRAY OF CHAR; nIndex: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE X509_GetCertFromPFX(VAR szNewCertFile: NOHIGH ARRAY OF CHAR; VAR szPfxFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_KeyUsageFlags(VAR szCertFile: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE X509_QueryCert(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szQuery: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_ReadStringFromFile(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szCertFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_SaveFileFromString(VAR szNewCertFile: NOHIGH ARRAY OF CHAR; VAR szCertString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_TextDump(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szCertFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_ValidatePath(VAR szCertListOrP7File: NOHIGH ARRAY OF CHAR; VAR szTrustedCert: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* X509 CRL FUNCTIONS *) PROCEDURE X509_MakeCRL(VAR szCrlFile: NOHIGH ARRAY OF CHAR; VAR szIssuerCert: NOHIGH ARRAY OF CHAR; VAR szIssuerKeyFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szRevokedCertList: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE X509_CheckCertInCRL(VAR szCertFile: NOHIGH ARRAY OF CHAR; VAR szCrlFile: NOHIGH ARRAY OF CHAR; VAR szCRLIssuerCert: NOHIGH ARRAY OF CHAR; VAR szDate: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* ONLINE CERTIFICATE STATUS PROTOCOL (OCSP) FUNCTIONS *) PROCEDURE OCSP_MakeRequest(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szIssuerCert: NOHIGH ARRAY OF CHAR; VAR szCertFileOrSerialNum: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE OCSP_ReadResponse(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szResponseFile: NOHIGH ARRAY OF CHAR; VAR szIssuerCert: NOHIGH ARRAY OF CHAR; VAR szExtensions: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* TRIPLE DES FUNCTIONS *) PROCEDURE TDEA_HexMode(VAR szOutput: NOHIGH ARRAY OF CHAR; VAR szInput: NOHIGH ARRAY OF CHAR; VAR szKey: NOHIGH ARRAY OF CHAR; fEncrypt: INTEGER; VAR szMode: NOHIGH ARRAY OF CHAR; VAR szIV: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE TDEA_B64Mode(VAR szOutput: NOHIGH ARRAY OF CHAR; VAR szInput: NOHIGH ARRAY OF CHAR; VAR szKey: NOHIGH ARRAY OF CHAR; fEncrypt: INTEGER; VAR szMode: NOHIGH ARRAY OF CHAR; VAR szIV: NOHIGH ARRAY OF CHAR): INTEGER; (* [The following two functions are deprecated - use equivalent CIPHER_ functions] *) PROCEDURE TDEA_BytesMode(VAR lpOutput: NOHIGH ARRAY OF LOC; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; fEncrypt: INTEGER; VAR szMode: NOHIGH ARRAY OF CHAR; VAR lpIV: NOHIGH ARRAY OF LOC): INTEGER; PROCEDURE TDEA_File(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR lpKey: NOHIGH ARRAY OF LOC; fEncrypt: INTEGER; VAR szMode: NOHIGH ARRAY OF CHAR; VAR lpIV: NOHIGH ARRAY OF LOC): INTEGER; (* GENERIC BLOCK CIPHER FUNCTIONS *) PROCEDURE CIPHER_Bytes(fEncrypt: INTEGER; VAR lpOutput: NOHIGH ARRAY OF LOC; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; VAR lpIV: NOHIGH ARRAY OF LOC; VAR szAlgAndMode: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_File(fEncrypt: INTEGER; VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR lpKey: NOHIGH ARRAY OF LOC; VAR lpIV: NOHIGH ARRAY OF LOC; VAR szAlgAndMode: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_Hex(fEncrypt: INTEGER; VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szData: NOHIGH ARRAY OF CHAR; VAR szKey: NOHIGH ARRAY OF CHAR; VAR szIV: NOHIGH ARRAY OF CHAR; VAR szAlgAndMode: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_KeyWrap(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR lpKek: NOHIGH ARRAY OF LOC; nKekLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_KeyUnwrap(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR lpKek: NOHIGH ARRAY OF LOC; nKekLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_EncryptBytesPad(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; VAR lpIV: NOHIGH ARRAY OF LOC; VAR szAlgModePad: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_DecryptBytesPad(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; VAR lpIV: NOHIGH ARRAY OF LOC; VAR szAlgModePad: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* New in [v11.1] *) PROCEDURE CIPHER_EncryptBytes2(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; nKeyLen: INTEGER; VAR lpIV: NOHIGH ARRAY OF LOC; nIvLen: INTEGER; VAR szAlgModePad: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_DecryptBytes2(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF LOC; nKeyLen: INTEGER; VAR lpIV: NOHIGH ARRAY OF LOC; nIvLen: INTEGER; VAR szAlgModePad: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_FileEncrypt(VAR szFileOut: NOHIGH ARRAY OF LOC; VAR szFileIn: NOHIGH ARRAY OF LOC; VAR lpKey: NOHIGH ARRAY OF LOC; nKeyLen: INTEGER; VAR lpIV: NOHIGH ARRAY OF LOC; nIvLen: INTEGER; VAR szAlgModePad: NOHIGH ARRAY OF LOC; nOptions: INTEGER): INTEGER; PROCEDURE CIPHER_FileDecrypt(VAR szFileOut: NOHIGH ARRAY OF LOC; VAR szFileIn: NOHIGH ARRAY OF LOC; VAR lpKey: NOHIGH ARRAY OF LOC; nKeyLen: INTEGER; VAR lpIV: NOHIGH ARRAY OF LOC; nIvLen: INTEGER; VAR szAlgModePad: NOHIGH ARRAY OF LOC; nOptions: INTEGER): INTEGER; (* MESSAGE DIGEST HASH FUNCTIONS *) PROCEDURE HASH_Bytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpMessage: NOHIGH ARRAY OF CHAR; nMsgLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE HASH_File(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szFileName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE HASH_HexFromBytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpMessage: NOHIGH ARRAY OF CHAR; nMsgLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE HASH_HexFromFile(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE HASH_HexFromHex(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szMsgHex: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* HMAC FUNCTIONS *) PROCEDURE HMAC_Bytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpMessage: NOHIGH ARRAY OF CHAR; nMsgLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF CHAR; nKeyLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE HMAC_HexFromBytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpMessage: NOHIGH ARRAY OF CHAR; nMsgLen: INTEGER; VAR lpKey: NOHIGH ARRAY OF CHAR; nKeyLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE HMAC_HexFromHex(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szMsgHex: NOHIGH ARRAY OF CHAR; VAR szKeyHex: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* BASE64 AND HEX CONVERSION FUNCTIONS *) PROCEDURE CNV_B64StrFromBytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER): INTEGER; PROCEDURE CNV_BytesFromB64Str(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_B64Filter(VAR szOutput: NOHIGH ARRAY OF CHAR; VAR szInput: NOHIGH ARRAY OF CHAR; nStrLen: INTEGER): INTEGER; PROCEDURE CNV_HexStrFromBytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER): INTEGER; PROCEDURE CNV_BytesFromHexStr(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_HexFilter(VAR szOutput: NOHIGH ARRAY OF CHAR; VAR szInput: NOHIGH ARRAY OF CHAR; nStrLen: INTEGER): INTEGER; (* BASE58 FUNCTIONS *) (* New in v11.0 *) PROCEDURE CNV_Base58FromBytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER): INTEGER; PROCEDURE CNV_Base58ToBytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; (* UTF-8 CONVERSION/CHECK FUNCTIONS *) (* [Note: the following three functions are deprecated] *) PROCEDURE CNV_UTF8FromLatin1(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_Latin1FromUTF8(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_CheckUTF8(VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_UTF8BytesFromLatin1(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_Latin1FromUTF8Bytes(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nBytes: INTEGER): INTEGER; PROCEDURE CNV_CheckUTF8Bytes(VAR lpInput: NOHIGH ARRAY OF LOC; nBytes: INTEGER): INTEGER; PROCEDURE CNV_CheckUTF8File(VAR szFileName: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE CNV_ByteEncoding(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nBytes: INTEGER; nOptions: INTEGER): INTEGER; (* MISC BYTE UTILITIES *) (* New in v11.0 *) PROCEDURE CNV_ReverseBytes(VAR lpOutput: NOHIGH ARRAY OF LOC; VAR lpInput: NOHIGH ARRAY OF LOC; nBytes: INTEGER): INTEGER; PROCEDURE CNV_NumToBytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; nNumber: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE CNV_NumFromBytes(VAR lpInput: NOHIGH ARRAY OF LOC; nBytes: INTEGER; nOptions: INTEGER): INTEGER; (* PEM/BINARY FILE CONVERSIONS *) PROCEDURE PEM_FileFromBinFile(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szHeader: NOHIGH ARRAY OF CHAR; nLineLen: INTEGER): INTEGER; PROCEDURE PEM_FileFromBinFileEx(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szHeader: NOHIGH ARRAY OF CHAR; nLineLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PEM_FileToBinFile(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR): INTEGER; (* RNG FUNCTIONS *) PROCEDURE RNG_Bytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpSeed: NOHIGH ARRAY OF CHAR; nSeedLen: INTEGER): INTEGER; PROCEDURE RNG_Number(nLower: INTEGER; nUpper: INTEGER): INTEGER; PROCEDURE RNG_BytesWithPrompt(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR szPrompt: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RNG_Initialize(VAR szSeedFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RNG_MakeSeedFile(VAR szSeedFile: NOHIGH ARRAY OF CHAR; VAR szPrompt: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RNG_UpdateSeedFile(VAR szSeedFile: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE RNG_Test(VAR szFileOut: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* PADDING FUNCTIONS *) PROCEDURE PAD_BytesBlock(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; nBlkLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PAD_UnpadBytes(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpInput: NOHIGH ARRAY OF LOC; nInputLen: INTEGER; nBlkLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PAD_HexBlock(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR; nBlkLen: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PAD_UnpadHex(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szInput: NOHIGH ARRAY OF CHAR; nBlkLen: INTEGER; nOptions: INTEGER): INTEGER; (* MISC UTILITIES *) PROCEDURE WIPE_File(VAR szFileName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE WIPE_Data(VAR lpData: NOHIGH ARRAY OF CHAR; nDataLen: INTEGER): INTEGER; PROCEDURE PWD_Prompt(VAR szPassword: NOHIGH ARRAY OF CHAR; nPwdLen: INTEGER; VAR szCaption: NOHIGH ARRAY OF CHAR): INTEGER; PROCEDURE PWD_PromptEx(VAR szPassword: NOHIGH ARRAY OF CHAR; nPwdLen: INTEGER; VAR szCaption: NOHIGH ARRAY OF CHAR; VAR szPrompt: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* PASSWORD-BASED ENCRYPTION PROTOTYPES *) PROCEDURE PBE_Kdf2(VAR lpOutput: NOHIGH ARRAY OF LOC; nOutBytes: INTEGER; VAR lpPwd: NOHIGH ARRAY OF LOC; nPwdLen: INTEGER; VAR lpSalt: NOHIGH ARRAY OF LOC; nSaltLen: INTEGER; nCount: INTEGER; nOptions: INTEGER): INTEGER; PROCEDURE PBE_Kdf2Hex(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; dkBytes: INTEGER; VAR szPwd: NOHIGH ARRAY OF CHAR; VAR szSaltHex: NOHIGH ARRAY OF CHAR; nCount: INTEGER; nOptions: INTEGER): INTEGER; (* ASN.1 UTILITIES *) (* [New in v10.0] *) PROCEDURE ASN1_TextDump(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileOrPEMString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE ASN1_Type(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileOrPEMString: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* SIGNATURE FUNCTIONS *) (* [New in v10.0] *) PROCEDURE SIG_SignData(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR szKeyFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szAlgName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE SIG_SignFile(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szDataFile: NOHIGH ARRAY OF CHAR; VAR szKeyFile: NOHIGH ARRAY OF CHAR; VAR szPassword: NOHIGH ARRAY OF CHAR; VAR szAlgName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE SIG_VerifyData(VAR szSignature: NOHIGH ARRAY OF CHAR; VAR lpData: NOHIGH ARRAY OF LOC; nDataLen: INTEGER; VAR szCertOrKeyFile: NOHIGH ARRAY OF CHAR; VAR szAlgName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE SIG_VerifyFile(VAR szSignature: NOHIGH ARRAY OF CHAR; VAR szDataFile: NOHIGH ARRAY OF CHAR; VAR szCertOrKeyFile: NOHIGH ARRAY OF CHAR; VAR szAlgName: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (* SMIME FUNCTIONS *) (* [New in v10.0] *) PROCEDURE SMIME_Wrap(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szFeatures: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE SMIME_Extract(VAR szFileOut: NOHIGH ARRAY OF CHAR; VAR szFileIn: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; PROCEDURE SMIME_Query(VAR szOutput: NOHIGH ARRAY OF CHAR; nOutChars: INTEGER; VAR szFileIn: NOHIGH ARRAY OF CHAR; VAR szQuery: NOHIGH ARRAY OF CHAR; nOptions: INTEGER): INTEGER; (*$endif*) END diCrPKI.