1. my first Wapper for diCrPKI

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) 
new topic     » topic index » view message » categorize

2. Re: my first Wapper for diCrPKI

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.

new topic     » goto parent     » topic index » view message » categorize

3. Re: my first Wapper for diCrPKI

Icy_Viking said...

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?

new topic     » goto parent     » topic index » view message » categorize

4. Re: my first Wapper for diCrPKI

begin said...
Icy_Viking said...

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.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu