1 /* 2 * Copyright 2014-2022 The GmSSL Project. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the License); you may 5 * not use this file except in compliance with the License. 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 */ 9 10 /* This header file is from the official specification with minor 11 * modification. 12 */ 13 14 #ifndef SKFUTIL_SKF_H 15 #define SKFUTIL_SKF_H 16 17 18 #include "../sgd.h" 19 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 #pragma pack(1) 26 typedef struct Struct_Version{ 27 BYTE major; 28 BYTE minor; 29 } VERSION; 30 31 typedef struct Struct_DEVINFO { 32 VERSION Version; 33 CHAR Manufacturer[64]; 34 CHAR Issuer[64]; 35 CHAR Label[32]; 36 CHAR SerialNumber[32]; 37 VERSION HWVersion; 38 VERSION FirmwareVersion; 39 ULONG AlgSymCap; 40 ULONG AlgAsymCap; 41 ULONG AlgHashCap; 42 ULONG DevAuthAlgId; 43 ULONG TotalSpace; 44 ULONG FreeSpace; 45 ULONG MaxECCBufferSize; 46 ULONG MaxBufferSize; 47 BYTE Reserved[64]; 48 } DEVINFO, *PDEVINFO; 49 50 typedef struct Struct_RSAPUBLICKEYBLOB { 51 ULONG AlgID; 52 ULONG BitLen; 53 BYTE Modulus[MAX_RSA_MODULUS_LEN]; 54 BYTE PublicExponent[MAX_RSA_EXPONENT_LEN]; 55 } RSAPUBLICKEYBLOB, *PRSAPUBLICKEYBLOB; 56 57 typedef struct Struct_RSAPRIVATEKEYBLOB { 58 ULONG AlgID; 59 ULONG BitLen; 60 BYTE Modulus[MAX_RSA_MODULUS_LEN]; 61 BYTE PublicExponent[MAX_RSA_EXPONENT_LEN]; 62 BYTE PrivateExponent[MAX_RSA_MODULUS_LEN]; 63 BYTE Prime1[MAX_RSA_MODULUS_LEN/2]; 64 BYTE Prime2[MAX_RSA_MODULUS_LEN/2]; 65 BYTE Prime1Exponent[MAX_RSA_MODULUS_LEN/2]; 66 BYTE Prime2Exponent[MAX_RSA_MODULUS_LEN/2]; 67 BYTE Coefficient[MAX_RSA_MODULUS_LEN/2]; 68 } RSAPRIVATEKEYBLOB, *PRSAPRIVATEKEYBLOB; 69 70 typedef struct Struct_ECCPUBLICKEYBLOB { 71 ULONG BitLen; 72 BYTE XCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8]; 73 BYTE YCoordinate[ECC_MAX_YCOORDINATE_BITS_LEN/8]; 74 } ECCPUBLICKEYBLOB, *PECCPUBLICKEYBLOB; 75 76 typedef struct Struct_ECCPRIVATEKEYBLOB { 77 ULONG BitLen; 78 BYTE PrivateKey[ECC_MAX_MODULUS_BITS_LEN/8]; 79 } ECCPRIVATEKEYBLOB, *PECCPRIVATEKEYBLOB; 80 81 typedef struct Struct_ECCCIPHERBLOB { 82 BYTE XCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8]; 83 BYTE YCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8]; 84 BYTE HASH[32]; 85 ULONG CipherLen; 86 BYTE Cipher[1]; 87 } ECCCIPHERBLOB, *PECCCIPHERBLOB; 88 89 typedef struct Struct_ECCSIGNATUREBLOB { 90 BYTE r[ECC_MAX_XCOORDINATE_BITS_LEN/8]; 91 BYTE s[ECC_MAX_XCOORDINATE_BITS_LEN/8]; 92 } ECCSIGNATUREBLOB, *PECCSIGNATUREBLOB; 93 94 typedef struct Struct_BLOCKCIPHERPARAM { 95 BYTE IV[MAX_IV_LEN]; 96 ULONG IVLen; 97 ULONG PaddingType; 98 ULONG FeedBitLen; 99 } BLOCKCIPHERPARAM, *PBLOCKCIPHERPARAM; 100 101 typedef struct SKF_ENVELOPEDKEYBLOB { 102 ULONG Version; 103 ULONG ulSymmAlgID; 104 ULONG ulBits; 105 BYTE cbEncryptedPriKey[64]; 106 ECCPUBLICKEYBLOB PubKey; 107 ECCCIPHERBLOB ECCCipherBlob; 108 } ENVELOPEDKEYBLOB, *PENVELOPEDKEYBLOB; 109 110 typedef struct Struct_FILEATTRIBUTE { 111 CHAR FileName[MAX_FILE_NAME_SIZE]; 112 ULONG FileSize; 113 ULONG ReadRights; 114 ULONG WriteRights; 115 } FILEATTRIBUTE, *PFILEATTRIBUTE; 116 #pragma pack() 117 118 /* 7.1.2 */ 119 ULONG DEVAPI SKF_WaitForDevEvent( 120 LPSTR szDevName, 121 ULONG *pulDevNameLen, 122 ULONG *pulEvent); 123 124 /* 7.1.3 */ 125 ULONG DEVAPI SKF_CancelWaitForDevEvent( 126 void); 127 128 /* 7.1.4 */ 129 ULONG DEVAPI SKF_EnumDev( 130 BOOL bPresent, 131 LPSTR szNameList, 132 ULONG *pulSize); 133 134 /* 7.1.5 */ 135 ULONG DEVAPI SKF_ConnectDev( 136 LPSTR szName, 137 DEVHANDLE *phDev); 138 139 /* 7.1.6 */ 140 ULONG DEVAPI SKF_DisConnectDev( 141 DEVHANDLE hDev); 142 143 /* 7.1.7 */ 144 ULONG DEVAPI SKF_GetDevState( 145 LPSTR szDevName, 146 ULONG *pulDevState); 147 148 /* 7.1.8 */ 149 ULONG DEVAPI SKF_SetLabel( 150 DEVHANDLE hDev, 151 LPSTR szLabel); 152 153 /* 7.1.9 */ 154 ULONG DEVAPI SKF_GetDevInfo( 155 DEVHANDLE hDev, 156 DEVINFO *pDevInfo); 157 158 /* 7.1.10 */ 159 ULONG DEVAPI SKF_LockDev( 160 DEVHANDLE hDev, 161 ULONG ulTimeOut); 162 163 /* 7.1.11 */ 164 ULONG DEVAPI SKF_UnlockDev( 165 DEVHANDLE hDev); 166 167 /* 7.1.12 */ 168 ULONG DEVAPI SKF_Transmit( 169 DEVHANDLE hDev, 170 BYTE *pbCommand, 171 ULONG ulCommandLen, 172 BYTE *pbData, 173 ULONG *pulDataLen); 174 175 /* 7.2.2 */ 176 ULONG DEVAPI SKF_ChangeDevAuthKey( 177 DEVHANDLE hDev, 178 BYTE *pbKeyValue, 179 ULONG ulKeyLen); 180 181 /* 7.2.3 */ 182 ULONG DEVAPI SKF_DevAuth( 183 DEVHANDLE hDev, 184 BYTE *pbAuthData, 185 ULONG ulLen); 186 187 /* 7.2.4 */ 188 ULONG DEVAPI SKF_ChangePIN( 189 HAPPLICATION hApplication, 190 ULONG ulPINType, 191 LPSTR szOldPin, 192 LPSTR szNewPin, 193 ULONG *pulRetryCount); 194 195 /* 7.2.5 */ 196 LONG DEVAPI SKF_GetPINInfo( 197 HAPPLICATION hApplication, 198 ULONG ulPINType, 199 ULONG *pulMaxRetryCount, 200 ULONG *pulRemainRetryCount, 201 BOOL *pbDefaultPin); 202 203 /* 7.2.6 */ 204 ULONG DEVAPI SKF_VerifyPIN( 205 HAPPLICATION hApplication, 206 ULONG ulPINType, 207 LPSTR szPIN, 208 ULONG *pulRetryCount); 209 210 /* 7.2.7 */ 211 ULONG DEVAPI SKF_UnblockPIN( 212 HAPPLICATION hApplication, 213 LPSTR szAdminPIN, 214 LPSTR szNewUserPIN, 215 ULONG *pulRetryCount); 216 217 /* 7.2.8 */ 218 ULONG DEVAPI SKF_ClearSecureState( 219 HAPPLICATION hApplication); 220 221 /* 7.3.2 */ 222 ULONG DEVAPI SKF_CreateApplication( 223 DEVHANDLE hDev, 224 LPSTR szAppName, 225 LPSTR szAdminPin, 226 DWORD dwAdminPinRetryCount, 227 LPSTR szUserPin, 228 DWORD dwUserPinRetryCount, 229 DWORD dwCreateFileRights, 230 HAPPLICATION *phApplication); 231 232 /* 7.3.3 */ 233 ULONG DEVAPI SKF_EnumApplication( 234 DEVHANDLE hDev, 235 LPSTR szAppName, 236 ULONG *pulSize); 237 238 /* 7.3.4 */ 239 ULONG DEVAPI SKF_DeleteApplication( 240 DEVHANDLE hDev, 241 LPSTR szAppName); 242 243 /* 7.3.5 */ 244 ULONG DEVAPI SKF_OpenApplication( 245 DEVHANDLE hDev, 246 LPSTR szAppName, 247 HAPPLICATION *phApplication); 248 249 /* 7.3.6 */ 250 ULONG DEVAPI SKF_CloseApplication( 251 HAPPLICATION hApplication); 252 253 /* 7.4.2 */ 254 ULONG DEVAPI SKF_CreateFile( 255 HAPPLICATION hApplication, 256 LPSTR szFileName, 257 ULONG ulFileSize, 258 ULONG ulReadRights, 259 ULONG ulWriteRights); 260 261 /* 7.4.3 */ 262 ULONG DEVAPI SKF_DeleteFile( 263 HAPPLICATION hApplication, 264 LPSTR szFileName); 265 266 /* 7.4.4 */ 267 ULONG DEVAPI SKF_EnumFiles( 268 HAPPLICATION hApplication, 269 LPSTR szFileList, 270 ULONG *pulSize); 271 272 /* 7.4.5 */ 273 ULONG DEVAPI SKF_GetFileInfo( 274 HAPPLICATION hApplication, 275 LPSTR szFileName, 276 FILEATTRIBUTE *pFileInfo); 277 278 /* 7.4.6 */ 279 ULONG DEVAPI SKF_ReadFile( 280 HAPPLICATION hApplication, 281 LPSTR szFileName, 282 ULONG ulOffset, 283 ULONG ulSize, 284 BYTE *pbOutData, 285 ULONG *pulOutLen); 286 287 /* 7.4.7 */ 288 ULONG DEVAPI SKF_WriteFile( 289 HAPPLICATION hApplication, 290 LPSTR szFileName, 291 ULONG ulOffset, 292 BYTE *pbData, 293 ULONG ulSize); 294 295 /* 7.5.2 */ 296 ULONG DEVAPI SKF_CreateContainer( 297 HAPPLICATION hApplication, 298 LPSTR szContainerName, 299 HCONTAINER *phContainer); 300 301 /* 7.5.3 */ 302 ULONG DEVAPI SKF_DeleteContainer( 303 HAPPLICATION hApplication, 304 LPSTR szContainerName); 305 306 /* 7.5.4 */ 307 ULONG DEVAPI SKF_OpenContainer( 308 HAPPLICATION hApplication, 309 LPSTR szContainerName, 310 HCONTAINER *phContainer); 311 312 /* 7.5.5 */ 313 ULONG DEVAPI SKF_CloseContainer( 314 HCONTAINER hContainer); 315 316 /* 7.5.6 */ 317 ULONG DEVAPI SKF_EnumContainer( 318 HAPPLICATION hApplication, 319 LPSTR szContainerName, 320 ULONG *pulSize); 321 322 /* 7.5.7 */ 323 ULONG DEVAPI SKF_GetContainerType( 324 HCONTAINER hContainer, 325 ULONG *pulContainerType); 326 327 /* 7.5.8 */ 328 ULONG DEVAPI SKF_ImportCertificate( 329 HCONTAINER hContainer, 330 BOOL bExportSignKey, 331 BYTE *pbCert, 332 ULONG ulCertLen); 333 334 /* 7.5.9 */ 335 ULONG DEVAPI SKF_ExportCertificate( 336 HCONTAINER hContainer, 337 BOOL bSignFlag, 338 BYTE *pbCert, 339 ULONG *pulCertLen); 340 341 /* 7.6.2 */ 342 ULONG DEVAPI SKF_GenRandom( 343 DEVHANDLE hDev, 344 BYTE *pbRandom, 345 ULONG ulRandomLen); 346 347 /* 7.6.3 */ 348 ULONG DEVAPI SKF_GenExtRSAKey( 349 DEVHANDLE hDev, 350 ULONG ulBitsLen, 351 RSAPRIVATEKEYBLOB *pBlob); 352 353 /* 7.6.4 */ 354 ULONG DEVAPI SKF_GenRSAKeyPair( 355 HCONTAINER hContainer, 356 ULONG ulBitsLen, 357 RSAPUBLICKEYBLOB *pBlob); 358 359 /* 7.6.5 */ 360 ULONG DEVAPI SKF_ImportRSAKeyPair( 361 HCONTAINER hContainer, 362 ULONG ulSymAlgId, 363 BYTE *pbWrappedKey, 364 ULONG ulWrappedKeyLen, 365 BYTE *pbEncryptedData, 366 ULONG ulEncryptedDataLen); 367 368 /* 7.6.6 */ 369 ULONG DEVAPI SKF_RSASignData( 370 HCONTAINER hContainer, 371 BYTE *pbData, 372 ULONG ulDataLen, 373 BYTE *pbSignature, 374 ULONG *pulSignLen); 375 376 /* 7.6.7 */ 377 ULONG DEVAPI SKF_RSAVerify( 378 DEVHANDLE hDev, 379 RSAPUBLICKEYBLOB *pRSAPubKeyBlob, 380 BYTE *pbData, 381 ULONG ulDataLen, 382 BYTE *pbSignature, 383 ULONG ulSignLen); 384 385 /* 7.6.8 */ 386 ULONG DEVAPI SKF_RSAExportSessionKey( 387 HCONTAINER hContainer, 388 ULONG ulAlgId, 389 RSAPUBLICKEYBLOB *pPubKey, 390 BYTE *pbData, 391 ULONG *pulDataLen, 392 HANDLE *phSessionKey); 393 394 /* 7.6.9 */ 395 ULONG DEVAPI SKF_ExtRSAPubKeyOperation( 396 DEVHANDLE hDev, 397 RSAPUBLICKEYBLOB *pRSAPubKeyBlob, 398 BYTE *pbInput, 399 ULONG ulInputLen, 400 BYTE *pbOutput, 401 ULONG *pulOutputLen); 402 403 /* 7.6.10 */ 404 ULONG DEVAPI SKF_ExtRSAPriKeyOperation( 405 DEVHANDLE hDev, 406 RSAPRIVATEKEYBLOB *pRSAPriKeyBlob, 407 BYTE *pbInput, 408 ULONG ulInputLen, 409 BYTE *pbOutput, 410 ULONG *pulOutputLen); 411 412 /* 7.6.11 */ 413 ULONG DEVAPI SKF_GenECCKeyPair( 414 HCONTAINER hContainer, 415 ULONG ulAlgId, 416 ECCPUBLICKEYBLOB *pBlob); 417 418 /* 7.6.12 */ 419 ULONG DEVAPI SKF_ImportECCKeyPair( 420 HCONTAINER hContainer, 421 ENVELOPEDKEYBLOB *pEnvelopedKeyBlob); 422 423 /* 7.6.13 */ 424 ULONG DEVAPI SKF_ECCSignData( 425 HCONTAINER hContainer, 426 BYTE *pbDigest, 427 ULONG ulDigestLen, 428 ECCSIGNATUREBLOB *pSignature); 429 430 #ifdef SKF_HAS_ECCDECRYPT 431 ULONG DEVAPI SKF_ECCDecrypt( 432 HCONTAINER hContainer, 433 ECCCIPHERBLOB *pCipherBlob, 434 BYTE *pbPlainText, 435 ULONG *pulPlainTextLen); 436 #endif 437 438 /* 7.6.14 */ 439 ULONG DEVAPI SKF_ECCVerify( 440 DEVHANDLE hDev, 441 ECCPUBLICKEYBLOB *pECCPubKeyBlob, 442 BYTE *pbData, 443 ULONG ulDataLen, 444 ECCSIGNATUREBLOB *pSignature); 445 446 /* 7.6.15 */ 447 ULONG DEVAPI SKF_ECCExportSessionKey( 448 HCONTAINER hContainer, 449 ULONG ulAlgId, 450 ECCPUBLICKEYBLOB *pPubKey, 451 ECCCIPHERBLOB *pData, 452 HANDLE *phSessionKey); 453 454 /* 7.6.16 */ 455 ULONG DEVAPI SKF_ExtECCEncrypt( 456 DEVHANDLE hDev, 457 ECCPUBLICKEYBLOB *pECCPubKeyBlob, 458 BYTE *pbPlainText, 459 ULONG ulPlainTextLen, 460 ECCCIPHERBLOB *pCipherText); 461 462 /* 7.6.17 */ 463 ULONG DEVAPI SKF_ExtECCDecrypt( 464 DEVHANDLE hDev, 465 ECCPRIVATEKEYBLOB *pECCPriKeyBlob, 466 ECCCIPHERBLOB *pCipherText, 467 BYTE *pbPlainText, 468 ULONG *pulPlainTextLen); 469 470 /* 7.6.18 */ 471 ULONG DEVAPI SKF_ExtECCSign( 472 DEVHANDLE hDev, 473 ECCPRIVATEKEYBLOB *pECCPriKeyBlob, 474 BYTE *pbData, 475 ULONG ulDataLen, 476 ECCSIGNATUREBLOB *pSignature); 477 478 /* 7.6.19 */ 479 ULONG DEVAPI SKF_ExtECCVerify( 480 DEVHANDLE hDev, 481 ECCPUBLICKEYBLOB *pECCPubKeyBlob, 482 BYTE *pbData, 483 ULONG ulDataLen, 484 ECCSIGNATUREBLOB *pSignature); 485 486 /* 7.6.20 */ 487 ULONG DEVAPI SKF_GenerateAgreementDataWithECC( 488 HCONTAINER hContainer, 489 ULONG ulAlgId, 490 ECCPUBLICKEYBLOB *pTempECCPubKeyBlob, 491 BYTE *pbID, 492 ULONG ulIDLen, 493 HANDLE *phAgreementHandle); 494 495 /* 7.6.21 */ 496 ULONG DEVAPI SKF_GenerateAgreementDataAndKeyWithECC( 497 HANDLE hContainer, 498 ULONG ulAlgId, 499 ECCPUBLICKEYBLOB *pSponsorECCPubKeyBlob, 500 ECCPUBLICKEYBLOB *pSponsorTempECCPubKeyBlob, 501 ECCPUBLICKEYBLOB *pTempECCPubKeyBlob, 502 BYTE *pbID, 503 ULONG ulIDLen, 504 BYTE *pbSponsorID, 505 ULONG ulSponsorIDLen, 506 HANDLE *phKeyHandle); 507 508 /* 7.6.22 */ 509 ULONG DEVAPI SKF_GenerateKeyWithECC( 510 HANDLE hAgreementHandle, 511 ECCPUBLICKEYBLOB *pECCPubKeyBlob, 512 ECCPUBLICKEYBLOB *pTempECCPubKeyBlob, 513 BYTE *pbID, 514 ULONG ulIDLen, 515 HANDLE *phKeyHandle); 516 517 /* 7.6.23 */ 518 ULONG DEVAPI SKF_ExportPublicKey( 519 HCONTAINER hContainer, 520 BOOL bSignFlag, 521 BYTE *pbBlob, 522 ULONG *pulBlobLen); 523 524 /* 7.6.24 */ 525 ULONG DEVAPI SKF_ImportSessionKey( 526 HCONTAINER hContainer, 527 ULONG ulAlgId, 528 BYTE *pbWrapedData, 529 ULONG ulWrapedLen, 530 HANDLE *phKey); 531 532 /* 7.6.25 */ 533 ULONG DEVAPI SKF_SetSymmKey( 534 DEVHANDLE hDev, 535 BYTE *pbKey, 536 ULONG ulAlgID, 537 HANDLE *phKey); 538 539 /* 7.6.26 */ 540 ULONG DEVAPI SKF_EncryptInit( 541 HANDLE hKey, 542 BLOCKCIPHERPARAM EncryptParam); 543 544 /* 7.6.27 */ 545 ULONG DEVAPI SKF_Encrypt( 546 HANDLE hKey, 547 BYTE *pbData, 548 ULONG ulDataLen, 549 BYTE *pbEncryptedData, 550 ULONG *pulEncryptedLen); 551 552 /* 7.6.28 */ 553 ULONG DEVAPI SKF_EncryptUpdate( 554 HANDLE hKey, 555 BYTE *pbData, 556 ULONG ulDataLen, 557 BYTE *pbEncryptedData, 558 ULONG *pulEncryptedLen); 559 560 /* 7.6.29 */ 561 ULONG DEVAPI SKF_EncryptFinal( 562 HANDLE hKey, 563 BYTE *pbEncryptedData, 564 ULONG *pulEncryptedDataLen); 565 566 /* 7.6.30 */ 567 ULONG DEVAPI SKF_DecryptInit( 568 HANDLE hKey, 569 BLOCKCIPHERPARAM DecryptParam); 570 571 /* 7.6.31 */ 572 ULONG DEVAPI SKF_Decrypt( 573 HANDLE hKey, 574 BYTE *pbEncryptedData, 575 ULONG ulEncryptedLen, 576 BYTE *pbData, 577 ULONG *pulDataLen); 578 579 /* 7.6.32 */ 580 ULONG DEVAPI SKF_DecryptUpdate( 581 HANDLE hKey, 582 BYTE *pbEncryptedData, 583 ULONG ulEncryptedLen, 584 BYTE *pbData, 585 ULONG *pulDataLen); 586 587 /* 7.6.33 */ 588 ULONG DEVAPI SKF_DecryptFinal( 589 HANDLE hKey, 590 BYTE *pbDecryptedData, 591 ULONG *pulDecryptedDataLen); 592 593 /* 7.6.34 */ 594 ULONG DEVAPI SKF_DigestInit( 595 DEVHANDLE hDev, 596 ULONG ulAlgID, 597 ECCPUBLICKEYBLOB *pPubKey, 598 BYTE *pbID, 599 ULONG ulIDLen, 600 HANDLE *phHash); 601 602 /* 7.6.35 */ 603 ULONG DEVAPI SKF_Digest( 604 HANDLE hHash, 605 BYTE *pbData, 606 ULONG ulDataLen, 607 BYTE *pbHashData, 608 ULONG *pulHashLen); 609 610 /* 7.6.36 */ 611 ULONG DEVAPI SKF_DigestUpdate( 612 HANDLE hHash, 613 BYTE *pbData, 614 ULONG ulDataLen); 615 616 /* 7.6.37 */ 617 ULONG DEVAPI SKF_DigestFinal( 618 HANDLE hHash, 619 BYTE *pHashData, 620 ULONG *pulHashLen); 621 622 /* 7.6.38 */ 623 ULONG DEVAPI SKF_MacInit( 624 HANDLE hKey, 625 BLOCKCIPHERPARAM *pMacParam, 626 HANDLE *phMac); 627 628 /* 7.6.39 */ 629 ULONG DEVAPI SKF_Mac( 630 HANDLE hMac, 631 BYTE *pbData, 632 ULONG ulDataLen, 633 BYTE *pbMacData, 634 ULONG *pulMacLen); 635 636 /* 7.6.40 */ 637 ULONG DEVAPI SKF_MacUpdate( 638 HANDLE hMac, 639 BYTE *pbData, 640 ULONG ulDataLen); 641 642 /* 7.6.41 */ 643 ULONG DEVAPI SKF_MacFinal( 644 HANDLE hMac, 645 BYTE *pbMacData, 646 ULONG *pulMacDataLen); 647 648 /* 7.6.42 */ 649 ULONG DEVAPI SKF_CloseHandle( 650 HANDLE hHandle); 651 652 653 #define SAR_OK 0x00000000 654 #define SAR_FAIL 0x0A000001 655 #define SAR_UNKNOWNERR 0x0A000002 656 #define SAR_NOTSUPPORTYETERR 0x0A000003 657 #define SAR_FILEERR 0x0A000004 658 #define SAR_INVALIDHANDLEERR 0x0A000005 659 #define SAR_INVALIDPARAMERR 0x0A000006 660 #define SAR_READFILEERR 0x0A000007 661 #define SAR_WRITEFILEERR 0x0A000008 662 #define SAR_NAMELENERR 0x0A000009 663 #define SAR_KEYUSAGEERR 0x0A00000A 664 #define SAR_MODULUSLENERR 0x0A00000B 665 #define SAR_NOTINITIALIZEERR 0x0A00000C 666 #define SAR_OBJERR 0x0A00000D 667 #define SAR_MEMORYERR 0x0A00000E 668 #define SAR_TIMEOUTERR 0x0A00000F 669 #define SAR_INDATALENERR 0x0A000010 670 #define SAR_INDATAERR 0x0A000011 671 #define SAR_GENRANDERR 0x0A000012 672 #define SAR_HASHOBJERR 0x0A000013 673 #define SAR_HASHERR 0x0A000014 674 #define SAR_GENRSAKEYERR 0x0A000015 675 #define SAR_RSAMODULUSLENERR 0x0A000016 676 #define SAR_CSPIMPRTPUBKEYERR 0x0A000017 677 #define SAR_RSAENCERR 0x0A000018 678 #define SAR_RSADECERR 0x0A000019 679 #define SAR_HASHNOTEQUALERR 0x0A00001A 680 #define SAR_KEYNOTFOUNTERR 0x0A00001B 681 #define SAR_CERTNOTFOUNTERR 0x0A00001C 682 #define SAR_NOTEXPORTERR 0x0A00001D 683 #define SAR_DECRYPTPADERR 0x0A00001E 684 #define SAR_MACLENERR 0x0A00001F 685 #define SAR_BUFFER_TOO_SMALL 0x0A000020 686 #define SAR_KEYINFOTYPEERR 0x0A000021 687 #define SAR_NOT_EVENTERR 0x0A000022 688 #define SAR_DEVICE_REMOVED 0x0A000023 689 #define SAR_PIN_INCORRECT 0x0A000024 690 #define SAR_PIN_LOCKED 0x0A000025 691 #define SAR_PIN_INVALID 0x0A000026 692 #define SAR_PIN_LEN_RANGE 0x0A000027 693 #define SAR_USER_ALREADY_LOGGED_IN 0x0A000028 694 #define SAR_USER_PIN_NOT_INITIALIZED 0x0A000029 695 #define SAR_USER_TYPE_INVALID 0x0A00002A 696 #define SAR_APPLICATION_NAME_INVALID 0x0A00002B 697 #define SAR_APPLICATION_EXISTS 0x0A00002C 698 #define SAR_USER_NOT_LOGGED_IN 0x0A00002D 699 #define SAR_APPLICATION_NOT_EXISTS 0x0A00002E 700 #define SAR_FILE_ALREADY_EXIST 0x0A00002F 701 #define SAR_NO_ROOM 0x0A000030 702 #define SAR_FILE_NOT_EXIST 0x0A000031 703 #define SAR_REACH_MAX_CONTAINER_COUNT 0x0A000032 704 705 706 #ifdef __cplusplus 707 } 708 #endif 709 #endif 710