1. my first Wapper for diCrPKI
- Posted by begin Feb 19, 2018
- 1466 views
hi,
having started out with euphoria/phix, i needed a wrapper for diCrPKI (https://www.cryptosys.net/index.html). maybe someone can use it.
-- 0xId: diCrPKI.h 0x -- 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 -- <www.di-mgt.com.au> <www.cryptosys.net> -- All rights reserved. -- -- Last updated: -- 0xDate: 2015-03-27 17:07:00 0x -- 0xRevision: 10.0.0 0x include std/dll.e constant C_BYTE = C_UCHAR, C_ATOM = C_USHORT, C_WORD = C_USHORT, C_HFILE = C_INT, C_WNDPROC = C_POINTER, C_LPSTR = C_POINTER, C_LRESULT = C_POINTER, C_LANGID = C_WORD, C_COLORREF = C_DWORD, --0x00bbggrr $ constant DICRPKI_H_ = 1 -- GENERAL CONSTANTS constant PKI_DIR_ENCRYPT = 1 -- Synonyms for direction constant PKI_DIR_DECRYPT = 0 constant ENCRYPT = 1 -- Maximum number of bytes in hash digest byte array constant DECRYPT = 0 constant PKI_MAX_HASH_BYTES = 64 constant PKI_SHA1_BYTES = 20 constant PKI_SHA224_BYTES = 28 constant PKI_SHA256_BYTES = 32 constant PKI_SHA384_BYTES = 48 constant PKI_SHA512_BYTES = 64 constant PKI_MD5_BYTES = 16 constant PKI_MD2_BYTES = 16 constant PKI_RMD160_BYTES = 20 constant PKI_BTC160_BYTES = 20 -- Maximum number of hex characters in hash digest (excl null) constant PKI_MAX_HASH_CHARS = (2*PKI_MAX_HASH_BYTES) constant PKI_SHA1_CHARS = (2*PKI_SHA1_BYTES) constant PKI_SHA224_CHARS = (2*PKI_SHA224_BYTES) constant PKI_SHA256_CHARS = (2*PKI_SHA256_BYTES) constant PKI_SHA384_CHARS = (2*PKI_SHA384_BYTES) constant PKI_SHA512_CHARS = (2*PKI_SHA512_BYTES) constant PKI_MD5_CHARS = (2*PKI_MD5_BYTES) constant PKI_MD2_CHARS = (2*PKI_MD2_BYTES) constant PKI_RMD160_CHARS = (2*PKI_RMD160_BYTES) constant PKI_BTC160_CHARS = (2*PKI_BTC160_BYTES) -- Synonym retained for backwards compatibility -- Encryption block sizes in bytes constant PKI_MAX_HASH_LEN = PKI_MAX_HASH_CHARS constant PKI_BLK_TDEA_BYTES = 8 -- Key size in bytes constant PKI_BLK_AES_BYTES = 16 constant PKI_KEYSIZE_TDEA_BYTES = 24 -- Required size for RNG seed file constant PKI_KEYSIZE_MAX_BYTES = 32 constant PKI_RNG_SEED_BYTES = 64 -- OPTIONS constant PKI_DEFAULT = 0 -- Signature algorithms constant PKI_SIG_SHA1RSA = 0 constant PKI_SIG_MD5RSA = 1 constant PKI_SIG_MD2RSA = 2 constant PKI_SIG_SHA256RSA = 3 constant PKI_SIG_SHA384RSA = 4 constant PKI_SIG_SHA512RSA = 5 constant PKI_SIG_SHA224RSA = 6 -- New in [v11.0] ... constant PKI_SIG_ECDSA_SHA1 = 0x10 constant PKI_SIG_ECDSA_SHA224 = 0x20 constant PKI_SIG_ECDSA_SHA256 = 0x30 constant PKI_SIG_ECDSA_SHA384 = 0x40 constant PKI_SIG_ECDSA_SHA512 = 0x50 -- PKCSconstant 5 Password-based encryption algorithms constant PKI_PBE_SHA_3DES = 0 -- Default -- Added in [v11.0] As simpler alternative To PKI_PBE_PBES2 + PKI_BC constant PKI_PBE_PBKDF2_DESEDE3 = 0x1010 constant PKI_PBE_PBKDF2_AES128 = 0x1020 constant PKI_PBE_PBKDF2_AES192 = 0x1030 constant PKI_PBE_PBKDF2_AES256 = 0x1040 -- --0x1820L Reserved For PKI_PBE_SCRYPT_AES128 -- --0x1840L Reserved For PKI_PBE_SCRYPT_AES256 -- These Next 3 changed in [v11.0] (by adding 0x8000000) constant PKI_PBE_MD5_DES = 0x8000001 -- [Not recommended For new implementations] constant PKI_PBE_MD2_DES = 0x8000002 -- [Not recommended For new implementations] constant PKI_PBE_SHA_DES = 0x8000003 -- [Not recommended For new implementations] -- Synonym retained For backwards compatibility constant PKI_PBES2_3DES = PKI_PBE_PBKDF2_DESEDE3 -- Older alternative To specify PBES2 PBKDF2 constant PKI_PBE_PBES2 = 0x1000 -- Add PKI_BC_* option To specify encryption alg -- Message digest hash algorithms constant PKI_HASH_SHA1 = 0 constant PKI_HASH_MD5 = 1 constant PKI_HASH_MD2 = 2 constant PKI_HASH_SHA256 = 3 constant PKI_HASH_SHA384 = 4 constant PKI_HASH_SHA512 = 5 constant PKI_HASH_SHA224 = 6 constant PKI_HASH_RMD160 = 7 -- RIPEMD160 - New in [v11.0] constant PKI_HASH_BTC160 = 8 -- BITCOIN160 - New in [v11.0] constant PKI_HASH_MODE_TEXT = 0x10000 constant PKI_HASH_DOUBLE = 0x20000 -- New in [v11.0] -- nFermatExp values for RSA exponent constant PKI_RSAEXP_EQ_3 = 0 constant PKI_RSAEXP_EQ_5 = 1 constant PKI_RSAEXP_EQ_17 = 2 constant PKI_RSAEXP_EQ_257 = 3 constant PKI_RSAEXP_EQ_65537 = 4 -- Return values for RSA_CheckKey constant PKI_VALID_PUBLICKEY = 1 constant PKI_VALID_PRIVATEKEY = 0 -- BIT FLAGS -- RSA key generation -- PKI_KEY_NODELAY removed in v3.3 constant PKI_KEYGEN_INDICATE = 0x1000000 constant PKI_KEY_FORMAT_PEM = 0x10000 constant PKI_KEY_FORMAT_SSL = 0x20000 constant PKI_KEY_TYPE_PKCS8 = 0x40000 -- New in [v11.0] constant PKI_PFX_PLAIN_CERT = 0x2000000 constant PKI_PFX_CLONE_KEY = 0x4000000 constant PKI_PFX_ALT_FORMAT = 0x100000 constant PKI_PFX_P7CHAIN = 0x0400 -- New in [v10.0] constant PKI_CMS_FORMAT_BASE64 = 0x10000 constant PKI_CMS_EXCLUDE_CERTS = 0x0100 constant PKI_CMS_EXCLUDE_DATA = 0x0200 constant PKI_CMS_CERTS_ONLY = 0x0400 constant PKI_CMS_INCLUDE_ATTRS = 0x0800 constant PKI_CMS_ADD_SIGNTIME = 0x1000 constant PKI_CMS_ADD_SMIMECAP = 0x2000 constant PKI_CMS_NO_INFLATE = 0x1000000 constant PKI_CMS_NO_OUTER = 0x2000000 constant PKI_CMS_ALT_ALGID = 0x4000000 constant PKI_CMS_BIGFILE = 0x8000000 constant PKI_XML_RSAKEYVALUE = 0x0001 constant PKI_XML_EXCLPRIVATE = 0x0010 constant PKI_XML_REQPRIVATE = 0x0020 constant PKI_XML_HEXBINARY = 0x0100 constant PKI_EME_DEFAULT = 0x00 constant PKI_EME_PKCSV1_5 = 0x00 constant PKI_EME_OAEP = 0x10 constant PKI_EMSIG_DEFAULT = 0x20 constant PKI_EMSIG_PKCSV1_5 = 0x20 constant PKI_EMSIG_DIGESTONLY = 0x1000 constant PKI_EMSIG_DIGINFO = 0x2000 constant PKI_EMSIG_ISO9796 = 0x100000 -- X.509 Option flags constant PKI_X509_FORMAT_PEM = 0x10000 constant PKI_X509_FORMAT_BIN = 0x20000 constant PKI_X509_REQ_KLUDGE = 0x100000 constant PKI_X509_NO_TIMECHECK = 0x200000 constant PKI_X509_LATIN1 = 0x400000 constant PKI_X509_UTF8 = 0x800000 constant PKI_X509_AUTHKEYID = 0x1000000 constant PKI_X509_NO_BASIC = 0x2000000 constant PKI_X509_CA_TRUE = 0x4000000 constant PKI_X509_VERSION1 = 0x8000000 constant PKI_X509_LDAP = 0x1000 -- Flags for X.509 Key Usage constant PKI_X509_DECIMAL = 0x8000 constant PKI_X509_KEYUSAGE_DIGITALSIGNATURE = 0x0001 constant PKI_X509_KEYUSAGE_NONREPUDIATION = 0x0002 constant PKI_X509_KEYUSAGE_KEYENCIPHERMENT = 0x0004 constant PKI_X509_KEYUSAGE_DATAENCIPHERMENT = 0x0008 constant PKI_X509_KEYUSAGE_KEYAGREEMENT = 0x0010 constant PKI_X509_KEYUSAGE_KEYCERTSIGN = 0x0020 constant PKI_X509_KEYUSAGE_CRLSIGN = 0x0040 constant PKI_X509_KEYUSAGE_ENCIPHERONLY = 0x0080 -- Specific return values constant PKI_X509_KEYUSAGE_DECIPHERONLY = 0x0100 constant PKI_X509_EXPIRED = -1 constant PKI_X509_VALID_NOW = 0 constant PKI_X509_VERIFY_SUCCESS = 0 constant PKI_X509_VERIFY_FAILURE = -1 constant PKI_X509_REVOKED = 1 constant PKI_X509_INVALID = 1 -- Return values for CNV_CheckUTF constant PKI_CHRS_NOT_UTF8 = 0 constant PKI_CHRS_ALL_ASCII = 1 constant PKI_CHRS_ANSI8 = 2 constant PKI_CHRS_MULTIBYTE = 3 -- Options for CNV_ByteEncoding constant PKI_CNV_UTF8_FROM_LATIN1 = 1 constant PKI_CNV_LATIN1_FROM_UTF8 = 2 -- Options For CNV_Num[To/From]Bytes - new in [v11.0] constant PKI_CNV_BIG_ENDIAN = 0x0 constant PKI_CNV_LITTLE_ENDIAN = 0x1 -- Flags and return values for X.509 and CMS query functions constant PKI_QUERY_GETTYPE = 0x100000 constant PKI_QUERY_NUMBER = 1 constant PKI_QUERY_STRING = 2 -- Options for RNG functions constant PKI_RNG_STRENGTH_112 = 0x00 constant PKI_RNG_STRENGTH_128 = 0x01 -- Block cipher (BC) algorithm options constant PKI_BC_TDEA = 0x10 constant PKI_BC_3DES = 0x10 constant PKI_BC_DESEDE3 = 0x10 constant PKI_BC_AES128 = 0x20 constant PKI_BC_AES192 = 0x30 constant PKI_BC_AES256 = 0x40 -- Block cipher mode options constant PKI_MODE_ECB = 0x000 constant PKI_MODE_CBC = 0x100 constant PKI_MODE_OFB = 0x200 constant PKI_MODE_CFB = 0x300 constant PKI_MODE_CTR = 0x400 -- Block cipher padding options - added [v3.10] constant PKI_PAD_DEFAULT = 0x0 constant PKI_PAD_NOPAD = 0x10000 constant PKI_PAD_PKCS5 = 0x20000 constant PKI_PAD_1ZERO = 0x30000 -- Cipher file option flags constant PKI_IV_PREFIX = 0x1000 constant PKI_PAD_LEAVE = 0x2000 -- Key transport algorithms -- --0x1000L Reserved for PKI_KT_RSAES_OEAP constant PKI_KT_RSAES_PKCS = 0x0000 -- --0x2000L Reserved for PKI_KT_RSA_KEM --added v3.2 withdrawn v3.4 -- Key derivation functions -- --0x300L Reserved for PKI_KDF_KDF3 constant PKI_KDF_KDF2 = 0x000 -- ASN.1 utilities - added [v10.0] constant PKI_ASN1_NOCOMMENTS = 0x100000 constant PKI_ASN1_ADDLEVELS = 0x800000 constant PKI_ASN1_TYPE_MAXCHARS = 64 -- SIG functions - added [v10.0] constant PKI_SIG_USEDIGEST = 0x1000 constant PKI_SIG_DETERMINISTIC = 0x2000 -- Added [v11.0] constant PKI_SIG_ASN1DER = 0x200000 -- Added [v11.0] -- SMIME functions - added [v10.0] constant PKI_SMIME_ENCODE_BASE64 = 0x10000 constant PKI_SMIME_ENCODE_BINARY = 0x20000 constant PKI_SMIME_ADDX = 0x100000 -- Encoding options - added [v11.0] constant PKI_ENCODE_HEX = 0x30000 constant PKI_ENCODE_BASE64URL = 0x40000 -- General constant PKI_GEN_PLATFORM = 0x40 constant PKI_GEN_LEGACY = 0x8000000 -- Added [v11.0] -- __stdcall convention required for Win32/64 DLL only public atom diCrPKI = open_dll("diCrPKI.dll") public constant -- GENERAL FUNCTIONS PKI_Version = define_c_func(diCrPKI, "PKI_Version", {C_POINTER, C_POINTER}, C_HANDLE), PKI_LicenceType = define_c_func(diCrPKI, "PKI_LicenceType", {C_INT}, C_HANDLE), PKI_LastError = define_c_func(diCrPKI, "PKI_LastError", {C_LPSTR, C_INT}, C_HANDLE), PKI_ErrorCode = define_c_func(diCrPKI, "PKI_ErrorCode", {}, C_HANDLE), PKI_ErrorLookup = define_c_func(diCrPKI, "PKI_ErrorLookup", {C_LPSTR, C_INT, C_INT}, C_HANDLE), PKI_CompileTime = define_c_func(diCrPKI, "PKI_CompileTime", {C_LPSTR, C_INT}, C_HANDLE), PKI_ModuleName = define_c_func(diCrPKI, "PKI_ModuleName", {C_LPSTR, C_INT, C_INT}, C_HANDLE), PKI_PowerUpTests = define_c_func(diCrPKI, "PKI_PowerUpTests", {C_INT}, C_HANDLE), -- CRYPTOGRAPHIC MESSAGE SYNTAX (CMS) FUNCTIONS CMS_MakeEnvData = define_c_func(diCrPKI, "CMS_MakeEnvData", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), CMS_MakeEnvDataFromString = define_c_func(diCrPKI, "CMS_MakeEnvDataFromString", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), CMS_ReadEnvData = define_c_func(diCrPKI, "CMS_ReadEnvData", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_ReadEnvDataToString = define_c_func(diCrPKI, "CMS_ReadEnvDataToString", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_MakeSigData = define_c_func(diCrPKI, "CMS_MakeSigData", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_MakeSigDataFromString = define_c_func(diCrPKI, "CMS_MakeSigDataFromString", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_MakeSigDataFromSigValue = define_c_func(diCrPKI, "CMS_MakeSigDataFromSigValue", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CMS_MakeDetachedSig = define_c_func(diCrPKI, "CMS_MakeDetachedSig", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_ReadSigData = define_c_func(diCrPKI, "CMS_ReadSigData", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_ReadSigDataToString = define_c_func(diCrPKI, "CMS_ReadSigDataToString", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CMS_GetSigDataDigest = define_c_func(diCrPKI, "CMS_GetSigDataDigest", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_VerifySigData = define_c_func(diCrPKI, "CMS_VerifySigData", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_QuerySigData = define_c_func(diCrPKI, "CMS_QuerySigData", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_QueryEnvData = define_c_func(diCrPKI, "CMS_QueryEnvData", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- New in v10.0 CMS_MakeComprData = define_c_func(diCrPKI, "CMS_MakeComprData", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CMS_ReadComprData = define_c_func(diCrPKI, "CMS_ReadComprData", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- RSA KEY FUNCTIONS RSA_MakeKeys = define_c_func(diCrPKI, "RSA_MakeKeys", {C_LPSTR, C_LPSTR, C_INT, C_INT, C_INT, C_INT, C_LPSTR, C_POINTER, C_INT, C_INT}, C_HANDLE), RSA_ReadEncPrivateKey = define_c_func(diCrPKI, "RSA_ReadEncPrivateKey", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_ReadPrivateKeyInfo = define_c_func(diCrPKI, "RSA_ReadPrivateKeyInfo", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_GetPrivateKeyFromPFX = define_c_func(diCrPKI, "RSA_GetPrivateKeyFromPFX", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_ReadPublicKey = define_c_func(diCrPKI, "RSA_ReadPublicKey", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_GetPublicKeyFromCert = define_c_func(diCrPKI, "RSA_GetPublicKeyFromCert", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_SavePublicKey = define_c_func(diCrPKI, "RSA_SavePublicKey", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_SavePrivateKeyInfo = define_c_func(diCrPKI, "RSA_SavePrivateKeyInfo", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_SaveEncPrivateKey = define_c_func(diCrPKI, "RSA_SaveEncPrivateKey", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_KeyBits = define_c_func(diCrPKI, "RSA_KeyBits", {C_LPSTR}, C_HANDLE), RSA_KeyBytes = define_c_func(diCrPKI, "RSA_KeyBytes", {C_LPSTR}, C_HANDLE), RSA_ToXMLString = define_c_func(diCrPKI, "RSA_ToXMLString", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_FromXMLString = define_c_func(diCrPKI, "RSA_FromXMLString", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_CheckKey = define_c_func(diCrPKI, "RSA_CheckKey", {C_LPSTR, C_INT}, C_HANDLE), RSA_KeyHashCode = define_c_func(diCrPKI, "RSA_KeyHashCode", {C_LPSTR}, C_HANDLE), RSA_KeyMatch = define_c_func(diCrPKI, "RSA_KeyMatch", {C_LPSTR, C_LPSTR}, C_HANDLE), RSA_ReadPrivateKeyFromPFX = define_c_func(diCrPKI, "RSA_ReadPrivateKeyFromPFX", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_PublicKeyFromPrivate = define_c_func(diCrPKI, "RSA_PublicKeyFromPrivate", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), -- New in v10.0 RSA_ReadAnyPrivateKey = define_c_func(diCrPKI, "RSA_ReadAnyPrivateKey", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RSA_ReadAnyPublicKey = define_c_func(diCrPKI, "RSA_ReadAnyPublicKey", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_KeyValue = define_c_func(diCrPKI, "RSA_KeyValue", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- 'RAW' RSA ENCRYPTION/DECRYPTION FUNCTIONS RSA_RawPublic = define_c_func(diCrPKI, "RSA_RawPublic", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_RawPrivate = define_c_func(diCrPKI, "RSA_RawPrivate", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RSA_EncodeMsg = define_c_func(diCrPKI, "RSA_EncodeMsg", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), RSA_DecodeMsg = define_c_func(diCrPKI, "RSA_DecodeMsg", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), -- ELLIPTIC CURVE CRYPTOGRAPHY FUNCTIONS -- New in v11.0 ECC_MakeKeys = define_c_func(diCrPKI, "ECC_MakeKeys", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ECC_ReadKeyByCurve = define_c_func(diCrPKI, "ECC_ReadKeyByCurve", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ECC_ReadPrivateKey = define_c_func(diCrPKI, "ECC_ReadPrivateKey", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ECC_ReadPublicKey = define_c_func(diCrPKI, "ECC_ReadPublicKey", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), ECC_SaveEncKey = define_c_func(diCrPKI, "ECC_SaveEncKey", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ECC_SaveKey = define_c_func(diCrPKI, "ECC_SaveKey", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ECC_PublicKeyFromPrivate = define_c_func(diCrPKI, "ECC_PublicKeyFromPrivate", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), ECC_QueryKey = define_c_func(diCrPKI, "ECC_QueryKey", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- PKCS12 FILE FUNCTIONS PFX_MakeFile = define_c_func(diCrPKI, "PFX_MakeFile", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), PFX_VerifySig = define_c_func(diCrPKI, "PFX_VerifySig", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- X509 CERTIFICATE FUNCTIONS X509_MakeCert = define_c_func(diCrPKI, "X509_MakeCert", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_INT, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), X509_MakeCertSelf = define_c_func(diCrPKI, "X509_MakeCertSelf", {C_LPSTR, C_LPSTR, C_INT, C_INT, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), X509_CertRequest = define_c_func(diCrPKI, "X509_CertRequest", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_VerifyCert = define_c_func(diCrPKI, "X509_VerifyCert", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_CertThumb = define_c_func(diCrPKI, "X509_CertThumb", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_CertIsValidNow = define_c_func(diCrPKI, "X509_CertIsValidNow", {C_LPSTR, C_INT}, C_HANDLE), X509_CertIssuedOn = define_c_func(diCrPKI, "X509_CertIssuedOn", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_CertExpiresOn = define_c_func(diCrPKI, "X509_CertExpiresOn", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_CertSerialNumber = define_c_func(diCrPKI, "X509_CertSerialNumber", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_HashIssuerAndSN = define_c_func(diCrPKI, "X509_HashIssuerAndSN", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_CertIssuerName = define_c_func(diCrPKI, "X509_CertIssuerName", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), X509_CertSubjectName = define_c_func(diCrPKI, "X509_CertSubjectName", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), X509_GetCertFromP7Chain = define_c_func(diCrPKI, "X509_GetCertFromP7Chain", {C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), X509_GetCertFromPFX = define_c_func(diCrPKI, "X509_GetCertFromPFX", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_KeyUsageFlags = define_c_func(diCrPKI, "X509_KeyUsageFlags", {C_LPSTR}, C_HANDLE), X509_QueryCert = define_c_func(diCrPKI, "X509_QueryCert", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_ReadStringFromFile = define_c_func(diCrPKI, "X509_ReadStringFromFile", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), X509_SaveFileFromString = define_c_func(diCrPKI, "X509_SaveFileFromString", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_TextDump = define_c_func(diCrPKI, "X509_TextDump", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_ValidatePath = define_c_func(diCrPKI, "X509_ValidatePath", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- X509 CRL FUNCTIONS X509_MakeCRL = define_c_func(diCrPKI, "X509_MakeCRL", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), X509_CheckCertInCRL = define_c_func(diCrPKI, "X509_CheckCertInCRL", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- ONLINE CERTIFICATE STATUS PROTOCOL = define_c_func(diCrPKI, "PROTOCOL ", {OCSP) FUNCTIONS as "CERTIFICATE STATUS PROTOCOL }" OCSP_MakeRequest = define_c_func(diCrPKI, "OCSP_MakeRequest", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), OCSP_ReadResponse = define_c_func(diCrPKI, "OCSP_ReadResponse", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- TRIPLE DES FUNCTIONS TDEA_HexMode = define_c_func(diCrPKI, "TDEA_HexMode", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_LPSTR}, C_HANDLE), TDEA_B64Mode = define_c_func(diCrPKI, "TDEA_B64Mode", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_LPSTR}, C_HANDLE), TDEA_BytesMode = define_c_func(diCrPKI, "TDEA_BytesMode", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_LPSTR}, C_HANDLE), TDEA_File = define_c_func(diCrPKI, "TDEA_File", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_LPSTR}, C_HANDLE), -- GENERIC BLOCK CIPHER FUNCTIONS CIPHER_Bytes = define_c_func(diCrPKI, "CIPHER_Bytes", {C_INT, C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CIPHER_File = define_c_func(diCrPKI, "CIPHER_File", {C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CIPHER_Hex = define_c_func(diCrPKI, "CIPHER_Hex", {C_INT, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CIPHER_KeyWrap = define_c_func(diCrPKI, "CIPHER_KeyWrap", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), CIPHER_KeyUnwrap = define_c_func(diCrPKI, "CIPHER_KeyUnwrap", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), -- Added [v3.10] CIPHER_EncryptBytesPad = define_c_func(diCrPKI, "CIPHER_EncryptBytesPad", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CIPHER_DecryptBytesPad = define_c_func(diCrPKI, "CIPHER_DecryptBytesPad", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- MESSAGE DIGEST HASH FUNCTIONS HASH_Bytes = define_c_func(diCrPKI, "HASH_Bytes", {C_LPSTR, C_INT, C_POINTER, C_INT, C_INT}, C_HANDLE), HASH_File = define_c_func(diCrPKI, "HASH_File", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), HASH_HexFromBytes = define_c_func(diCrPKI, "HASH_HexFromBytes", {C_LPSTR, C_INT, C_POINTER, C_INT, C_INT}, C_HANDLE), HASH_HexFromFile = define_c_func(diCrPKI, "HASH_HexFromFile", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), HASH_HexFromHex = define_c_func(diCrPKI, "HASH_HexFromHex", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), -- HMAC FUNCTIONS HMAC_Bytes = define_c_func(diCrPKI, "HMAC_Bytes", {C_LPSTR, C_INT, C_POINTER, C_INT, C_POINTER, C_INT, C_INT}, C_HANDLE), HMAC_HexFromBytes = define_c_func(diCrPKI, "HMAC_HexFromBytes", {C_LPSTR, C_INT, C_POINTER, C_INT, C_POINTER, C_INT, C_INT}, C_HANDLE), HMAC_HexFromHex = define_c_func(diCrPKI, "HMAC_HexFromHex", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- BASE64 AND HEX CONVERSION FUNCTIONS CNV_B64StrFromBytes = define_c_func(diCrPKI, "CNV_B64StrFromBytes", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CNV_BytesFromB64Str = define_c_func(diCrPKI, "CNV_BytesFromB64Str", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), CNV_B64Filter = define_c_func(diCrPKI, "CNV_B64Filter", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CNV_HexStrFromBytes = define_c_func(diCrPKI, "CNV_HexStrFromBytes", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CNV_BytesFromHexStr = define_c_func(diCrPKI, "CNV_BytesFromHexStr", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), CNV_HexFilter = define_c_func(diCrPKI, "CNV_HexFilter", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- BASE58 FUNCTIONS -- New in v11.0 CNV_Base58FromBytes = define_c_func(diCrPKI, "CNV_Base58FromBytes", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CNV_Base58ToBytes = define_c_func(diCrPKI, "CNV_Base58ToBytes", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), -- UTF-8 CONVERSION/CHECK FUNCTIONS -- [Note: the following three functions are deprecated as of v3.6] CNV_UTF8FromLatin1 = define_c_func(diCrPKI, "CNV_UTF8FromLatin1", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), CNV_Latin1FromUTF8 = define_c_func(diCrPKI, "CNV_Latin1FromUTF8", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), CNV_CheckUTF8 = define_c_func(diCrPKI, "CNV_CheckUTF8", {C_LPSTR}, C_HANDLE), -- [New in v3.6] CNV_UTF8BytesFromLatin1 = define_c_func(diCrPKI, "CNV_UTF8BytesFromLatin1", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), CNV_Latin1FromUTF8Bytes = define_c_func(diCrPKI, "CNV_Latin1FromUTF8Bytes", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), CNV_CheckUTF8Bytes = define_c_func(diCrPKI, "CNV_CheckUTF8Bytes", {C_LPSTR, C_INT}, C_HANDLE), CNV_CheckUTF8File = define_c_func(diCrPKI, "CNV_CheckUTF8File", {C_LPSTR}, C_HANDLE), CNV_ByteEncoding = define_c_func(diCrPKI, "CNV_ByteEncoding", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), -- MISC BYTE UTILITIES -- New in v11.0 CNV_ReverseBytes = define_c_func(diCrPKI, "CNV_ReverseBytes", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), CNV_NumToBytes = define_c_func(diCrPKI, "CNV_NumToBytes", {C_LPSTR, C_INT, C_INT, C_INT}, C_HANDLE), CNV_NumFromBytes = define_c_func(diCrPKI, "CNV_NumFromBytes", {C_LPSTR, C_INT, C_INT}, C_HANDLE), -- PEM/BINARY FILE CONVERSIONS PEM_FileFromBinFile = define_c_func(diCrPKI, "PEM_FileFromBinFile", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), PEM_FileFromBinFileEx = define_c_func(diCrPKI, "PEM_FileFromBinFileEx", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), PEM_FileToBinFile = define_c_func(diCrPKI, "PEM_FileToBinFile", {C_LPSTR, C_LPSTR}, C_HANDLE), -- RNG FUNCTIONS RNG_Bytes = define_c_func(diCrPKI, "RNG_Bytes", {C_LPSTR, C_INT, C_POINTER, C_INT}, C_HANDLE), RNG_Number = define_c_func(diCrPKI, "RNG_Number", {C_INT, C_INT}, C_HANDLE), RNG_BytesWithPrompt = define_c_func(diCrPKI, "RNG_BytesWithPrompt", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), RNG_Initialize = define_c_func(diCrPKI, "RNG_Initialize", {C_LPSTR, C_INT}, C_HANDLE), RNG_MakeSeedFile = define_c_func(diCrPKI, "RNG_MakeSeedFile", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), RNG_UpdateSeedFile = define_c_func(diCrPKI, "RNG_UpdateSeedFile", {C_LPSTR, C_INT}, C_HANDLE), RNG_Test = define_c_func(diCrPKI, "RNG_Test", {C_LPSTR, C_INT}, C_HANDLE), -- PADDING FUNCTIONS PAD_BytesBlock = define_c_func(diCrPKI, "PAD_BytesBlock", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT, C_INT}, C_HANDLE), PAD_UnpadBytes = define_c_func(diCrPKI, "PAD_UnpadBytes", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT, C_INT}, C_HANDLE), PAD_HexBlock = define_c_func(diCrPKI, "PAD_HexBlock", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), PAD_UnpadHex = define_c_func(diCrPKI, "PAD_UnpadHex", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT}, C_HANDLE), -- MISC UTILITIES WIPE_File = define_c_func(diCrPKI, "WIPE_File", {C_LPSTR, C_INT}, C_HANDLE), WIPE_Data = define_c_func(diCrPKI, "WIPE_Data", {C_POINTER, C_INT}, C_HANDLE), PWD_Prompt = define_c_func(diCrPKI, "PWD_Prompt", {C_LPSTR, C_INT, C_LPSTR}, C_HANDLE), PWD_PromptEx = define_c_func(diCrPKI, "PWD_PromptEx", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- PASSWORD-BASED ENCRYPTION PROTOTYPES -- [New in v3.10] PBE_Kdf2 = define_c_func(diCrPKI, "PBE_Kdf2", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_INT, C_INT, C_INT}, C_HANDLE), PBE_Kdf2Hex = define_c_func(diCrPKI, "PBE_Kdf2Hex", {C_LPSTR, C_INT, C_INT, C_LPSTR, C_LPSTR, C_INT, C_INT}, C_HANDLE), -- ASN.1 UTILITIES -- [New in v10.0] ASN1_TextDump = define_c_func(diCrPKI, "ASN1_TextDump", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), ASN1_Type = define_c_func(diCrPKI, "ASN1_Type", {C_LPSTR, C_INT, C_LPSTR, C_INT}, C_HANDLE), -- SIGNATURE FUNCTIONS -- [New in v10.0] SIG_SignData = define_c_func(diCrPKI, "SIG_SignData", {C_LPSTR, C_INT, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), SIG_SignFile = define_c_func(diCrPKI, "SIG_SignFile", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), SIG_VerifyData = define_c_func(diCrPKI, "SIG_VerifyData", {C_LPSTR, C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), SIG_VerifyFile = define_c_func(diCrPKI, "SIG_VerifyFile", {C_LPSTR, C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), -- SMIME FUNCTIONS -- [New in v10.0] SMIME_Wrap = define_c_func(diCrPKI, "SMIME_Wrap", {C_LPSTR, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), SMIME_Extract = define_c_func(diCrPKI, "SMIME_Extract", {C_LPSTR, C_LPSTR, C_INT}, C_HANDLE), SMIME_Query = define_c_func(diCrPKI, "SMIME_Query", {C_LPSTR, C_INT, C_LPSTR, C_LPSTR, C_INT}, C_HANDLE)
2. Re: my first Wapper for diCrPKI
- Posted by Icy_Viking Feb 20, 2018
- 1262 views
Looks pretty good. I've written a few wrappers of my own for various libraries. Though you may want to place a public in front of your flags as well.
3. Re: my first Wapper for diCrPKI
- Posted by begin Feb 21, 2018
- 1237 views
Looks pretty good. I've written a few wrappers of my own for various libraries. Though you may want to place a public in front of your flags as well.
thank you for your advice. sure will do. is there a wrapper for pdfium available?
4. Re: my first Wapper for diCrPKI
- Posted by Icy_Viking Feb 21, 2018
- 1205 views
Looks pretty good. I've written a few wrappers of my own for various libraries. Though you may want to place a public in front of your flags as well.
thank you for your advice. sure will do. is there a wrapper for pdfium available?
There wasn't a wrapper for pdfium, but it appears you wrote one in another thread. Also, you can upload your wrappers to the rapideuphoria site.