📄 enginep11.h
字号:
#ifndef ENGINEP11_H
#define ENGINEP11_H
#include "cryptoki.h"
#include "swpkcs11t.h"
#include "pkcs11.h"
#include "pkcs11t.h"
#include "bca_def.h"
#include "bca_container.h"
#include "engine_pub.h"
#include <openssl/engine.h>
#ifdef WIN32
#define P11_SOFT_CERTFILE GetFilePath(p11_certpath,"\\cert_p11.dat")
#else
#define P11_SOFT_CERTFILE "/usr/BJCAROOT/Trust/cert_p11.dat"
#endif
typedef struct p11_cert
{
unsigned char IsExist;
unsigned char ContName[256];
unsigned char KeyUse;
int CertLen;
unsigned char Cert[MAX_CERT_LEN];
}P11_CERT,*P11_CERT_PTR;
int PKCS11_Initialize();
int PKCS11_Finalize();
int PKCS11_RsaEnc(CK_OBJECT_CLASS class_pri,
char *continname,unsigned long continnameLen,char cKeyUse,
unsigned char *from,unsigned long flen,
unsigned char *to,unsigned long *pOutLen,
unsigned long padding);
int PKCS11_RsaDec(CK_OBJECT_CLASS class_pri,char *continname,unsigned long continnameLen,char cKeyUse,
unsigned char *from,unsigned long flen,
unsigned char *to,unsigned long *pOutLen,
unsigned long padding);
int PKCS11_RsaVerify(CK_BYTE_PTR modulus,CK_ULONG modulusLen,
CK_BYTE_PTR pe,CK_ULONG peLen,
CK_BYTE_PTR pData,
CK_ULONG ulDataLen,
CK_BYTE_PTR pSignature,
CK_ULONG ulSignatureLen
);
int PKCS11_RsaSign(char *continname
,unsigned long continnameLen,
char cKeyUse,
CK_BYTE_PTR pData,
CK_ULONG ulDataLen,
CK_BYTE_PTR pSignature,
CK_ULONG_PTR pulSignatureLen
);
/****************************************************************************
* Constants used when creating the ENGINE *
***************************************************************************/
static const char *engine_p11_id = "pkcs11";
static const char *engine_p11_name = "pkcs11 engine support(by eboy)";
/****************************************************************************
* Functions to handle the engine *
***************************************************************************/
static int p11_destroy(ENGINE *e);
static int p11_init(ENGINE *e);
static int p11_finish(ENGINE *e);
/****************************************************************************
* Engine commands *
*****************************************************************************/
/*
static const ENGINE_CMD_DEFN p11_cmd_defns[] =
{
{0, NULL, NULL, 0}
};
*/
/****************************************************************************
* RSA functions *
*****************************************************************************/
/****************************************************************************
* Symetric cipher and digest function registrars *
*****************************************************************************/
static int p11_digest_sign(int type,
const unsigned char *m, unsigned int m_length,
unsigned char *sigret, unsigned int *siglen, const RSA *rsa);
static const EVP_MD p11_digest_sha1 =
{
NID_sha1,
NID_sha1WithRSAEncryption,
20,
0,
NULL,
NULL,
NULL,
NULL,
NULL,
EVP_PKEY_RSA_method,
64,
sizeof(MD5_CTX)
};
static int p11_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
const int **nids, int nid);
static int p11_digests(ENGINE *e, const EVP_MD **digest,
const int **nids, int nid);
static int p11_cipher_nids[] ={ NID_des_cbc, NID_des_ede3_cbc, NID_desx_cbc, 0 };
static int p11_digest_nids[] ={ 0, 0, NID_sha1 };
void ERR_load_P11_strings();
//__declspec(dllexport)
int ENGINE_load_pkcs11(void);
int P11_Engine_SetRSA(RSA *rsa,char *continname,char cKeyUse);
void P11_Engine_SetDllName(char *name);
int P11_Engine_SetLoginPass(unsigned char *pass,unsigned long len);
int P11_Engine_ChangePass(unsigned char *oldPin,unsigned long oldPinLen,unsigned char *newPin,unsigned long newPinLen);
int PKCS11_ImportUserCert(
unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage,
unsigned char *certificate,
unsigned long certificateLen);
int PKCS11_ImportRSA(unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage,
RSA *rsa);
int PKCS11_ExportUserCert(
unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage,
unsigned char *certificate,
unsigned long *certificateLen);
int PKCS11_EnumUsrCertificates(BCA_USR_CERT_ENUMLIST *usrCerts);
int PKCS11_EnumUsrKeyPairs(BCA_USR_KEYPAIR_ENUMLIST *usrKeyPairs);
int PKCS11_GenRsaKeyPair(
unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage,
unsigned long modulusLen,
unsigned long exportFlag,
unsigned char *rsaKeyPairPin,
unsigned long rsaKeyPairPinLen);
int PKCS11_RsaPubKeyEnc(CK_BYTE_PTR modulus,CK_ULONG modulusLen,
CK_BYTE_PTR pe,CK_ULONG peLen,
CK_BYTE_PTR pInData,
CK_ULONG ulInDataLen,
CK_BYTE_PTR pOutData,
CK_ULONG *pulOutDataLen
);
int PKCS11_RsaPubKeyDec(CK_BYTE_PTR modulus,CK_ULONG modulusLen,
CK_BYTE_PTR pe,CK_ULONG peLen,
CK_BYTE_PTR pInData,
CK_ULONG ulInDataLen,
CK_BYTE_PTR pOutData,
CK_ULONG *pulOutDataLen
);
int PKCS11_RsaSign_0(RSA *rsa,
CK_BYTE_PTR pData,
CK_ULONG ulDataLen,
CK_BYTE_PTR pSignature,
CK_ULONG_PTR pulSignatureLen
);
int PKCS11_FindRSA(unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage);
int PKCS11_FindCert(unsigned char *containerName,
unsigned long containerNameLen,
unsigned long keyUsage);
int P11SoftCert_Init();
int P11SoftCert_Read(char *name,unsigned char cKeyuse,unsigned char *derCert,unsigned long *derCertLen);
int P11SoftCert_Insert(char *name,unsigned char cKeyuse,unsigned char *derCert,unsigned long derCertLen);
int P11SoftCert_Enum(BCA_USR_CERT_ENUMLIST *usrCerts);
char *P11_WstRSALableConv(char *pubLable,unsigned long pubLableLen);
char * P11_DatechRSALableConv(char *pubLable,unsigned long pubLableLen);
int PKCS11_GenRandom(unsigned long randLen,unsigned char *rand);
int PKCS11_ReadData(char *lable,unsigned char *data,unsigned long *dataLen);
int PKCS11_WriteData(char *lable,unsigned char *data,unsigned long dataLen);
int PKCS11_DelData(char *lable);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -