; $Id: diCrPKI.h $ ; For `CryptoSys PKI Pro` Version 10.0.0. ; Requires `diCrPKI.lib` And `diCrPKI.dll` For Win32/64 ; Or `diCrPKI.a` Or `libcryptosyspki.so` For Linux. ; Copyright (C) 2002-15 DI Management Services Pty Limited ; ; All rights reserved. ; ; Last updated: ; $Date: 2016-05-20 19:29:00 $ ; $Revision: 11.1.0 $ #DICRPKI_H_ = 1 ; GENERAL CONSTANTS #PKI_DIR_ENCRYPT = 1 ; Synonyms for direction #PKI_DIR_DECRYPT = 0 #ENCRYPT = 1 ; Maximum number of bytes in hash digest byte array #DECRYPT = 0 #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 ; Encryption block sizes in bytes #PKI_MAX_HASH_LEN = #PKI_MAX_HASH_CHARS #PKI_BLK_TDEA_BYTES = 8 ; Key size in bytes #PKI_BLK_AES_BYTES = 16 #PKI_KEYSIZE_TDEA_BYTES = 24 ; Required size for RNG seed file #PKI_KEYSIZE_MAX_BYTES = 32 #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 = $10 #PKI_SIG_ECDSA_SHA224 = $20 #PKI_SIG_ECDSA_SHA256 = $30 #PKI_SIG_ECDSA_SHA384 = $40 #PKI_SIG_ECDSA_SHA512 = $50 ; PKCS#5 Password-based encryption algorithms #PKI_PBE_SHA_3DES = 0 ; Default ; Added in [v11.0] As simpler alternative To PKI_PBE_PBES2 + PKI_BC #PKI_PBE_PBKDF2_DESEDE3 = $1010 #PKI_PBE_PBKDF2_AES128 = $1020 #PKI_PBE_PBKDF2_AES192 = $1030 #PKI_PBE_PBKDF2_AES256 = $1040 ; --0x1820L Reserved For PKI_PBE_SCRYPT_AES128 ; --0x1840L Reserved For PKI_PBE_SCRYPT_AES256 ; These Next 3 changed in [v11.0] (by adding 0x8000000) #PKI_PBE_MD5_DES = $8000001 ; [Not recommended For new implementations] #PKI_PBE_MD2_DES = $8000002 ; [Not recommended For new implementations] #PKI_PBE_SHA_DES = $8000003 ; [Not recommended For new implementations] ; Synonym retained For backwards compatibility #PKI_PBES2_3DES = #PKI_PBE_PBKDF2_DESEDE3 ; Older alternative To specify PBES2 PBKDF2 #PKI_PBE_PBES2 = $1000 ; Add PKI_BC_* option To specify encryption alg ; 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 #PKI_HASH_RMD160 = 7 ; RIPEMD160 - New in [v11.0] #PKI_HASH_BTC160 = 8 ; BITCOIN160 - New in [v11.0] #PKI_HASH_MODE_TEXT = $10000 #PKI_HASH_DOUBLE = $20000 ; New in [v11.0] ; 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 ; RSA key generation ; PKI_KEY_NODELAY removed in v3.3 #PKI_KEYGEN_INDICATE = $1000000 #PKI_KEY_FORMAT_PEM = $10000 #PKI_KEY_FORMAT_SSL = $20000 #PKI_KEY_TYPE_PKCS8 = $40000 ; New in [v11.0] #PKI_PFX_PLAIN_CERT = $2000000 #PKI_PFX_CLONE_KEY = $4000000 #PKI_PFX_ALT_FORMAT = $100000 #PKI_PFX_P7CHAIN = $0400 ; New in [v10.0] #PKI_CMS_FORMAT_BASE64 = $10000 #PKI_CMS_EXCLUDE_CERTS = $0100 #PKI_CMS_EXCLUDE_DATA = $0200 #PKI_CMS_CERTS_ONLY = $0400 #PKI_CMS_INCLUDE_ATTRS = $0800 #PKI_CMS_ADD_SIGNTIME = $1000 #PKI_CMS_ADD_SMIMECAP = $2000 #PKI_CMS_NO_INFLATE = $1000000 #PKI_CMS_NO_OUTER = $2000000 #PKI_CMS_ALT_ALGID = $4000000 #PKI_CMS_BIGFILE = $8000000 #PKI_XML_RSAKEYVALUE = $0001 #PKI_XML_EXCLPRIVATE = $0010 #PKI_XML_REQPRIVATE = $0020 #PKI_XML_HEXBINARY = $0100 #PKI_EME_DEFAULT = $00 #PKI_EME_PKCSV1_5 = $00 #PKI_EME_OAEP = $10 #PKI_EMSIG_DEFAULT = $20 #PKI_EMSIG_PKCSV1_5 = $20 #PKI_EMSIG_DIGESTONLY = $1000 #PKI_EMSIG_DIGINFO = $2000 #PKI_EMSIG_ISO9796 = $100000 ; X.509 Option flags #PKI_X509_FORMAT_PEM = $10000 #PKI_X509_FORMAT_BIN = $20000 #PKI_X509_REQ_KLUDGE = $100000 #PKI_X509_NO_TIMECHECK = $200000 #PKI_X509_LATIN1 = $400000 #PKI_X509_UTF8 = $800000 #PKI_X509_AUTHKEYID = $1000000 #PKI_X509_NO_BASIC = $2000000 #PKI_X509_CA_TRUE = $4000000 #PKI_X509_VERSION1 = $8000000 #PKI_X509_LDAP = $1000 ; Flags for X.509 Key Usage #PKI_X509_DECIMAL = $8000 #PKI_X509_KEYUSAGE_DIGITALSIGNATURE = $0001 #PKI_X509_KEYUSAGE_NONREPUDIATION = $0002 #PKI_X509_KEYUSAGE_KEYENCIPHERMENT = $0004 #PKI_X509_KEYUSAGE_DATAENCIPHERMENT = $0008 #PKI_X509_KEYUSAGE_KEYAGREEMENT = $0010 #PKI_X509_KEYUSAGE_KEYCERTSIGN = $0020 #PKI_X509_KEYUSAGE_CRLSIGN = $0040 #PKI_X509_KEYUSAGE_ENCIPHERONLY = $0080 ; Specific return values #PKI_X509_KEYUSAGE_DECIPHERONLY = $0100 #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 ; Return values for CNV_CheckUTF #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 = $0 #PKI_CNV_LITTLE_ENDIAN = $1 ; Flags and return values for X.509 and CMS query functions #PKI_QUERY_GETTYPE = $100000 #PKI_QUERY_NUMBER = 1 #PKI_QUERY_STRING = 2 ; Options for RNG functions #PKI_RNG_STRENGTH_112 = $00 #PKI_RNG_STRENGTH_128 = $01 ; Block cipher (BC) algorithm options #PKI_BC_TDEA = $10 #PKI_BC_3DES = $10 #PKI_BC_DESEDE3 = $10 #PKI_BC_AES128 = $20 #PKI_BC_AES192 = $30 #PKI_BC_AES256 = $40 ; Block cipher mode options #PKI_MODE_ECB = $000 #PKI_MODE_CBC = $100 #PKI_MODE_OFB = $200 #PKI_MODE_CFB = $300 #PKI_MODE_CTR = $400 ; Block cipher padding options - added [v3.10] #PKI_PAD_DEFAULT = $0 #PKI_PAD_NOPAD = $10000 #PKI_PAD_PKCS5 = $20000 #PKI_PAD_1ZERO = $30000 ; Added [v11.1] #PKI_PAD_AX923 = $40000 #PKI_PAD_W3C = $50000 ; Cipher file option flags #PKI_IV_PREFIX = $1000 #PKI_PAD_LEAVE = $2000 ; Key transport algorithms ; --$1000L Reserved for PKI_KT_RSAES_OEAP #PKI_KT_RSAES_PKCS = $0000 ; --$2000L Reserved for PKI_KT_RSA_KEM ;added v3.2 withdrawn v3.4 ; Key derivation functions ; --$300L Reserved for PKI_KDF_KDF3 #PKI_KDF_KDF2 = $000 ; ASN.1 utilities - added [v10.0] #PKI_ASN1_NOCOMMENTS = $100000 #PKI_ASN1_ADDLEVELS = $800000 #PKI_ASN1_TYPE_MAXCHARS = 64 ; SIG functions - added [v10.0] #PKI_SIG_USEDIGEST = $1000 #PKI_SIG_DETERMINISTIC = $2000 ; Added [v11.0] #PKI_SIG_ASN1DER = $200000 ; Added [v11.0] ; SMIME functions - added [v10.0] #PKI_SMIME_ENCODE_BASE64 = $10000 #PKI_SMIME_ENCODE_BINARY = $20000 #PKI_SMIME_ADDX = $100000 ; Encoding options - added [v11.0] #PKI_ENCODE_HEX = $30000 #PKI_ENCODE_BASE64URL = $40000 ; General #PKI_GEN_PLATFORM = $40 #PKI_GEN_LEGACY = $8000000 ; Added [v11.0] ; __stdcall convention required for Win32/64 DLL only Import "diCrPKI.lib" ; GENERAL FUNCTIONS PKI_Version.l(*nReserved1.long, *nReserved2.long) As "PKI_Version" PKI_LicenceType.l(nOptions.l) As "PKI_LicenceType" PKI_LastError.l(*szOutput.p-ascii, nOutChars.l) As "PKI_LastError" PKI_ErrorCode.l() As "PKI_ErrorCode" PKI_ErrorLookup.l(*szOutput.p-ascii, nOutChars.l, nErrCode.l) As "PKI_ErrorLookup" PKI_CompileTime.l(*szOutput.p-ascii, nOutChars.l) As "PKI_CompileTime" PKI_ModuleName.l(*szOutput.p-ascii, nOutChars.l, nOptions.l) As "PKI_ModuleName" PKI_PowerUpTests.l(nOptions.l) As "PKI_PowerUpTests" ; CRYPTOGRAPHIC MESSAGE SYNTAX (CMS) FUNCTIONS CMS_MakeEnvData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szCertList.p-ascii, *szSeed.p-ascii, nSeedLen.l, nOptions.l) As "CMS_MakeEnvData" CMS_MakeEnvDataFromString.l(*szFileOut.p-ascii, *szDataIn.p-ascii, *szCertList.p-ascii, *szSeed.p-ascii, nSeedLen.l, nOptions.l) As "CMS_MakeEnvDataFromString" CMS_ReadEnvData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szCertFile.p-ascii, *szPrivateKey.p-ascii, nOptions.l) As "CMS_ReadEnvData" CMS_ReadEnvDataToString.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, *szCertFile.p-ascii, *szPrivateKey.p-ascii, nOptions.l) As "CMS_ReadEnvDataToString" CMS_MakeSigData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szCertList.p-ascii, *szPrivateKey.p-ascii, nOptions.l) As "CMS_MakeSigData" CMS_MakeSigDataFromString.l(*szFileOut.p-ascii, *szDataIn.p-ascii, *szCertList.p-ascii, *szPrivateKey.p-ascii, nOptions.l) As "CMS_MakeSigDataFromString" CMS_MakeSigDataFromSigValue.l(*szFileOut.p-ascii, *lpSigValue.p-ascii, nSigLen.l, *lpData.p-ascii, nDataLen.l, *szCertList.p-ascii, nOptions.l) As "CMS_MakeSigDataFromSigValue" CMS_MakeDetachedSig.l(*szFileOut.p-ascii, *szHexDigest.p-ascii, *szCertList.p-ascii, *szPrivateKey.p-ascii, nOptions.l) As "CMS_MakeDetachedSig" CMS_ReadSigData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, nOptions.l) As "CMS_ReadSigData" CMS_ReadSigDataToString.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, nOptions.l) As "CMS_ReadSigDataToString" CMS_GetSigDataDigest.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, *szCertFile.p-ascii, nOptions.l) As "CMS_GetSigDataDigest" CMS_VerifySigData.l(*szFileIn.p-ascii, *szCertFile.p-ascii, *szHexDigest.p-ascii, nOptions.l) As "CMS_VerifySigData" CMS_QuerySigData.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, *szQuery.p-ascii, nOptions.l) As "CMS_QuerySigData" CMS_QueryEnvData.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, *szQuery.p-ascii, nOptions.l) As "CMS_QueryEnvData" ; New in v10.0 CMS_MakeComprData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, nOptions.l) As "CMS_MakeComprData" CMS_ReadComprData.l(*szFileOut.p-ascii, *szFileIn.p-ascii, nOptions.l) As "CMS_ReadComprData" ; RSA KEY FUNCTIONS RSA_MakeKeys.l(*szPubKeyFile.p-ascii, *szEpkFile.p-ascii, nBits.l, nExpFermat.l, nTests.l, nCount.l, *szPassword.p-ascii, *lpSeed, nSeedLen.l, nOptions.l) As "RSA_MakeKeys" RSA_ReadEncPrivateKey.l(*szOutput.p-ascii, nOutChars.l, *szEpkFile.p-ascii, *szPassword.p-ascii, nOptions.l) As "RSA_ReadEncPrivateKey" RSA_ReadPrivateKeyInfo.l(*szOutput.p-ascii, nOutChars.l, *szKeyFile.p-ascii, nOptions.l) As "RSA_ReadPrivateKeyInfo" RSA_GetPrivateKeyFromPFX.l(*szFileOut.p-ascii, *szPfxFile.p-ascii, nOptions.l) As "RSA_GetPrivateKeyFromPFX" RSA_ReadPublicKey.l(*szOutput.p-ascii, nOutChars.l, *szPubKeyFile.p-ascii, nOptions.l) As "RSA_ReadPublicKey" RSA_GetPublicKeyFromCert.l(*szOutput.p-ascii, nOutChars.l, *szCertFile.p-ascii, nOptions.l) As "RSA_GetPublicKeyFromCert" RSA_SavePublicKey.l(*szFileOut.p-ascii, *szKeyString.p-ascii, nOptions.l) As "RSA_SavePublicKey" RSA_SavePrivateKeyInfo.l(*szFileOut.p-ascii, *szKeyString.p-ascii, nOptions.l) As "RSA_SavePrivateKeyInfo" RSA_SaveEncPrivateKey.l(*szFileOut.p-ascii, *szKeyString.p-ascii, nCount.l, *szPassword.p-ascii, nOptions.l) As "RSA_SaveEncPrivateKey" RSA_KeyBits.l(*szKeyString.p-ascii) As "RSA_KeyBits" RSA_KeyBytes.l(*szKeyString.p-ascii) As "RSA_KeyBytes" RSA_ToXMLString.l(*szOutput.p-ascii, nOutChars.l, *szKeyString.p-ascii, nOptions.l) As "RSA_ToXMLString" RSA_FromXMLString.l(*szOutput.p-ascii, nOutChars.l, *szXmlString.p-ascii, nOptions.l) As "RSA_FromXMLString" RSA_CheckKey.l(*szKeyString.p-ascii, nOptions.l) As "RSA_CheckKey" RSA_KeyHashCode.l(*szKeyString.p-ascii) As "RSA_KeyHashCode" RSA_KeyMatch.l(*szPrivateKey.p-ascii, *szPublicKey.p-ascii) As "RSA_KeyMatch" RSA_ReadPrivateKeyFromPFX.l(*szOutput.p-ascii, nOutChars.l, *szPfxFile.p-ascii, *szPassword.p-ascii, nOptions.l) As "RSA_ReadPrivateKeyFromPFX" RSA_PublicKeyFromPrivate.l(*szOutput.p-ascii, nOutChars.l, *szKeyString.p-ascii, nOptions.l) As "RSA_PublicKeyFromPrivate" ; New in v10.0 RSA_ReadAnyPrivateKey.l(*szOutput.p-ascii, nOutChars.l, *szKeyFileOrString.p-ascii, *szPassword.p-ascii, nOptions.l) As "RSA_ReadAnyPrivateKey" RSA_ReadAnyPublicKey.l(*szOutput.p-ascii, nOutChars.l, *szKeyFileOrString.p-ascii, nOptions.l) As "RSA_ReadAnyPublicKey" RSA_KeyValue.l(*szOutput.p-ascii, nOutChars.l, *szKeyString.p-ascii, *szFieldName.p-ascii, nOptions.l) As "RSA_KeyValue" ; 'RAW' RSA ENCRYPTION/DECRYPTION FUNCTIONS RSA_RawPublic.l(*lpData.p-ascii, nDataLen.l, *szPublicKey.p-ascii, nOptions.l) As "RSA_RawPublic" RSA_RawPrivate.l(*lpData.p-ascii, nDataLen.l, *szPrivateKey.p-ascii, nOptions.l) As "RSA_RawPrivate" RSA_EncodeMsg.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, nOptions.l) As "RSA_EncodeMsg" RSA_DecodeMsg.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, nOptions.l) As "RSA_DecodeMsg" ; ELLIPTIC CURVE CRYPTOGRAPHY FUNCTIONS ; New in v11.0 ECC_MakeKeys.l(*szPubKeyFile.p-ascii, *szPriKeyFile.p-ascii, *szCurveName.p-ascii, *szPassword.p-ascii, *szParams.p-ascii, nOptions.l) As "ECC_MakeKeys" ECC_ReadKeyByCurve.l(*szOutput.p-ascii, nOutChars.l, *szHexKey.p-ascii, *szCurveName.p-ascii, nOptions.l) As "ECC_ReadKeyByCurve" ECC_ReadPrivateKey.l(*szOutput.p-ascii, nOutChars.l, *szKeyFileOrString.p-ascii, *szPassword.p-ascii, nOptions.l) As "ECC_ReadPrivateKey" ECC_ReadPublicKey.l(*szOutput.p-ascii, nOutChars.l, *szKeyFileOrString.p-ascii, nOptions.l) As "ECC_ReadPublicKey" ECC_SaveEncKey.l(*szFileOut.p-ascii, *szIntKeyString.p-ascii, *szPassword.p-ascii, *szParams.p-ascii, nOptions.l) As "ECC_SaveEncKey" ECC_SaveKey.l(*szFileOut.p-ascii, *szIntKeyString.p-ascii, nOptions.l) As "ECC_SaveKey" ECC_PublicKeyFromPrivate.l(*szOutput.p-ascii, nOutChars.l, *szIntKeyString.p-ascii, nOptions.l) As "ECC_PublicKeyFromPrivate" ECC_QueryKey.l(szOutput.p-ascii, nOutChars.l, *szIntKeyString.p-ascii, *szQuery.p-ascii, nOptions.l) As "ECC_QueryKey" ; PKCS12 FILE FUNCTIONS PFX_MakeFile.l(*szFileOut.p-ascii, *szCertFile.p-ascii, *szEpkFile.p-ascii, *szPassword.p-ascii, *szFriendlyName.p-ascii, nOptions.l) As "PFX_MakeFile" PFX_VerifySig.l(*szFileName.p-ascii, *szPassword.p-ascii, nOptions.l) As "PFX_VerifySig" ; X509 CERTIFICATE FUNCTIONS X509_MakeCert.l(*szNewCertFile.p-ascii, *szIssuerCertFile.p-ascii, *szSubjectPubKeyFile.p-ascii, *szIssuerEpkFile.p-ascii, nCertNum.l, nYearsValid.l, *szDistName.p-ascii, *szExtensions.p-ascii, nKeyUsageFlags.l, *szPassword.p-ascii, nOptions.l) As "X509_MakeCert" X509_MakeCertSelf.l(*szNewCertFile.p-ascii, *szEpkFile.p-ascii, nCertNum.l, nYearsValid.l, *szDistName.p-ascii, *szExtensions.p-ascii, nKeyUsageFlags.l, *szPassword.p-ascii, nOptions.l) As "X509_MakeCertSelf" X509_CertRequest.l(*szNewReqFile.p-ascii, *szEpkFile.p-ascii, *szDistName.p-ascii, *szReserved.p-ascii, *szPassword.p-ascii, nOptions.l) As "X509_CertRequest" X509_VerifyCert.l(*szCertToVerify.p-ascii, *szIssuerCert.p-ascii, nOptions.l) As "X509_VerifyCert" X509_CertThumb.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, nOptions.l) As "X509_CertThumb" X509_CertIsValidNow.l(*szCertFile.p-ascii, nOptions.l) As "X509_CertIsValidNow" X509_CertIssuedOn.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, nOptions.l) As "X509_CertIssuedOn" X509_CertExpiresOn.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, nOptions.l) As "X509_CertExpiresOn" X509_CertSerialNumber.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, nOptions.l) As "X509_CertSerialNumber" X509_HashIssuerAndSN.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, nOptions.l) As "X509_HashIssuerAndSN" X509_CertIssuerName.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, *szDelim.p-ascii, nOptions.l) As "X509_CertIssuerName" X509_CertSubjectName.l(*szCertFile.p-ascii, *szOutput.p-ascii, nOutChars.l, *szDelim.p-ascii, nOptions.l) As "X509_CertSubjectName" X509_GetCertFromP7Chain.l(*szNewCertFile.p-ascii, *szP7cFile.p-ascii, nIndex.l, nOptions.l) As "X509_GetCertFromP7Chain" X509_GetCertFromPFX.l(*szNewCertFile.p-ascii, *szPfxFile.p-ascii, *szPassword.p-ascii, nOptions.l) As "X509_GetCertFromPFX" X509_KeyUsageFlags.l(*szCertFile.p-ascii) As "X509_KeyUsageFlags" X509_QueryCert.l(*szOutput.p-ascii, nOutChars.l, *szCertFile.p-ascii, *szQuery.p-ascii, nOptions.l) As "X509_QueryCert" X509_ReadStringFromFile.l(*szOutput.p-ascii, nOutChars.l, *szCertFile.p-ascii, nOptions.l) As "X509_ReadStringFromFile" X509_SaveFileFromString.l(*szNewCertFile.p-ascii, *szCertString.p-ascii, nOptions.l) As "X509_SaveFileFromString" X509_TextDump.l(*szFileOut.p-ascii, *szCertFile.p-ascii, nOptions.l) As "X509_TextDump" X509_ValidatePath.l(*szCertListOrP7File.p-ascii, *szTrustedCert.p-ascii, nOptions.l) As "X509_ValidatePath" ; X509 CRL FUNCTIONS X509_MakeCRL.l(*szCrlFile.p-ascii, *szIssuerCert.p-ascii, *szIssuerKeyFile.p-ascii, *szPassword.p-ascii, *szRevokedCertList.p-ascii, *szExtensions.p-ascii, nOptions.l) As "X509_MakeCRL" X509_CheckCertInCRL.l(*szCertFile.p-ascii, *szCrlFile.p-ascii, *szCRLIssuerCert.p-ascii, *szDate.p-ascii, nOptions.l) As "X509_CheckCertInCRL" ; ONLINE CERTIFICATE STATUS PROTOCOL .l(OCSP) FUNCTIONS as "CERTIFICATE STATUS PROTOCOL " OCSP_MakeRequest.l(*szOutput.p-ascii, nOutChars.l, *szIssuerCert.p-ascii, *szCertFileOrSerialNum.p-ascii, *szExtensions.p-ascii, nOptions.l) As "OCSP_MakeRequest" OCSP_ReadResponse.l(*szOutput.p-ascii, nOutChars.l, *szResponseFile.p-ascii, *szIssuerCert.p-ascii, *szExtensions.p-ascii, nOptions.l) As "OCSP_ReadResponse" ; TRIPLE DES FUNCTIONS TDEA_HexMode.l(*szOutput.p-ascii, *szInput.p-ascii, *szKey.p-ascii, fEncrypt.l, *szMode.p-ascii, *szIV.p-ascii) As "TDEA_HexMode" TDEA_B64Mode.l(*szOutput.p-ascii, *szInput.p-ascii, *szKey.p-ascii, fEncrypt.l, *szMode.p-ascii, *szIV.p-ascii) As "TDEA_B64Mode" ; [The following two functions are deprecated - use equivalent CIPHER_ functions] TDEA_BytesMode.l(*lpOutput.p-ascii, *lpData.p-ascii, nDataLen.l, *lpKey.p-ascii, fEncrypt.l, *szMode.p-ascii, *lpIV.p-ascii) As "TDEA_BytesMode" TDEA_File.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *lpKey.p-ascii, fEncrypt.l, *szMode.p-ascii, *lpIV.p-ascii) As "TDEA_File" ; GENERIC BLOCK CIPHER FUNCTIONS CIPHER_Bytes.l(fEncrypt.l, *lpOutput.p-ascii, *lpData.p-ascii, nDataLen.l, *lpKey.p-ascii, *lpIV.p-ascii, *szAlgAndMode.p-ascii, nOptions.l) As "CIPHER_Bytes" CIPHER_File.l(fEncrypt.l, *szFileOut.p-ascii, *szFileIn.p-ascii, *lpKey.p-ascii, *lpIV.p-ascii, *szAlgAndMode.p-ascii, nOptions.l) As "CIPHER_File" CIPHER_Hex.l(fEncrypt.l, *szOutput.p-ascii, nOutChars.l, *szData.p-ascii, *szKey.p-ascii, *szIV.p-ascii, *szAlgAndMode.p-ascii, nOptions.l) As "CIPHER_Hex" CIPHER_KeyWrap.l(*lpOutput.p-ascii, nOutBytes.l, *lpData.p-ascii, nDataLen.l, *lpKek.p-ascii, nKekLen.l, nOptions.l) As "CIPHER_KeyWrap" CIPHER_KeyUnwrap.l(*lpOutput.p-ascii, nOutBytes.l, *lpData.p-ascii, nDataLen.l, *lpKek.p-ascii, nKekLen.l, nOptions.l) As "CIPHER_KeyUnwrap" ; Added [v3.10] CIPHER_EncryptBytesPad.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, *lpKey.p-ascii, *lpIV.p-ascii, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_EncryptBytesPad" CIPHER_DecryptBytesPad.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, *lpKey.p-ascii, *lpIV.p-ascii, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_DecryptBytesPad" ; New in [v11.1] CIPHER_EncryptBytes2.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, *lpKey.p-ascii, nKeyLen.l, *lpIV.p-ascii, nIvLen.l, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_EncryptBytes2" CIPHER_DecryptBytes2.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, *lpKey.p-ascii, nKeyLen.l, *lpIV.p-ascii, nIvLen.l, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_DecryptBytes2" CIPHER_FileEncrypt.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *lpKey.p-ascii, nKeyLen.l, *lpIV.p-ascii, nIvLen.l, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_FileEncrypt" CIPHER_FileDecrypt.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *lpKey.p-ascii, nKeyLen.l, *lpIV.p-ascii, nIvLen.l, *szAlgModePad.p-ascii, nOptions.l) As "CIPHER_FileDecrypt" ; MESSAGE DIGEST HASH FUNCTIONS HASH_Bytes.l(*lpOutput.p-ascii, nOutBytes.l, *lpMessage, nMsgLen.l, nOptions.l) As "HASH_Bytes" HASH_File.l(*lpOutput.p-ascii, nOutBytes.l, *szFileName.p-ascii, nOptions.l) As "HASH_File" HASH_HexFromBytes.l(*szOutput.p-ascii, nOutChars.l, *lpMessage, nMsgLen.l, nOptions.l) As "HASH_HexFromBytes" HASH_HexFromFile.l(*szOutput.p-ascii, nOutChars.l, *szFileName.p-ascii, nOptions.l) As "HASH_HexFromFile" HASH_HexFromHex.l(*szOutput.p-ascii, nOutChars.l, *szMsgHex.p-ascii, nOptions.l) As "HASH_HexFromHex" ; HMAC FUNCTIONS HMAC_Bytes.l(*lpOutput.p-ascii, nOutBytes.l, *lpMessage, nMsgLen.l, *lpKey, nKeyLen.l, nOptions.l) As "HMAC_Bytes" HMAC_HexFromBytes.l(*szOutput.p-ascii, nOutChars.l, *lpMessage, nMsgLen.l, *lpKey, nKeyLen.l, nOptions.l) As "HMAC_HexFromBytes" HMAC_HexFromHex.l(*szOutput.p-ascii, nOutChars.l, *szMsgHex.p-ascii, *szKeyHex.p-ascii, nOptions.l) As "HMAC_HexFromHex" ; BASE64 AND HEX CONVERSION FUNCTIONS CNV_B64StrFromBytes.l(*szOutput.p-ascii, nOutChars.l, *lpInput.p-ascii, nInputLen.l) As "CNV_B64StrFromBytes" CNV_BytesFromB64Str.l(*lpOutput.p-ascii, nOutBytes.l, *szInput.p-ascii) As "CNV_BytesFromB64Str" CNV_B64Filter.l(*szOutput.p-ascii, *szInput.p-ascii, nStrLen.l) As "CNV_B64Filter" CNV_HexStrFromBytes.l(*szOutput.p-ascii, nOutChars.l, *lpInput.p-ascii, nInputLen.l) As "CNV_HexStrFromBytes" CNV_BytesFromHexStr.l(*lpOutput.p-ascii, nOutBytes.l, *szInput.p-ascii) As "CNV_BytesFromHexStr" CNV_HexFilter.l(*szOutput.p-ascii, *szInput.p-ascii, nStrLen.l) As "CNV_HexFilter" ; BASE58 FUNCTIONS ; New in v11.0 CNV_Base58FromBytes.l(*szOutput.p-ascii, nOutChars.l, *lpInput.p-ascii, nInputLen.l) As "CNV_Base58FromBytes" CNV_Base58ToBytes.l(*lpOutput.p-ascii, nOutBytes.l, *szInput.p-ascii) As "CNV_Base58ToBytes" ; UTF-8 CONVERSION/CHECK FUNCTIONS ; [The following three functions are deprecated] CNV_UTF8FromLatin1.l(*szOutput.p-ascii, nOutChars.l, *szInput.p-ascii) As "CNV_UTF8FromLatin1" CNV_Latin1FromUTF8.l(*szOutput.p-ascii, nOutChars.l, *szInput.p-ascii) As "CNV_Latin1FromUTF8" CNV_CheckUTF8.l(*szInput.p-ascii) As "CNV_CheckUTF8" ; [New in v3.6] CNV_UTF8BytesFromLatin1.l(*lpOutput.p-ascii, nOutBytes.l, *szInput.p-ascii) As "CNV_UTF8BytesFromLatin1" CNV_Latin1FromUTF8Bytes.l(*szOutput.p-ascii, nOutChars.l, *lpInput.p-ascii, nBytes.l) As "CNV_Latin1FromUTF8Bytes" CNV_CheckUTF8Bytes.l(*lpInput.p-ascii, nBytes.l) As "CNV_CheckUTF8Bytes" CNV_CheckUTF8File.l(*szFileName.p-ascii) As "CNV_CheckUTF8File" CNV_ByteEncoding.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nBytes.l, nOptions.l) As "CNV_ByteEncoding" ; MISC BYTE UTILITIES ; New in v11.0 CNV_ReverseBytes.l(*lpOutput.p-ascii, *lpInput.p-ascii, nBytes.l) As "CNV_ReverseBytes" CNV_NumToBytes.l(*lpOutput.p-ascii, nOutBytes.l, nNumber.l, nOptions.l) As "CNV_NumToBytes" CNV_NumFromBytes.l(*lpInput.p-ascii, nBytes.l, nOptions.l) As "CNV_NumFromBytes" ; PEM/BINARY FILE CONVERSIONS PEM_FileFromBinFile.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szHeader.p-ascii, nLineLen.l) As "PEM_FileFromBinFile" PEM_FileFromBinFileEx.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szHeader.p-ascii, nLineLen.l, nOptions.l) As "PEM_FileFromBinFileEx" PEM_FileToBinFile.l(*szFileOut.p-ascii, *szFileIn.p-ascii) As "PEM_FileToBinFile" ; RNG FUNCTIONS RNG_Bytes.l(*lpOutput.p-ascii, nOutBytes.l, *lpSeed, nSeedLen.l) As "RNG_Bytes" RNG_Number.l(nLower.l, nUpper.l) As "RNG_Number" RNG_BytesWithPrompt.l(*lpOutput.p-ascii, nOutBytes.l, *szPrompt.p-ascii, nOptions.l) As "RNG_BytesWithPrompt" RNG_Initialize.l(*szSeedFile.p-ascii, nOptions.l) As "RNG_Initialize" RNG_MakeSeedFile.l(*szSeedFile.p-ascii, *szPrompt.p-ascii, nOptions.l) As "RNG_MakeSeedFile" RNG_UpdateSeedFile.l(*szSeedFile.p-ascii, nOptions.l) As "RNG_UpdateSeedFile" RNG_Test.l(*szFileOut.p-ascii, nOptions.l) As "RNG_Test" ; PADDING FUNCTIONS PAD_BytesBlock.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, nBlkLen.l, nOptions.l) As "PAD_BytesBlock" PAD_UnpadBytes.l(*lpOutput.p-ascii, nOutBytes.l, *lpInput.p-ascii, nInputLen.l, nBlkLen.l, nOptions.l) As "PAD_UnpadBytes" PAD_HexBlock.l(*szOutput.p-ascii, nOutChars.l, *szInput.p-ascii, nBlkLen.l, nOptions.l) As "PAD_HexBlock" PAD_UnpadHex.l(*szOutput.p-ascii, nOutChars.l, *szInput.p-ascii, nBlkLen.l, nOptions.l) As "PAD_UnpadHex" ; MISC UTILITIES WIPE_File.l(*szFileName.p-ascii, nOptions.l) As "WIPE_File" WIPE_Data.l(*lpData, nDataLen.l) As "WIPE_Data" PWD_Prompt.l(*szPassword.p-ascii, nPwdLen.l, *szCaption.p-ascii) As "PWD_Prompt" PWD_PromptEx.l(*szPassword.p-ascii, nPwdLen.l, *szCaption.p-ascii, *szPrompt.p-ascii, nOptions.l) As "PWD_PromptEx" ; PASSWORD-BASED ENCRYPTION PROTOTYPES ; [New in v3.10] PBE_Kdf2.l(*lpOutput.p-ascii, nOutBytes.l, *lpPwd.p-ascii, nPwdLen.l, *lpSalt.p-ascii, nSaltLen.l, nCount.l, nOptions.l) As "PBE_Kdf2" PBE_Kdf2Hex.l(*szOutput.p-ascii, nOutChars.l, dkBytes.l, *szPwd.p-ascii, *szSaltHex.p-ascii, nCount.l, nOptions.l) As "PBE_Kdf2Hex" ; ASN.1 UTILITIES ; [New in v10.0] ASN1_TextDump.l(*szFileOut.p-ascii, *szFileOrPEMString.p-ascii, nOptions.l) As "ASN1_TextDump" ASN1_Type.l(*szOutput.p-ascii, nOutChars.l, *szFileOrPEMString.p-ascii, nOptions.l) As "ASN1_Type" ; SIGNATURE FUNCTIONS ; [New in v10.0] SIG_SignData.l(*szOutput.p-ascii, nOutChars.l, *lpData.p-ascii, nDataLen.l, *szKeyFile.p-ascii, *szPassword.p-ascii, *szAlgName.p-ascii, nOptions.l) As "SIG_SignData" SIG_SignFile.l(*szOutput.p-ascii, nOutChars.l, *szDataFile.p-ascii, *szKeyFile.p-ascii, *szPassword.p-ascii, *szAlgName.p-ascii, nOptions.l) As "SIG_SignFile" SIG_VerifyData.l(*szSignature.p-ascii, *lpData.p-ascii, nDataLen.l, *szCertOrKeyFile.p-ascii, *szAlgName.p-ascii, nOptions.l) As "SIG_VerifyData" SIG_VerifyFile.l(*szSignature.p-ascii, *szDataFile.p-ascii, *szCertOrKeyFile.p-ascii, *szAlgName.p-ascii, nOptions.l) As "SIG_VerifyFile" ; SMIME FUNCTIONS ; [New in v10.0] SMIME_Wrap.l(*szFileOut.p-ascii, *szFileIn.p-ascii, *szFeatures.p-ascii, nOptions.l) As "SMIME_Wrap" SMIME_Extract.l(*szFileOut.p-ascii, *szFileIn.p-ascii, nOptions.l) As "SMIME_Extract" SMIME_Query.l(*szOutput.p-ascii, nOutChars.l, *szFileIn.p-ascii, *szQuery.p-ascii, nOptions.l) As "SMIME_Query" EndImport ; IDE Options = PureBasic 5.42 LTS (Windows - x64) ; CursorPosition = 435 ; FirstLine = 419 ; EnableUnicode ; EnableXP ; EnablePurifier