skf 国密库 delphi GMT 0016-2012

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.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值