mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-08-09 07:23:56 +08:00
Add software SDF implementation
The soft_sdf will replace sdf_dummy library for buiding testing apps.
This commit is contained in:
@@ -75,6 +75,7 @@ set(tools
|
|||||||
tools/sm4.c
|
tools/sm4.c
|
||||||
tools/sm3.c
|
tools/sm3.c
|
||||||
tools/sm3hmac.c
|
tools/sm3hmac.c
|
||||||
|
tools/sm3xmss_keygen.c
|
||||||
tools/sm2keygen.c
|
tools/sm2keygen.c
|
||||||
tools/sm2sign.c
|
tools/sm2sign.c
|
||||||
tools/sm2verify.c
|
tools/sm2verify.c
|
||||||
@@ -285,7 +286,7 @@ if (ENABLE_SM3_XMSS)
|
|||||||
message(STATUS "ENABLE_SM3_XMSS is ON")
|
message(STATUS "ENABLE_SM3_XMSS is ON")
|
||||||
list(APPEND src src/sm3_xmss.c)
|
list(APPEND src src/sm3_xmss.c)
|
||||||
|
|
||||||
option(ENABLE_SM3_XMSS_CROSSCHECK "Enable XMSS SHA-256 cross-check" ON)
|
option(ENABLE_SM3_XMSS_CROSSCHECK "Enable XMSS SHA-256 cross-check" OFF)
|
||||||
if (ENABLE_SM3_XMSS_CROSSCHECK)
|
if (ENABLE_SM3_XMSS_CROSSCHECK)
|
||||||
message(STATUS "ENABLE_SM3_XMSS_CROSSCHECK is ON")
|
message(STATUS "ENABLE_SM3_XMSS_CROSSCHECK is ON")
|
||||||
add_definitions(-DENABLE_SM3_XMSS_CROSSCHECK)
|
add_definitions(-DENABLE_SM3_XMSS_CROSSCHECK)
|
||||||
@@ -331,6 +332,7 @@ if (ENABLE_CHACHA20)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
option(ENABLE_INTEL_RDRAND "Enable Intel RDRAND instructions" OFF)
|
option(ENABLE_INTEL_RDRAND "Enable Intel RDRAND instructions" OFF)
|
||||||
option(ENABLE_INTEL_RDSEED "Enable Intel RDSEED instructions" OFF)
|
option(ENABLE_INTEL_RDSEED "Enable Intel RDSEED instructions" OFF)
|
||||||
|
|
||||||
@@ -361,12 +363,20 @@ if (ENABLE_INTEL_RDRAND)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
option(ENABLE_SM4_CBC_MAC "Enable SM4-CBC-MAC" OFF)
|
||||||
|
if (ENABLE_SM4_CBC_MAC)
|
||||||
|
message(STATUS "ENABLE_SM4_CBC_MAC is ON")
|
||||||
|
list(APPEND src src/sm4_cbc_mac.c)
|
||||||
|
list(APPEND tests sm4_cbc_mac)
|
||||||
|
list(APPEND demos sm4_cbc_mac_demo)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
option(ENABLE_GMT_0105_RNG "Enable GM/T 0105 Software RNG" OFF)
|
option(ENABLE_GMT_0105_RNG "Enable GM/T 0105 Software RNG" OFF)
|
||||||
if (ENABLE_GMT_0105_RNG)
|
if (ENABLE_GMT_0105_RNG)
|
||||||
message(STATUS "ENABLE_GMT_0105_RNG")
|
message(STATUS "ENABLE_GMT_0105_RNG is ON")
|
||||||
list(APPEND src src/sm3_rng.c src/sm4_cbc_mac.c src/sm4_rng.c)
|
list(APPEND src src/sm3_rng.c src/sm4_rng.c)
|
||||||
list(APPEND tests sm3_rng sm4_cbc_mac sm4_rng)
|
list(APPEND tests sm3_rng sm4_rng)
|
||||||
list(APPEND demos sm4_cbc_mac_demo)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
@@ -400,6 +410,9 @@ endif()
|
|||||||
add_library(gmssl ${src})
|
add_library(gmssl ${src})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
target_link_libraries(gmssl -lws2_32)
|
target_link_libraries(gmssl -lws2_32)
|
||||||
elseif (APPLE)
|
elseif (APPLE)
|
||||||
@@ -421,6 +434,16 @@ SET_TARGET_PROPERTIES(gmssl PROPERTIES VERSION 3.1 SOVERSION 3)
|
|||||||
install(TARGETS gmssl ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
|
install(TARGETS gmssl ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
|
||||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/gmssl DESTINATION include)
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/gmssl DESTINATION include)
|
||||||
|
|
||||||
|
|
||||||
|
option(ENABLE_SOFT_SDF "Enable Software SDF Implementation" OFF)
|
||||||
|
if (ENABLE_SOFT_SDF)
|
||||||
|
message(STATUS "ENABLE_SOFT_SDF is ON")
|
||||||
|
add_library(soft_sdf SHARED src/sdf/soft_sdf.c)
|
||||||
|
target_link_libraries(soft_sdf PRIVATE gmssl)
|
||||||
|
set_target_properties(soft_sdf PROPERTIES VERSION 3.1 SOVERSION 3)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
||||||
|
|
||||||
add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c)
|
add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c)
|
||||||
|
|||||||
917
src/sdf/sdf.h
917
src/sdf/sdf.h
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2014-2022 The GmSSL Project. All Rights Reserved.
|
* Copyright 2014-2023 The GmSSL Project. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||||
* not use this file except in compliance with the License.
|
* not use this file except in compliance with the License.
|
||||||
@@ -7,459 +7,462 @@
|
|||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SDF API is a cryptographic API for PCI-E cards defined in standard
|
* SDF API is a cryptographic API for PCI-E cards defined in standard
|
||||||
* GM/T 0018-2012: Interface Specifications of Cryptography Device Application
|
* GM/T 0018-2012: Interface Specifications of Cryptography Device Application
|
||||||
*
|
*
|
||||||
* Note: this header file follows the specification of GM/T 0018-2012. As we
|
* Note: this header file follows the specification of GM/T 0018-2012. As we
|
||||||
* know, some vendors provide header files with some differences, especially
|
* know, some vendors provide header files with some differences, especially
|
||||||
* the definations of data structures. So be sure to check the file provided by
|
* the definations of data structures. So be sure to check the file provided by
|
||||||
* vendors and compare with this one.
|
* vendors and compare with this one.
|
||||||
*
|
*
|
||||||
* The implementations of SDF API from different vendors might have different
|
* The implementations of SDF API from different vendors might have different
|
||||||
* behaviors on the same function. The comments in this file will show
|
* behaviors on the same function. The comments in this file will show
|
||||||
* information and warnings on these issues. If the application developer use
|
* information and warnings on these issues. If the application developer use
|
||||||
* the GmSSL implementation, see `crypto/gmapi/sdf_lcl.h` for more information.
|
* the GmSSL implementation, see `crypto/gmapi/sdf_lcl.h` for more information.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef HEADER_SDF_H
|
#ifndef HEADER_SDF_H
|
||||||
#define HEADER_SDF_H
|
#define HEADER_SDF_H
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "../sgd.h"
|
#include "../sgd.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
typedef struct DeviceInfo_st {
|
typedef struct DeviceInfo_st {
|
||||||
unsigned char IssuerName[40];
|
unsigned char IssuerName[40];
|
||||||
unsigned char DeviceName[16];
|
unsigned char DeviceName[16];
|
||||||
unsigned char DeviceSerial[16]; /* 8-char date +
|
unsigned char DeviceSerial[16]; /* 8-char date +
|
||||||
* 3-char batch num +
|
* 3-char batch num +
|
||||||
* 5-char serial num
|
* 5-char serial num
|
||||||
*/
|
*/
|
||||||
unsigned int DeviceVersion;
|
unsigned int DeviceVersion;
|
||||||
unsigned int StandardVersion;
|
unsigned int StandardVersion;
|
||||||
unsigned int AsymAlgAbility[2]; /* AsymAlgAbility[0] = algors
|
unsigned int AsymAlgAbility[2]; /* AsymAlgAbility[0] = algors
|
||||||
* AsymAlgAbility[1] = modulus lens
|
* AsymAlgAbility[1] = modulus lens
|
||||||
*/
|
*/
|
||||||
unsigned int SymAlgAbility;
|
unsigned int SymAlgAbility;
|
||||||
unsigned int HashAlgAbility;
|
unsigned int HashAlgAbility;
|
||||||
unsigned int BufferSize;
|
unsigned int BufferSize;
|
||||||
} DEVICEINFO;
|
} DEVICEINFO;
|
||||||
|
|
||||||
typedef struct RSArefPublicKey_st {
|
typedef struct RSArefPublicKey_st {
|
||||||
unsigned int bits;
|
unsigned int bits;
|
||||||
unsigned char m[RSAref_MAX_LEN];
|
unsigned char m[RSAref_MAX_LEN];
|
||||||
unsigned char e[RSAref_MAX_LEN];
|
unsigned char e[RSAref_MAX_LEN];
|
||||||
} RSArefPublicKey;
|
} RSArefPublicKey;
|
||||||
|
|
||||||
typedef struct RSArefPrivateKey_st {
|
typedef struct RSArefPrivateKey_st {
|
||||||
unsigned int bits;
|
unsigned int bits;
|
||||||
unsigned char m[RSAref_MAX_LEN];
|
unsigned char m[RSAref_MAX_LEN];
|
||||||
unsigned char e[RSAref_MAX_LEN];
|
unsigned char e[RSAref_MAX_LEN];
|
||||||
unsigned char d[RSAref_MAX_LEN];
|
unsigned char d[RSAref_MAX_LEN];
|
||||||
unsigned char prime[2][RSAref_MAX_PLEN];
|
unsigned char prime[2][RSAref_MAX_PLEN];
|
||||||
unsigned char pexp[2][RSAref_MAX_PLEN];
|
unsigned char pexp[2][RSAref_MAX_PLEN];
|
||||||
unsigned char coef[RSAref_MAX_PLEN];
|
unsigned char coef[RSAref_MAX_PLEN];
|
||||||
} RSArefPrivateKey;
|
} RSArefPrivateKey;
|
||||||
|
|
||||||
typedef struct ECCrefPublicKey_st {
|
typedef struct ECCrefPublicKey_st {
|
||||||
unsigned int bits;
|
unsigned int bits;
|
||||||
unsigned char x[ECCref_MAX_LEN];
|
unsigned char x[ECCref_MAX_LEN];
|
||||||
unsigned char y[ECCref_MAX_LEN];
|
unsigned char y[ECCref_MAX_LEN];
|
||||||
} ECCrefPublicKey;
|
} ECCrefPublicKey;
|
||||||
|
|
||||||
typedef struct ECCrefPrivateKey_st {
|
typedef struct ECCrefPrivateKey_st {
|
||||||
unsigned int bits;
|
unsigned int bits;
|
||||||
unsigned char K[ECCref_MAX_LEN];
|
unsigned char K[ECCref_MAX_LEN];
|
||||||
} ECCrefPrivateKey;
|
} ECCrefPrivateKey;
|
||||||
|
|
||||||
typedef struct ECCCipher_st {
|
typedef struct ECCCipher_st {
|
||||||
unsigned char x[ECCref_MAX_LEN];
|
unsigned char x[ECCref_MAX_LEN];
|
||||||
unsigned char y[ECCref_MAX_LEN];
|
unsigned char y[ECCref_MAX_LEN];
|
||||||
unsigned char M[32];
|
unsigned char M[32];
|
||||||
unsigned int L;
|
unsigned int L;
|
||||||
unsigned char C[1];
|
unsigned char C[1];
|
||||||
} ECCCipher;
|
// Extend sizeof(C) to SM2_MAX_PLAINTEXT_SIZE
|
||||||
|
// gmssl/sm2.h: SM2_MAX_PLAINTEXT_SIZE = 255
|
||||||
typedef struct ECCSignature_st {
|
unsigned char C_[254];
|
||||||
unsigned char r[ECCref_MAX_LEN];
|
} ECCCipher;
|
||||||
unsigned char s[ECCref_MAX_LEN];
|
|
||||||
} ECCSignature;
|
typedef struct ECCSignature_st {
|
||||||
|
unsigned char r[ECCref_MAX_LEN];
|
||||||
typedef struct SDF_ENVELOPEDKEYBLOB {
|
unsigned char s[ECCref_MAX_LEN];
|
||||||
unsigned long Version;
|
} ECCSignature;
|
||||||
unsigned long ulSymmAlgID;
|
|
||||||
ECCCipher ECCCipehrBlob;
|
typedef struct SDF_ENVELOPEDKEYBLOB {
|
||||||
ECCrefPublicKey PubKey;
|
unsigned long Version;
|
||||||
unsigned char cbEncryptedPrivKey[64];
|
unsigned long ulSymmAlgID;
|
||||||
} EnvelopedKeyBlob, *PEnvelopedKeyBlob;
|
ECCCipher ECCCipehrBlob;
|
||||||
#pragma pack()
|
ECCrefPublicKey PubKey;
|
||||||
|
unsigned char cbEncryptedPrivKey[64];
|
||||||
int SDF_OpenDevice(
|
} EnvelopedKeyBlob, *PEnvelopedKeyBlob;
|
||||||
void **phDeviceHandle);
|
#pragma pack()
|
||||||
|
|
||||||
int SDF_CloseDevice(
|
int SDF_OpenDevice(
|
||||||
void *hDeviceHandle);
|
void **phDeviceHandle);
|
||||||
|
|
||||||
int SDF_OpenSession(
|
int SDF_CloseDevice(
|
||||||
void *hDeviceHandle,
|
void *hDeviceHandle);
|
||||||
void **phSessionHandle);
|
|
||||||
|
int SDF_OpenSession(
|
||||||
int SDF_CloseSession(
|
void *hDeviceHandle,
|
||||||
void *hSessionHandle);
|
void **phSessionHandle);
|
||||||
|
|
||||||
int SDF_GetDeviceInfo(
|
int SDF_CloseSession(
|
||||||
void *hSessionHandle,
|
void *hSessionHandle);
|
||||||
DEVICEINFO *pstDeviceInfo);
|
|
||||||
|
int SDF_GetDeviceInfo(
|
||||||
int SDF_GenerateRandom(
|
void *hSessionHandle,
|
||||||
void *hSessionHandle,
|
DEVICEINFO *pstDeviceInfo);
|
||||||
unsigned int uiLength,
|
|
||||||
unsigned char *pucRandom);
|
int SDF_GenerateRandom(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_GetPrivateKeyAccessRight(
|
unsigned int uiLength,
|
||||||
void *hSessionHandle,
|
unsigned char *pucRandom);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
unsigned char *pucPassword,
|
int SDF_GetPrivateKeyAccessRight(
|
||||||
unsigned int uiPwdLength);
|
void *hSessionHandle,
|
||||||
|
unsigned int uiKeyIndex,
|
||||||
int SDF_ReleasePrivateKeyAccessRight(
|
unsigned char *pucPassword,
|
||||||
void *hSessionHandle,
|
unsigned int uiPwdLength);
|
||||||
unsigned int uiKeyIndex);
|
|
||||||
|
int SDF_ReleasePrivateKeyAccessRight(
|
||||||
int SDF_ExportSignPublicKey_RSA(
|
void *hSessionHandle,
|
||||||
void *hSessionHandle,
|
unsigned int uiKeyIndex);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
RSArefPublicKey *pucPublicKey);
|
int SDF_ExportSignPublicKey_RSA(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_ExportEncPublicKey_RSA(
|
unsigned int uiKeyIndex,
|
||||||
void *hSessionHandle,
|
RSArefPublicKey *pucPublicKey);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
RSArefPublicKey *pucPublicKey);
|
int SDF_ExportEncPublicKey_RSA(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_GenerateKeyPair_RSA(
|
unsigned int uiKeyIndex,
|
||||||
void *hSessionHandle,
|
RSArefPublicKey *pucPublicKey);
|
||||||
unsigned int uiKeyBits,
|
|
||||||
RSArefPublicKey *pucPublicKey,
|
int SDF_GenerateKeyPair_RSA(
|
||||||
RSArefPrivateKey *pucPrivateKey);
|
void *hSessionHandle,
|
||||||
|
unsigned int uiKeyBits,
|
||||||
int SDF_GenerateKeyWithIPK_RSA(
|
RSArefPublicKey *pucPublicKey,
|
||||||
void *hSessionHandle,
|
RSArefPrivateKey *pucPrivateKey);
|
||||||
unsigned int uiIPKIndex,
|
|
||||||
unsigned int uiKeyBits,
|
int SDF_GenerateKeyWithIPK_RSA(
|
||||||
unsigned char *pucKey,
|
void *hSessionHandle,
|
||||||
unsigned int *puiKeyLength,
|
unsigned int uiIPKIndex,
|
||||||
void **phKeyHandle);
|
unsigned int uiKeyBits,
|
||||||
|
unsigned char *pucKey,
|
||||||
int SDF_GenerateKeyWithEPK_RSA(
|
unsigned int *puiKeyLength,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiKeyBits,
|
|
||||||
RSArefPublicKey *pucPublicKey,
|
int SDF_GenerateKeyWithEPK_RSA(
|
||||||
unsigned char *pucKey,
|
void *hSessionHandle,
|
||||||
unsigned int *puiKeyLength,
|
unsigned int uiKeyBits,
|
||||||
void **phKeyHandle);
|
RSArefPublicKey *pucPublicKey,
|
||||||
|
unsigned char *pucKey,
|
||||||
int SDF_ImportKeyWithISK_RSA(
|
unsigned int *puiKeyLength,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
unsigned char *pucKey,
|
int SDF_ImportKeyWithISK_RSA(
|
||||||
unsigned int uiKeyLength,
|
void *hSessionHandle,
|
||||||
void **phKeyHandle);
|
unsigned int uiISKIndex,
|
||||||
|
unsigned char *pucKey,
|
||||||
int SDF_ExchangeDigitEnvelopeBaseOnRSA(
|
unsigned int uiKeyLength,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
RSArefPublicKey *pucPublicKey,
|
int SDF_ExchangeDigitEnvelopeBaseOnRSA(
|
||||||
unsigned char *pucDEInput,
|
void *hSessionHandle,
|
||||||
unsigned int uiDELength,
|
unsigned int uiKeyIndex,
|
||||||
unsigned char *pucDEOutput,
|
RSArefPublicKey *pucPublicKey,
|
||||||
unsigned int *puiDELength);
|
unsigned char *pucDEInput,
|
||||||
|
unsigned int uiDELength,
|
||||||
int SDF_ExportSignPublicKey_ECC(
|
unsigned char *pucDEOutput,
|
||||||
void *hSessionHandle,
|
unsigned int *puiDELength);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
ECCrefPublicKey *pucPublicKey);
|
int SDF_ExportSignPublicKey_ECC(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_ExportEncPublicKey_ECC(
|
unsigned int uiKeyIndex,
|
||||||
void *hSessionHandle,
|
ECCrefPublicKey *pucPublicKey);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
ECCrefPublicKey *pucPublicKey);
|
int SDF_ExportEncPublicKey_ECC(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_GenerateKeyPair_ECC(
|
unsigned int uiKeyIndex,
|
||||||
void *hSessionHandle,
|
ECCrefPublicKey *pucPublicKey);
|
||||||
unsigned int uiAlgID,
|
|
||||||
unsigned int uiKeyBits,
|
int SDF_GenerateKeyPair_ECC(
|
||||||
ECCrefPublicKey *pucPublicKey,
|
void *hSessionHandle,
|
||||||
ECCrefPrivateKey *pucPrivateKey);
|
unsigned int uiAlgID,
|
||||||
|
unsigned int uiKeyBits,
|
||||||
int SDF_GenerateKeyWithIPK_ECC(
|
ECCrefPublicKey *pucPublicKey,
|
||||||
void *hSessionHandle,
|
ECCrefPrivateKey *pucPrivateKey);
|
||||||
unsigned int uiIPKIndex,
|
|
||||||
unsigned int uiKeyBits,
|
int SDF_GenerateKeyWithIPK_ECC(
|
||||||
ECCCipher *pucKey,
|
void *hSessionHandle,
|
||||||
void **phKeyHandle);
|
unsigned int uiIPKIndex,
|
||||||
|
unsigned int uiKeyBits,
|
||||||
int SDF_GenerateKeyWithEPK_ECC(
|
ECCCipher *pucKey,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiKeyBits,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_GenerateKeyWithEPK_ECC(
|
||||||
ECCrefPublicKey *pucPublicKey,
|
void *hSessionHandle,
|
||||||
ECCCipher *pucKey,
|
unsigned int uiKeyBits,
|
||||||
void **phKeyHandle);
|
unsigned int uiAlgID,
|
||||||
|
ECCrefPublicKey *pucPublicKey,
|
||||||
int SDF_ImportKeyWithISK_ECC(
|
ECCCipher *pucKey,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
ECCCipher *pucKey,
|
int SDF_ImportKeyWithISK_ECC(
|
||||||
void **phKeyHandle);
|
void *hSessionHandle,
|
||||||
|
unsigned int uiISKIndex,
|
||||||
int SDF_GenerateAgreementDataWithECC(
|
ECCCipher *pucKey,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
unsigned int uiKeyBits,
|
int SDF_GenerateAgreementDataWithECC(
|
||||||
unsigned char *pucSponsorID,
|
void *hSessionHandle,
|
||||||
unsigned int uiSponsorIDLength,
|
unsigned int uiISKIndex,
|
||||||
ECCrefPublicKey *pucSponsorPublicKey,
|
unsigned int uiKeyBits,
|
||||||
ECCrefPublicKey *pucSponsorTmpPublicKey,
|
unsigned char *pucSponsorID,
|
||||||
void **phAgreementHandle);
|
unsigned int uiSponsorIDLength,
|
||||||
|
ECCrefPublicKey *pucSponsorPublicKey,
|
||||||
int SDF_GenerateKeyWithECC(
|
ECCrefPublicKey *pucSponsorTmpPublicKey,
|
||||||
void *hSessionHandle,
|
void **phAgreementHandle);
|
||||||
unsigned char *pucResponseID,
|
|
||||||
unsigned int uiResponseIDLength,
|
int SDF_GenerateKeyWithECC(
|
||||||
ECCrefPublicKey *pucResponsePublicKey,
|
void *hSessionHandle,
|
||||||
ECCrefPublicKey *pucResponseTmpPublicKey,
|
unsigned char *pucResponseID,
|
||||||
void *hAgreementHandle,
|
unsigned int uiResponseIDLength,
|
||||||
void **phKeyHandle);
|
ECCrefPublicKey *pucResponsePublicKey,
|
||||||
|
ECCrefPublicKey *pucResponseTmpPublicKey,
|
||||||
int SDF_GenerateAgreementDataAndKeyWithECC(
|
void *hAgreementHandle,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
unsigned int uiKeyBits,
|
int SDF_GenerateAgreementDataAndKeyWithECC(
|
||||||
unsigned char *pucResponseID,
|
void *hSessionHandle,
|
||||||
unsigned int uiResponseIDLength,
|
unsigned int uiISKIndex,
|
||||||
unsigned char *pucSponsorID,
|
unsigned int uiKeyBits,
|
||||||
unsigned int uiSponsorIDLength,
|
unsigned char *pucResponseID,
|
||||||
ECCrefPublicKey *pucSponsorPublicKey,
|
unsigned int uiResponseIDLength,
|
||||||
ECCrefPublicKey *pucSponsorTmpPublicKey,
|
unsigned char *pucSponsorID,
|
||||||
ECCrefPublicKey *pucResponsePublicKey,
|
unsigned int uiSponsorIDLength,
|
||||||
ECCrefPublicKey *pucResponseTmpPublicKey,
|
ECCrefPublicKey *pucSponsorPublicKey,
|
||||||
void **phKeyHandle);
|
ECCrefPublicKey *pucSponsorTmpPublicKey,
|
||||||
|
ECCrefPublicKey *pucResponsePublicKey,
|
||||||
int SDF_ExchangeDigitEnvelopeBaseOnECC(
|
ECCrefPublicKey *pucResponseTmpPublicKey,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_ExchangeDigitEnvelopeBaseOnECC(
|
||||||
ECCrefPublicKey *pucPublicKey,
|
void *hSessionHandle,
|
||||||
ECCCipher *pucEncDataIn,
|
unsigned int uiKeyIndex,
|
||||||
ECCCipher *pucEncDataOut);
|
unsigned int uiAlgID,
|
||||||
|
ECCrefPublicKey *pucPublicKey,
|
||||||
int SDF_GenerateKeyWithKEK(
|
ECCCipher *pucEncDataIn,
|
||||||
void *hSessionHandle,
|
ECCCipher *pucEncDataOut);
|
||||||
unsigned int uiKeyBits,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_GenerateKeyWithKEK(
|
||||||
unsigned int uiKEKIndex,
|
void *hSessionHandle,
|
||||||
unsigned char *pucKey,
|
unsigned int uiKeyBits,
|
||||||
unsigned int *puiKeyLength,
|
unsigned int uiAlgID,
|
||||||
void **phKeyHandle);
|
unsigned int uiKEKIndex,
|
||||||
|
unsigned char *pucKey,
|
||||||
int SDF_ImportKeyWithKEK(
|
unsigned int *puiKeyLength,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
unsigned int uiAlgID,
|
|
||||||
unsigned int uiKEKIndex,
|
int SDF_ImportKeyWithKEK(
|
||||||
unsigned char *pucKey,
|
void *hSessionHandle,
|
||||||
unsigned int uiKeyLength,
|
unsigned int uiAlgID,
|
||||||
void **phKeyHandle);
|
unsigned int uiKEKIndex,
|
||||||
|
unsigned char *pucKey,
|
||||||
int SDF_DestroyKey(
|
unsigned int uiKeyLength,
|
||||||
void *hSessionHandle,
|
void **phKeyHandle);
|
||||||
void *hKeyHandle);
|
|
||||||
|
int SDF_DestroyKey(
|
||||||
int SDF_ExternalPublicKeyOperation_RSA(
|
void *hSessionHandle,
|
||||||
void *hSessionHandle,
|
void *hKeyHandle);
|
||||||
RSArefPublicKey *pucPublicKey,
|
|
||||||
unsigned char *pucDataInput,
|
int SDF_ExternalPublicKeyOperation_RSA(
|
||||||
unsigned int uiInputLength,
|
void *hSessionHandle,
|
||||||
unsigned char *pucDataOutput,
|
RSArefPublicKey *pucPublicKey,
|
||||||
unsigned int *puiOutputLength);
|
unsigned char *pucDataInput,
|
||||||
|
unsigned int uiInputLength,
|
||||||
int SDF_InternalPublicKeyOperation_RSA(
|
unsigned char *pucDataOutput,
|
||||||
void *hSessionHandle,
|
unsigned int *puiOutputLength);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
unsigned char *pucDataInput,
|
int SDF_InternalPublicKeyOperation_RSA(
|
||||||
unsigned int uiInputLength,
|
void *hSessionHandle,
|
||||||
unsigned char *pucDataOutput,
|
unsigned int uiKeyIndex,
|
||||||
unsigned int *puiOutputLength);
|
unsigned char *pucDataInput,
|
||||||
|
unsigned int uiInputLength,
|
||||||
int SDF_InternalPrivateKeyOperation_RSA(
|
unsigned char *pucDataOutput,
|
||||||
void *hSessionHandle,
|
unsigned int *puiOutputLength);
|
||||||
unsigned int uiKeyIndex,
|
|
||||||
unsigned char *pucDataInput,
|
int SDF_InternalPrivateKeyOperation_RSA(
|
||||||
unsigned int uiInputLength,
|
void *hSessionHandle,
|
||||||
unsigned char *pucDataOutput,
|
unsigned int uiKeyIndex,
|
||||||
unsigned int *puiOutputLength);
|
unsigned char *pucDataInput,
|
||||||
|
unsigned int uiInputLength,
|
||||||
int SDF_ExternalVerify_ECC(
|
unsigned char *pucDataOutput,
|
||||||
void *hSessionHandle,
|
unsigned int *puiOutputLength);
|
||||||
unsigned int uiAlgID,
|
|
||||||
ECCrefPublicKey *pucPublicKey,
|
int SDF_ExternalVerify_ECC(
|
||||||
unsigned char *pucDataInput,
|
void *hSessionHandle,
|
||||||
unsigned int uiInputLength,
|
unsigned int uiAlgID,
|
||||||
ECCSignature *pucSignature);
|
ECCrefPublicKey *pucPublicKey,
|
||||||
|
unsigned char *pucDataInput,
|
||||||
int SDF_InternalSign_ECC(
|
unsigned int uiInputLength,
|
||||||
void *hSessionHandle,
|
ECCSignature *pucSignature);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
unsigned char *pucData,
|
int SDF_InternalSign_ECC(
|
||||||
unsigned int uiDataLength,
|
void *hSessionHandle,
|
||||||
ECCSignature *pucSignature);
|
unsigned int uiISKIndex,
|
||||||
|
unsigned char *pucData,
|
||||||
int SDF_InternalVerify_ECC(
|
unsigned int uiDataLength,
|
||||||
void *hSessionHandle,
|
ECCSignature *pucSignature);
|
||||||
unsigned int uiIPKIndex,
|
|
||||||
unsigned char *pucData,
|
int SDF_InternalVerify_ECC(
|
||||||
unsigned int uiDataLength,
|
void *hSessionHandle,
|
||||||
ECCSignature *pucSignature);
|
unsigned int uiIPKIndex,
|
||||||
|
unsigned char *pucData,
|
||||||
int SDF_ExternalEncrypt_ECC(
|
unsigned int uiDataLength,
|
||||||
void *hSessionHandle,
|
ECCSignature *pucSignature);
|
||||||
unsigned int uiAlgID,
|
|
||||||
ECCrefPublicKey *pucPublicKey,
|
int SDF_ExternalEncrypt_ECC(
|
||||||
unsigned char *pucData,
|
void *hSessionHandle,
|
||||||
unsigned int uiDataLength,
|
unsigned int uiAlgID,
|
||||||
ECCCipher *pucEncData);
|
ECCrefPublicKey *pucPublicKey,
|
||||||
|
unsigned char *pucData,
|
||||||
int SDF_InternalEncrypt_ECC(
|
unsigned int uiDataLength,
|
||||||
void *hSessionHandle,
|
ECCCipher *pucEncData);
|
||||||
unsigned int uiIPKIndex,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_InternalEncrypt_ECC(
|
||||||
unsigned char *pucData,
|
void *hSessionHandle,
|
||||||
unsigned int uiDataLength,
|
unsigned int uiIPKIndex,
|
||||||
ECCCipher *pucEncData);
|
unsigned int uiAlgID,
|
||||||
|
unsigned char *pucData,
|
||||||
int SDF_InternalDecrypt_ECC(
|
unsigned int uiDataLength,
|
||||||
void *hSessionHandle,
|
ECCCipher *pucEncData);
|
||||||
unsigned int uiISKIndex,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_InternalDecrypt_ECC(
|
||||||
ECCCipher *pucEncData,
|
void *hSessionHandle,
|
||||||
unsigned char *pucData,
|
unsigned int uiISKIndex,
|
||||||
unsigned int *uiDataLength);
|
unsigned int uiAlgID,
|
||||||
|
ECCCipher *pucEncData,
|
||||||
int SDF_Encrypt(
|
unsigned char *pucData,
|
||||||
void *hSessionHandle,
|
unsigned int *uiDataLength);
|
||||||
void *hKeyHandle,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_Encrypt(
|
||||||
unsigned char *pucIV,
|
void *hSessionHandle,
|
||||||
unsigned char *pucData,
|
void *hKeyHandle,
|
||||||
unsigned int uiDataLength,
|
unsigned int uiAlgID,
|
||||||
unsigned char *pucEncData,
|
unsigned char *pucIV,
|
||||||
unsigned int *puiEncDataLength);
|
unsigned char *pucData,
|
||||||
|
unsigned int uiDataLength,
|
||||||
int SDF_Decrypt(
|
unsigned char *pucEncData,
|
||||||
void *hSessionHandle,
|
unsigned int *puiEncDataLength);
|
||||||
void *hKeyHandle,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_Decrypt(
|
||||||
unsigned char *pucIV,
|
void *hSessionHandle,
|
||||||
unsigned char *pucEncData,
|
void *hKeyHandle,
|
||||||
unsigned int uiEncDataLength,
|
unsigned int uiAlgID,
|
||||||
unsigned char *pucData,
|
unsigned char *pucIV,
|
||||||
unsigned int *puiDataLength);
|
unsigned char *pucEncData,
|
||||||
|
unsigned int uiEncDataLength,
|
||||||
int SDF_CalculateMAC(
|
unsigned char *pucData,
|
||||||
void *hSessionHandle,
|
unsigned int *puiDataLength);
|
||||||
void *hKeyHandle,
|
|
||||||
unsigned int uiAlgID,
|
int SDF_CalculateMAC(
|
||||||
unsigned char *pucIV,
|
void *hSessionHandle,
|
||||||
unsigned char *pucData,
|
void *hKeyHandle,
|
||||||
unsigned int uiDataLength,
|
unsigned int uiAlgID,
|
||||||
unsigned char *pucMAC,
|
unsigned char *pucIV,
|
||||||
unsigned int *puiMACLength);
|
unsigned char *pucData,
|
||||||
|
unsigned int uiDataLength,
|
||||||
int SDF_HashInit(
|
unsigned char *pucMAC,
|
||||||
void *hSessionHandle,
|
unsigned int *puiMACLength);
|
||||||
unsigned int uiAlgID,
|
|
||||||
ECCrefPublicKey *pucPublicKey,
|
int SDF_HashInit(
|
||||||
unsigned char *pucID,
|
void *hSessionHandle,
|
||||||
unsigned int uiIDLength);
|
unsigned int uiAlgID,
|
||||||
|
ECCrefPublicKey *pucPublicKey,
|
||||||
int SDF_HashUpdate(
|
unsigned char *pucID,
|
||||||
void *hSessionHandle,
|
unsigned int uiIDLength);
|
||||||
unsigned char *pucData,
|
|
||||||
unsigned int uiDataLength);
|
int SDF_HashUpdate(
|
||||||
|
void *hSessionHandle,
|
||||||
int SDF_HashFinal(void *hSessionHandle,
|
unsigned char *pucData,
|
||||||
unsigned char *pucHash,
|
unsigned int uiDataLength);
|
||||||
unsigned int *puiHashLength);
|
|
||||||
|
int SDF_HashFinal(void *hSessionHandle,
|
||||||
int SDF_CreateFile(
|
unsigned char *pucHash,
|
||||||
void *hSessionHandle,
|
unsigned int *puiHashLength);
|
||||||
unsigned char *pucFileName,
|
|
||||||
unsigned int uiNameLen, /* max 128-byte */
|
int SDF_CreateFile(
|
||||||
unsigned int uiFileSize);
|
void *hSessionHandle,
|
||||||
|
unsigned char *pucFileName,
|
||||||
int SDF_ReadFile(
|
unsigned int uiNameLen, /* max 128-byte */
|
||||||
void *hSessionHandle,
|
unsigned int uiFileSize);
|
||||||
unsigned char *pucFileName,
|
|
||||||
unsigned int uiNameLen,
|
int SDF_ReadFile(
|
||||||
unsigned int uiOffset,
|
void *hSessionHandle,
|
||||||
unsigned int *puiReadLength,
|
unsigned char *pucFileName,
|
||||||
unsigned char *pucBuffer);
|
unsigned int uiNameLen,
|
||||||
|
unsigned int uiOffset,
|
||||||
int SDF_WriteFile(
|
unsigned int *puiReadLength,
|
||||||
void *hSessionHandle,
|
unsigned char *pucBuffer);
|
||||||
unsigned char *pucFileName,
|
|
||||||
unsigned int uiNameLen,
|
int SDF_WriteFile(
|
||||||
unsigned int uiOffset,
|
void *hSessionHandle,
|
||||||
unsigned int uiWriteLength,
|
unsigned char *pucFileName,
|
||||||
unsigned char *pucBuffer);
|
unsigned int uiNameLen,
|
||||||
|
unsigned int uiOffset,
|
||||||
int SDF_DeleteFile(
|
unsigned int uiWriteLength,
|
||||||
void *hSessionHandle,
|
unsigned char *pucBuffer);
|
||||||
unsigned char *pucFileName,
|
|
||||||
unsigned int uiNameLen);
|
int SDF_DeleteFile(
|
||||||
|
void *hSessionHandle,
|
||||||
#define SDR_OK 0x0
|
unsigned char *pucFileName,
|
||||||
#define SDR_BASE 0x01000000
|
unsigned int uiNameLen);
|
||||||
#define SDR_UNKNOWERR (SDR_BASE + 0x00000001)
|
|
||||||
#define SDR_NOTSUPPORT (SDR_BASE + 0x00000002)
|
#define SDR_OK 0x0
|
||||||
#define SDR_COMMFAIL (SDR_BASE + 0x00000003)
|
#define SDR_BASE 0x01000000
|
||||||
#define SDR_HARDFAIL (SDR_BASE + 0x00000004)
|
#define SDR_UNKNOWERR (SDR_BASE + 0x00000001)
|
||||||
#define SDR_OPENDEVICE (SDR_BASE + 0x00000005)
|
#define SDR_NOTSUPPORT (SDR_BASE + 0x00000002)
|
||||||
#define SDR_OPENSESSION (SDR_BASE + 0x00000006)
|
#define SDR_COMMFAIL (SDR_BASE + 0x00000003)
|
||||||
#define SDR_PARDENY (SDR_BASE + 0x00000007)
|
#define SDR_HARDFAIL (SDR_BASE + 0x00000004)
|
||||||
#define SDR_KEYNOTEXIST (SDR_BASE + 0x00000008)
|
#define SDR_OPENDEVICE (SDR_BASE + 0x00000005)
|
||||||
#define SDR_ALGNOTSUPPORT (SDR_BASE + 0x00000009)
|
#define SDR_OPENSESSION (SDR_BASE + 0x00000006)
|
||||||
#define SDR_ALGMODNOTSUPPORT (SDR_BASE + 0x0000000A)
|
#define SDR_PARDENY (SDR_BASE + 0x00000007)
|
||||||
#define SDR_PKOPERR (SDR_BASE + 0x0000000B)
|
#define SDR_KEYNOTEXIST (SDR_BASE + 0x00000008)
|
||||||
#define SDR_SKOPERR (SDR_BASE + 0x0000000C)
|
#define SDR_ALGNOTSUPPORT (SDR_BASE + 0x00000009)
|
||||||
#define SDR_SIGNERR (SDR_BASE + 0x0000000D)
|
#define SDR_ALGMODNOTSUPPORT (SDR_BASE + 0x0000000A)
|
||||||
#define SDR_VERIFYERR (SDR_BASE + 0x0000000E)
|
#define SDR_PKOPERR (SDR_BASE + 0x0000000B)
|
||||||
#define SDR_SYMOPERR (SDR_BASE + 0x0000000F)
|
#define SDR_SKOPERR (SDR_BASE + 0x0000000C)
|
||||||
#define SDR_STEPERR (SDR_BASE + 0x00000010)
|
#define SDR_SIGNERR (SDR_BASE + 0x0000000D)
|
||||||
#define SDR_FILESIZEERR (SDR_BASE + 0x00000011)
|
#define SDR_VERIFYERR (SDR_BASE + 0x0000000E)
|
||||||
#define SDR_FILENOEXIST (SDR_BASE + 0x00000012)
|
#define SDR_SYMOPERR (SDR_BASE + 0x0000000F)
|
||||||
#define SDR_FILEOFSERR (SDR_BASE + 0x00000013)
|
#define SDR_STEPERR (SDR_BASE + 0x00000010)
|
||||||
#define SDR_KEYTYPEERR (SDR_BASE + 0x00000014)
|
#define SDR_FILESIZEERR (SDR_BASE + 0x00000011)
|
||||||
#define SDR_KEYERR (SDR_BASE + 0x00000015)
|
#define SDR_FILENOEXIST (SDR_BASE + 0x00000012)
|
||||||
#define SDR_ENCDATAERR (SDR_BASE + 0x00000016)
|
#define SDR_FILEOFSERR (SDR_BASE + 0x00000013)
|
||||||
#define SDR_RANDERR (SDR_BASE + 0x00000017)
|
#define SDR_KEYTYPEERR (SDR_BASE + 0x00000014)
|
||||||
#define SDR_PRKRERR (SDR_BASE + 0x00000018)
|
#define SDR_KEYERR (SDR_BASE + 0x00000015)
|
||||||
#define SDR_MACERR (SDR_BASE + 0x00000019)
|
#define SDR_ENCDATAERR (SDR_BASE + 0x00000016)
|
||||||
#define SDR_FILEEXSITS (SDR_BASE + 0x0000001A)
|
#define SDR_RANDERR (SDR_BASE + 0x00000017)
|
||||||
#define SDR_FILEWERR (SDR_BASE + 0x0000001B)
|
#define SDR_PRKRERR (SDR_BASE + 0x00000018)
|
||||||
#define SDR_NOBUFFER (SDR_BASE + 0x0000001C)
|
#define SDR_MACERR (SDR_BASE + 0x00000019)
|
||||||
#define SDR_INARGERR (SDR_BASE + 0x0000001D)
|
#define SDR_FILEEXSITS (SDR_BASE + 0x0000001A)
|
||||||
#define SDR_OUTARGERR (SDR_BASE + 0x0000001E)
|
#define SDR_FILEWERR (SDR_BASE + 0x0000001B)
|
||||||
|
#define SDR_NOBUFFER (SDR_BASE + 0x0000001C)
|
||||||
|
#define SDR_INARGERR (SDR_BASE + 0x0000001D)
|
||||||
#ifdef __cplusplus
|
#define SDR_OUTARGERR (SDR_BASE + 0x0000001E)
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|||||||
2335
src/sdf/soft_sdf.c
Executable file
2335
src/sdf/soft_sdf.c
Executable file
File diff suppressed because it is too large
Load Diff
@@ -65,9 +65,9 @@
|
|||||||
#define SGD_RSA_SIGN (SGD_RSA|SGD_PK_SIGN) // FIXME: correct?
|
#define SGD_RSA_SIGN (SGD_RSA|SGD_PK_SIGN) // FIXME: correct?
|
||||||
#define SGD_RSA_ENC (SGD_RSA|SGD_PK_ENC) // FIXME: correct?
|
#define SGD_RSA_ENC (SGD_RSA|SGD_PK_ENC) // FIXME: correct?
|
||||||
#define SGD_SM2 0x00020100
|
#define SGD_SM2 0x00020100
|
||||||
#define SGD_SM2_1 0x00020200
|
#define SGD_SM2_1 0x00020200 // SM2 Signature Scheme
|
||||||
#define SGD_SM2_2 0x00020400
|
#define SGD_SM2_2 0x00020400 // SM2 Key Exchange Protocol
|
||||||
#define SGD_SM2_3 0x00020800
|
#define SGD_SM2_3 0x00020800 // SM2 Encryption Scheme
|
||||||
|
|
||||||
/* hash */
|
/* hash */
|
||||||
#define SGD_SM3 0x00000001
|
#define SGD_SM3 0x00000001
|
||||||
|
|||||||
Reference in New Issue
Block a user