unit SKF;
interface
uses
Windows, Commctrl;
const
//6.3 常量定义
TRUE = longbool($00000001);
FALSE = longbool($00000000);
// DEVAPI = _stdcall;
ADMIN_TYPE = 0;
USER_TYPE = 1;
//附录A 错误代码定义
SAR_OK = $00000000;
SAR_FAIL = $0A000001;
SAR_UNKNOWNERR = $0A000002;
SAR_NOTSUPPORTYETERR = $0A000003;
SAR_FILEERR = $0A000004;
SAR_INVALIDHANDLEERR = $0A000005;
SAR_INVALIDPARAMERR = $0A000006;
SAR_READFILEERR = $0A000007;
SAR_WRITEFILEERR = $0A000008;
SAR_NAMELENERR = $0A000009;
SAR_KEYUSAGEERR = $0A00000A;
SAR_MODULUSLENERR = $0A00000B;
SAR_NOTINITIALIZEERR = $0A00000C;
SAR_OBJERR = $0A00000D;
SAR_MEMORYERR = $0A00000E;
SAR_TIMEOUTERR = $0A00000F;
SAR_INDATALENERR = $0A000010;
SAR_INDATAERR = $0A000011;
SAR_GENRANDERR = $0A000012;
SAR_HASHOBJERR = $0A000013;
SAR_HASHERR = $0A000014;
SAR_GENRSAKEYERR = $0A000015;
SAR_RSAMODULUSLENERR = $0A000016;
SAR_CSPIMPRTPUBKEYERR = $0A000017;
SAR_RSAENCERR = $0A000018;
SAR_RSADECERR = $0A000019;
SAR_HASHNOTEQUALERR = $0A00001A;
SAR_KEYNOTFOUNTERR = $0A00001B;
SAR_CERTNOTFOUNTERR = $0A00001C;
SAR_NOTEXPORTERR = $0A00001D;
SAR_DECRYPTPADERR = $0A00001E;
SAR_MACLENERR = $0A00001F;
SAR_BUFFER_TOO_SMALL = $0A000020;
SAR_KEYINFOTYPEERR = $0A000021;
SAR_NOT_EVENTERR = $0A000022;
SAR_DEVICE_REMOVED = $0A000023;
SAR_PIN_INCORRECT = $0A000024;
SAR_PIN_LOCKED = $0A000025;
SAR_PIN_INVALID = $0A000026;
SAR_PIN_LEN_RANGE = $0A000027;
SAR_USER_ALREADY_LOGGED_IN = $0A000028;
SAR_USER_PIN_NOT_INITIALIZED = $0A000029;
SAR_USER_TYPE_INVALID = $0A00002A;
SAR_APPLICATION_NAME_INVALID = $0A00002B;
SAR_APPLICATION_EXISTS = $0A00002C;
SAR_USER_NOT_LOGGED_IN = $0A00002D;
SAR_APPLICATION_NOT_EXISTS = $0A00002E;
SAR_FILE_ALREADY_EXIST = $0A00002F;
SAR_NO_ROOM = $0A000030;
SAR_FILE_NOT_EXIST = $0A000031;
SAR_REACH_MAX_CONTAINER_COUNT = $0A000032;
//6.4.3.2
MAX_RSA_MODULUS_LEN = 256;
MAX_RSA_EXPONENT_LEN = 4;
//6.4.5.2
ECC_MAX_XCOORDINATE_BITS_LEN = 512;
ECC_MAX_YCOORDINATE_BITS_LEN = 512;
//6.4.6.2
ECC_MAX_MODULUS_BITS_LEN = 512;
//6.4.9.2
MAX_IV_LEN = 32;
//6.4.11.2
MAX_FILE_NAME_SIZE = 32;
//6.4.12
SECURE_NEVER_ACCOUNT = $00000000;
SECURE_ADM_ACCOUNT = $00000001;
SECURE_USER_ACCOUNT = $00000010;
SECURE_ANYONE_ACCOUNT = $000000FF;
//6.4.13
DEV_ABSENT_STATE = $00000000;
DEV_PRESENT_STATE = $00000001;
DEV_UNKNOW_STATE = $00000002;
type
//6.2 基本数据类型
INT8 = shortint;
INT16 = smallint;
INT32 = longint;
UINT8 = Byte;
UINT16 = word;
UINT32 = longword;
BOOL = longbool; // TRUE = 0x00000001 FALSE = 0x00000000
BYTE = UINT8;
CHAR = UINT8;
SHORT = INT16;
USHORT = UINT16;
LONG = INT32;
ULONG = UINT32;
UINT = UINT32;
WORD = UINT16;
DWORD = UINT32;
FLAGS = UINT32;
LPSTR = Pchar; //UTF8 string
HANDLE = pointer;
DEVHANDLE = HANDLE;
HAPPLICATION = HANDLE;
HCONTAINER = HANDLE;
//6.4 复合数据类型
//6.4.1
Struct_Version = packed record
major: BYTE;
minor: BYTE;
end;
TVERSION = Struct_Version;
//6.4.2
Struct_DEVINFO = packed record
Version: TVERSION;
Manufacturer: array[0..63] of CHAR;
Issuer: array[0..63] of CHAR;
_label: array[0..31] of CHAR;
SerialNumber: array[0..31] of CHAR;
HWVersion: TVERSION;
FirmwareVersion: TVERSION;
AlgSymCap: ULONG;
AlgAsymCap: ULONG;
AlgHashCap: ULONG;
DevAuthAlgId: ULONG;
TotalSpace: ULONG;
FreeSpace: ULONG;
MaxECCBufferSize: ULONG;
MaxBufferSize: ULONG;
Reserved: array[0..63] of BYTE;
end;
TDEVINFO = Struct_DEVINFO;
PDEVINFO = ^TDEVINFO;
//6.4.3
Struct_RSAPUBLICKEYBLOB = packed record
AlgID: ULONG;
BitLen: ULONG;
Modulus: array[0..MAX_RSA_MODULUS_LEN - 1] of BYTE;
PublicExponent: array[0..MAX_RSA_EXPONENT_LEN - 1] of BYTE;
end;
TRSAPUBLICKEYBLOB = Struct_RSAPUBLICKEYBLOB;
PRSAPUBLICKEYBLOB = ^TRSAPUBLICKEYBLOB;
//6.4.4
Struct_RSAPRIVATEKEYBLOB = packed record
AlgID: ULONG;
BitLen: ULONG;
Modulus: array[0..MAX_RSA_MODULUS_LEN - 1] of BYTE;
PublicExponent: array[0..MAX_RSA_EXPONENT_LEN - 1] of BYTE;
PrivateExponent: array[0..MAX_RSA_MODULUS_LEN - 1] of BYTE;
Prime1: array[0..MAX_RSA_MODULUS_LEN div 2 - 1] of BYTE;
Prime2: array[0..MAX_RSA_MODULUS_LEN div 2 - 1] of BYTE;
Prime1Exponent: array[0..MAX_RSA_MODULUS_LEN div 2 - 1] of BYTE;
Prime2Exponent: array[0..MAX_RSA_MODULUS_LEN div 2 - 1] of BYTE;
Coefficient: array[0..MAX_RSA_MODULUS_LEN div 2 - 1] of BYTE;
end;
TRSAPRIVATEKEYBLOB = Struct_RSAPRIVATEKEYBLOB;
PRSAPRIVATEKEYBLOB = ^TRSAPRIVATEKEYBLOB;
//6.4.5
Struct_ECCPUBLICKEYBLOB = packed record
BitLen: ULONG;
XCoordinate: array[0..ECC_MAX_XCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
YCoordinate: array[0..ECC_MAX_YCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
end;
TECCPUBLICKEYBLOB = Struct_ECCPUBLICKEYBLOB;
PECCPUBLICKEYBLOB = ^TECCPUBLICKEYBLOB;
//6.4.6
Struct_ECCPRIVATEKEYBLOB = packed record
BitLen: ULONG;
PrivateKey: array[0..ECC_MAX_MODULUS_BITS_LEN div 8 - 1] of BYTE;
end;
TECCPRIVATEKEYBLOB = Struct_ECCPRIVATEKEYBLOB;
PECCPRIVATEKEYBLOB = ^TECCPRIVATEKEYBLOB;
//6.4.7
Struct_ECCCIPHERBLOB = packed record
XCoordinate: array[0..ECC_MAX_XCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
YCoordinate: array[0..ECC_MAX_XCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
HASH: array[0..31] of BYTE;
CipherLen: ULONG;
Cipher: BYTE;
end;
TECCCIPHERBLOB = Struct_ECCCIPHERBLOB;
PECCCIPHERBLOB = ^TECCCIPHERBLOB;
//6.4.8
Struct_ECCSIGNATUREBLOB = packed record
r: array[0..ECC_MAX_XCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
s: array[0..ECC_MAX_XCOORDINATE_BITS_LEN div 8 - 1] of BYTE;
end;
TECCSIGNATUREBLOB = Struct_ECCSIGNATUREBLOB;
PECCSIGNATUREBLOB = ^TECCSIGNATUREBLOB;
//6.4.9
Struct_BLOCKCIPHERPARAM = packed record
IV: array[0..MAX_IV_LEN - 1] of BYTE;
IVLen: ULONG;
PaddingType: ULONG;
FeedBitLen: ULONG;
end;
TBLOCKCIPHERPARAM = Struct_BLOCKCIPHERPARAM;
PBLOCKCIPHERPARAM = ^TBLOCKCIPHERPARAM;
//6.4.10
SKF_ENVELOPEDKEYBLOB = packed record
Version: ULONG;
ulSymmAlgID: ULONG;
ulBits: ULONG;
bEncryptedPriKey: array[0..63] of BYTE;
PubKey: TECCPUBLICKEYBLOB;
ECCCipherBlob: TECCCIPHERBLOB;
end;
TENVELOPEDKEYBLOB = SKF_ENVELOPEDKEYBLOB;
PENVELOPEDKEYBLOB = ^TENVELOPEDKEYBLOB;
//6.4.11
Struct_FILEATTRIBUTE = packed record
FileName: array[0..MAX_FILE_NAME_SIZE - 1] of CHAR;
FileSize: ULONG;
ReadRights: ULONG;
WriteRights: ULONG;
end;
TFILEATTRIBUTE = Struct_FILEATTRIBUTE;
PFILEATTRIBUTE = ^TFILEATTRIBUTE;
//7.1.2
TSKF_WaitForDevEvent = function(
szDevName: LPSTR;
pulDevNameLen: pointer {ULONG};
pulEvent: pointer {ULONG}
): ULONG; stdcall;
//7.1.3
TSKF_CancelWaitForDevEvent = function(
): ULONG; stdcall;
//7.1.4
TSKF_EnumDev = function(
bPresent: BOOL;
szNameList: LPSTR;
pulSize: pointer {ULONG}
): ULONG; stdcall;
//7.1.5
TSKF_ConnectDev = function(
szName: LPSTR;
phDev: pointer {DEVHANDLE}
): ULONG; stdcall;
//7.1.6
TSKF_DisConnectDev = function(
hDev: DEVHANDLE
): ULONG; stdcall;
//7.1.7
TSKF_GetDevState = function(
szDevName: LPSTR;
pulDevState: pointer {ULONG}
): ULONG; stdcall;
//7.1.8
TSKF_SetLabel = function(
hDev: DEVHANDLE;
szLabel: LPSTR
): ULONG; stdcall;
//7.1.9
TSKF_GetDevInfo = function(
hDev: DEVHANDLE;
pDevInfo: PDEVINFO
): ULONG; stdcall; //
//7.1.10
TSKF_LockDev = function(
hDev: DEVHANDLE;
ulTimeOut: ULONG
): ULONG; stdcall;
//7.1.11
TSKF_UnlockDev = function(
hDev: DEVHANDLE
): ULONG; stdcall;
//7.1.12
TSKF_Transmit = function(
hDev: DEVHANDLE;
pbCommand: pointer {BYTE};
ulCommandLen: ULONG;
pbData: pointer {BYTE};
pulDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.2.2
TSKF_ChangeDevAuthKey = function(
hDev: DEVHANDLE;
pbKeyValue: pointer {BYTE};
ulKeyLen: ULONG
): ULONG; stdcall;
//7.2.3
TSKF_DevAuth = function(
hDev: DEVHANDLE;
pbAuthData: pointer {BYTE};
ulLen: ULONG
): ULONG; stdcall;
//7.2.4
TSKF_ChangePIN = function(
hApplication: HAPPLICATION;
ulPINType: ULONG;
szOldPin: LPSTR;
szNewPin: LPSTR;
pulRetryCount: pointer {ULONG}
): ULONG; stdcall;
//7.2.5
TSKF_GetPINInfo = function(
hApplication: HAPPLICATION;
ulPINType: ULONG;
pulMaxRetryCount: pointer {ULONG};
pulRemainRetryCount: pointer {ULONG};
pbDefaultPin: pointer {BOOL}
): LONG; stdcall;
//7.2.6
TSKF_VerifyPIN = function(
hApplication: HAPPLICATION;
ulPINType: ULONG;
szPIN: LPSTR;
pulRetryCount: pointer {ULONG}
): ULONG; stdcall;
//7.2.7
TSKF_UnblockPIN = function(
hApplication: HAPPLICATION;
szAdminPIN: LPSTR;
szNewUserPIN: LPSTR;
pulRetryCount: pointer {ULONG}
): ULONG; stdcall;
//7.2.8
TSKF_ClearSecureState = function(
hApplication: HAPPLICATION
): ULONG; stdcall;
//7.3.2
TSKF_CreateApplication = function(
hDev: DEVHANDLE;
szAppName: LPSTR;
szAdminPin: LPSTR;
dwAdminPinRetryCount: DWORD;
szUserPin: LPSTR;
dwUserPinRetryCount: DWORD;
dwCreateFileRights: DWORD;
phApplication: pointer {HAPPLICATION}
): ULONG; stdcall;
//7.3.3
TSKF_EnumApplication = function(
hDev: DEVHANDLE;
szAppName: LPSTR;
pulSize: pointer {ULONG}
): ULONG; stdcall;
//7.3.4
TSKF_DeleteApplication = function(
hDev: DEVHANDLE;
szAppName: LPSTR
): ULONG; stdcall;
//7.3.5
TSKF_OpenApplication = function(
hDev: DEVHANDLE;
szAppName: LPSTR;
phApplication: pointer {HAPPLICATION}
): ULONG; stdcall;
//7.3.6
TSKF_CloseApplication = function(
hApplication: HAPPLICATION
): ULONG; stdcall;
//7.4.2
TSKF_CreateFile = function(
hApplication: HAPPLICATION;
szFileName: LPSTR;
ulFileSize: ULONG;
ulReadRights: ULONG;
ulWriteRights: ULONG
): ULONG; stdcall;
//7.4.3
TSKF_DeleteFile = function(
hApplication: HAPPLICATION;
szFileName: LPSTR
): ULONG; stdcall;
//7.4.4
TSKF_EnumFiles = function(
hApplication: HAPPLICATION;
szFileList: LPSTR;
pulSize: pointer {ULONG}
): ULONG; stdcall;
//7.4.5
TSKF_GetFileInfo = function(
hApplication: HAPPLICATION;
szFileName: LPSTR;
pFileInfo: pointer {FILEATTRIBUTE}
): ULONG; stdcall;
//7.4.6
TSKF_ReadFile = function(
hApplication: HAPPLICATION;
szFileName: LPSTR;
ulOffset: ULONG;
ulSize: ULONG;
pbOutData: pointer {BYTE};
pulOutLen: pointer {ULONG}
): ULONG; stdcall;
//7.4.7
TSKF_WriteFile = function(
hApplication: HAPPLICATION;
szFileName: LPSTR;
ulOffset: ULONG;
pbData: pointer {BYTE};
ulSize: ULONG
): ULONG; stdcall;
//7.5.2
TSKF_CreateContainer = function(
hApplication: HAPPLICATION;
szContainerName: LPSTR;
phContainer: pointer {HCONTAINER}
): ULONG; stdcall;
//7.5.3
TSKF_DeleteContainer = function(
hApplication: HAPPLICATION;
szContainerName: LPSTR
): ULONG; stdcall;
//7.5.4
TSKF_OpenContainer = function(
hApplication: HAPPLICATION;
szContainerName: LPSTR;
phContainer: pointer {HCONTAINER}
): ULONG; stdcall;
//7.5.5
TSKF_CloseContainer = function(
hContainer: HCONTAINER
): ULONG; stdcall;
//7.5.6
TSKF_EnumContainer = function(
hApplication: HAPPLICATION;
szContainerName: LPSTR;
pulSize: pointer {ULONG}
): ULONG; stdcall;
//7.5.7
TSKF_GetContainerType = function(
hContainer: HCONTAINER;
pulContainerType: pointer {ULONG}
): ULONG; stdcall;
//7.5.8
TSKF_ImportCertificate = function(
hContainer: HCONTAINER;
bExportSignKey: BOOL;
pbCert: pointer {BYTE};
ulCertLen: ULONG
): ULONG; stdcall;
//7.5.9
TSKF_ExportCertificate = function(
hContainer: HCONTAINER;
bSignFlag: BOOL;
pbCert: pointer {BYTE};
pulCertLen: pointer {ULONG}
): ULONG; stdcall;
//7.6
//一大堆。。。。
//7.6.2
TSKF_GenRandom = function(
hDev: DEVHANDLE;
pbRandom: pointer {BYTE};
ulRandomLen: ULONG
): ULONG; stdcall;
//7.6.3
TSKF_GenExtRSAKey = function(
hDev: DEVHANDLE;
ulBitsLen: ULONG;
pBlob: pointer {RSAPRIVATEKEYBLOB}
): ULONG; stdcall;
//7.6.4
TSKF_GenRSAKeyPair = function(
hContainer: HCONTAINER;
ulBitsLen: ULONG;
pBlob: pointer {RSAPRIVATEKEYBLOB}
): ULONG; stdcall;
//7.6.5
TSKF_ImportRSAKeyPair = function(
hContainer: HCONTAINER;
ulSymAlgId: ULONG;
pbWrappedKey: pointer {BYTE};
ulWrappedKeyLen: ULONG;
pbEncryptedData: pointer {BYTE};
ulEncryptedDataLen: ULONG
): ULONG; stdcall;
//7.6.6
TSKF_RSASignData = function(
hContainer: HCONTAINER;
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbSignature: pointer {BYTE};
pulSignLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.7
TSKF_RSAVerify = function(
hDev: DEVHANDLE;
pRSAPubKeyBlob: pointer {RSAPUBLICKEYBLOB};
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbSignature: pointer {BYTE};
ulSignLen: ULONG
): ULONG; stdcall;
//7.6.8
TSKF_RSAExportSessionKey = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pPubKey: pointer {RSAPUBLICKEYBLOB};
pbData: pointer {BYTE};
pulDataLen: pointer {ULONG};
phSessionKey: HANDLE
): ULONG; stdcall;
//7.6.9
TSKF_ExtRSAPubKeyOperation = function(
hDev: DEVHANDLE;
pRSAPubKeyBlob: pointer {RSAPUBLICKEYBLOB};
pbInput: pointer {BYTE};
ulInputLen: ULONG;
pbOutput: pointer {BYTE};
pulOutputLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.10
TSKF_ExtRSAPriKeyOperation = function(
hDev: DEVHANDLE;
pRSAPriKeyBlob: pointer {RSAPRIVATEKEYBLOB};
pbInput: pointer {BYTE};
ulInputLen: ULONG;
pbOutput: pointer {BYTE};
pulOutputLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.11
TSKF_GenECCKeyPair = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pBlob: pointer {ECCPUBLICKEYBLOB}
): ULONG; stdcall;
//7.6.12
TSKF_ImportECCKeyPair = function(
hContainer: HCONTAINER;
pEnvelopedKeyBlob: pointer {ENVELOPEDKEYBLOB}
): ULONG; stdcall;
//7.6.13
TSKF_ECCSignData = function(
hContainer: HCONTAINER;
pbDigest: pointer {BYTE};
ulDigestLen: ULONG;
pSignature: pointer {ECCSIGNATUREBLOB}
): ULONG; stdcall;
//TSKF_ECCDecrypt = function(
// hContainer: HCONTAINER;
// pCipherBlob: pointer {ECCCIPHERBLOB};
// pbPlainText: pointer {BYTE};
// pulPlainTextLen: pointer {ULONG}
// ): ULONG; stdcall;
//7.6.14
TSKF_ECCVerify = function(
hDev: DEVHANDLE;
pECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbData: pointer {BYTE};
ulDataLen: ULONG;
pSignature: pointer {ECCSIGNATUREBLOB}
): ULONG; stdcall;
//7.6.15
TSKF_ECCExportSessionKey = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pPubKey: pointer {ECCPUBLICKEYBLOB};
pData: pointer {ECCCIPHERBLOB};
phSessionKey: pointer {HANDLE}
): ULONG; stdcall;
//7.6.16
TSKF_ExtECCEncrypt = function(
hDev: DEVHANDLE;
pECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbPlainText: pointer {BYTE};
ulPlainTextLen: ULONG;
pCipherText: pointer {ECCCIPHERBLOB}
): ULONG; stdcall;
//7.6.17
TSKF_ExtECCDecrypt = function(
hDev: DEVHANDLE;
pECCPriKeyBlob: pointer {ECCPRIVATEKEYBLOB};
pCipherText: pointer {ECCCIPHERBLOB};
pbPlainText: pointer {BYTE};
pulPlainTextLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.18
TSKF_ExtECCSign = function(
hDev: DEVHANDLE;
pECCPriKeyBlob: pointer {ECCPRIVATEKEYBLOB};
pbData: pointer {BYTE};
ulDataLen: ULONG;
pSignature: pointer {ECCSIGNATUREBLOB}
): ULONG; stdcall;
//7.6.19
TSKF_ExtECCVerify = function(
hDev: DEVHANDLE;
pECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbData: pointer {BYTE};
ulDataLen: ULONG;
pSignature: pointer {ECCSIGNATUREBLOB}
): ULONG; stdcall;
//7.6.20
TSKF_GenerateAgreementDataWithECC = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pTempECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbID: pointer {BYTE};
ulIDLen: ULONG;
phAgreementHandle: pointer {HANDLE}
): ULONG; stdcall;
//7.6.21
TSKF_GenerateAgreementDataAndKeyWithECC = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pSponsorECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pSponsorTempECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pTempECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbID: pointer {BYTE};
ulIDLen: ULONG;
pbSponsorID: pointer {BYTE};
ulSponsorIDLen: ULONG;
phKeyHandle: pointer {HANDLE}
): ULONG; stdcall;
//7.6.22
TSKF_GenerateKeyWithECC = function(
hAgreementHandle: HANDLE;
pECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pTempECCPubKeyBlob: pointer {ECCPUBLICKEYBLOB};
pbID: pointer {BYTE};
ulIDLen: ULONG;
phKeyHandle: pointer {HANDLE}
): ULONG; stdcall;
//7.6.23
TSKF_ExportPublicKey = function(
hContainer: HCONTAINER;
bSignFlag: BOOL;
pbBlob: pointer {BYTE};
pulBlobLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.24
TSKF_ImportSessionKey = function(
hContainer: HCONTAINER;
ulAlgId: ULONG;
pbWrapedData: pointer {BYTE};
ulWrapedLen: ULONG;
phKey: pointer {HANDLE}
): ULONG; stdcall;
//7.6.25
TSKF_SetSymmKey = function(
hDev: DEVHANDLE;
pbKey: pointer {BYTE};
ulAlgID: ULONG;
phKey: pointer {HANDLE}
): ULONG; stdcall;
//7.6.26
TSKF_EncryptInit = function(
hKey: HANDLE;
EncryptParam: TBLOCKCIPHERPARAM
): ULONG; stdcall;
//7.6.27
TSKF_Encrypt = function(
hKey: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbEncryptedData: pointer {BYTE};
pulEncryptedLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.28
TSKF_EncryptUpdate = function(
hKey: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbEncryptedData: pointer {BYTE};
pulEncryptedLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.29
TSKF_EncryptFinal = function(
hKey: HANDLE;
pbEncryptedData: pointer {BYTE};
pulEncryptedDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.30
TSKF_DecryptInit = function(
hKey: HANDLE;
DecryptParam: TBLOCKCIPHERPARAM
): ULONG; stdcall;
//7.6.31
TSKF_Decrypt = function(
hKey: HANDLE;
pbEncryptedData: pointer {BYTE};
ulEncryptedLen: ULONG;
pbData: pointer {BYTE};
pulDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.32
TSKF_DecryptUpdate = function(
hKey: HANDLE;
pbEncryptedData: pointer {BYTE};
ulEncryptedLen: ULONG;
pbData: pointer {BYTE};
pulDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.33
TSKF_DecryptFinal = function(
hKey: HANDLE;
pbDecryptedData: pointer {BYTE};
pulDecryptedDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.34
TSKF_DigestInit = function(
hDev: DEVHANDLE;
ulAlgID: ULONG;
pPubKey: pointer {ECCPUBLICKEYBLOB};
pbID: pointer {BYTE};
ulIDLen: ULONG;
phHash: pointer {HANDLE}
): ULONG; stdcall;
//7.6.35
TSKF_Digest = function(
hHash: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbHashData: pointer {BYTE};
pulHashLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.36
TSKF_DigestUpdate = function(
hHash: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG
): ULONG; stdcall;
//7.6.37
TSKF_DigestFinal = function(
hHash: HANDLE;
pHashData: pointer {BYTE};
pulHashLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.38
TSKF_MacInit = function(
hKey: HANDLE;
pMacParam: pointer {BLOCKCIPHERPARAM};
phMac: pointer {HANDLE}
): ULONG; stdcall;
//7.6.39
TSKF_Mac = function(
hMac: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG;
pbMacData: pointer {BYTE};
pulMacLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.40
TSKF_MacUpdate = function(
hMac: HANDLE;
pbData: pointer {BYTE};
ulDataLen: ULONG
): ULONG; stdcall;
//7.6.41
TSKF_MacFinal = function(
hMac: HANDLE;
pbMacData: pointer {BYTE};
pulMacDataLen: pointer {ULONG}
): ULONG; stdcall;
//7.6.42
TSKF_CloseHandle = function(
hHandle: HANDLE
): ULONG; stdcall;
implementation
end.
skf 国密库 delphi GMT 0016-2012
最新推荐文章于 2024-02-21 18:30:00 发布