?? ca.h
字號:
#include <time.h>
#define DER 1 //FORMAT_ASN1
#define PEM 3 /*定義格式*/
#define NET 4
#define P12 5
typedef char * (* PNewCrlMem)(UINT len);
struct stuSUBJECT//個體信息
{
UCHAR C[4];//國家
UCHAR ST[4];//省份
UCHAR L[12];//城市
UCHAR O[48];//組織
UCHAR OU[24];//組織部門
UCHAR CN[12];//個人信息
UCHAR MAIL[24];//電子郵件
UCHAR PMAIL[24];//安全電子郵件
UCHAR T[12];//頭銜
UCHAR D[12];//描述
UCHAR G[12];//曾用名
UCHAR I[12];//描述
UCHAR NAME[12];//描述
UCHAR S[12];//描述
UCHAR QUAL[12];//描述
UCHAR STN[12];//沒有結構的名稱
UCHAR PW[12];//挑戰密碼
UCHAR ADD[12];//無結構地址
stuSUBJECT()
{
memset(this,0,sizeof(stuSUBJECT));
}
};
struct stuKEYUSAGE//密鑰用途
{
BOOL DS;//Digital Signature
BOOL NR;//Non-Repudiation
BOOL KE;//Key Encipherment
BOOL DE;//Data Encipherment
BOOL KA;//keyAgreement
BOOL KC;//keyCertSign
BOOL CS;//cRLSign
BOOL EO;//Encipher Only
BOOL DO;//Decipher Only
stuKEYUSAGE()
{
memset(this,0,sizeof(stuKEYUSAGE));
}
};
struct stuEKEYUSAGE//增強型密鑰用途
{
BOOL SA;//服務器驗證
BOOL CA;//客戶端驗證
BOOL CS;//代碼簽名
BOOL EP;//安全電子郵件
BOOL TS;//時間戳
BOOL msCC;//代碼完整
BOOL msCTLS;//可簽名信任列表
BOOL msSGC;//聯機事務處理
BOOL msEFS;//加密磁盤上的數據
BOOL msSC;//智能卡登錄
BOOL IP;//Internet
stuEKEYUSAGE()
{
memset(this,0,sizeof(stuEKEYUSAGE));
}
};
struct stuCERT//三者之和
{
stuSUBJECT SUBJECT;
stuKEYUSAGE KUSAGE;
stuEKEYUSAGE EKUSAGE;
stuCERT()
{
memset(this,0,sizeof(stuCERT));
}
};
struct stuREVOKE//證書作廢結構鏈表
{
int Index;//證書序號
time_t time;//吊銷時間
stuREVOKE * Link;
stuREVOKE()
{
memset(this,0,sizeof(stuREVOKE));
}
stuREVOKE(int index,time_t t)
{
Index=index;
time=t;;
Link=NULL;
}
};
/*添加鏈表節點*/
void AddRevoke(stuREVOKE *& Head,int index,time_t time);
/*證書格式轉換函數*/
BOOL CertFormatConver(char * buf/*內存區域,存儲文件內容或文件名稱*/,int len/*內存長度==0則buf為文件名*/,
char * pwd/*p12文件密碼*/,char * pem/*輸出文件*/,int outformat,char * out/*操作結果*/);
/*根證書生成函數,根據rootInfo信息,生成根證書公、私鑰文件*/
BOOL MakeRoot(stuSUBJECT * rootInfo,/*請求信息IN*/int bits/*位數IN*/, int serial/*序列號IN*/,
int days/*有效期IN*/,char * certFile/*證書請求文件OUT*/,char * priFile/*私鑰文件OUT*/,
char * out/*操作結果OUT*/,int type=PEM/*類型pem-der*/);
/*證書請求生成函數,根據reqInfo信息,生成用戶證書私鑰文件、證書請求文件*/
BOOL MakeReq(stuSUBJECT * reqInfo,/*請求信息IN*/int bits/*位數IN*/, char * reqFile/*證書請求文件OUT*/,
char * priFile/*私鑰文件OUT*/,char * out/*操作結果OUT*/,int type=PEM/*類型pem-der*/);
/*證書生成函數,通過證書請求,生成用戶證書公鑰文件*/
BOOL MakeCert(char *certfile/*根證書公鑰*/,int certlen,/*為0則certfile為磁盤文件,否則為內存區域*/
char *keyfile/*根證書私鑰*/,int keylen,int serial/*序列號*/,char *enddate/*作廢日期*/,
int days/*有效期*/, char *reqfile/*請求文件*/,stuKEYUSAGE * KUSAGE/*密鑰用法*/,
stuEKEYUSAGE * EKUSAGE/*增強密鑰用法*/,char *outfile/*結果文件*/,
char * outMsg/*操作結果*/,int type/*結果類型DER,PEM*/);//通過證書請求,得到證書
//直接生成公私鑰
BOOL DirectCert(char *certfile/*根證書公鑰*/,int certlen,/*為0則certfile為磁盤文件,否則為內存區域*/
char *keyfile/*根證書私鑰*/,int keylen,int serial/*序列號*/,char *enddate/*作廢日期*/,
int days/*有效期*/,stuCERT * sCERT/*用戶信息與密鑰用法*/,int bits,char * cert/*輸出證書公鑰*/,int * certl/*長度*/,
char * key/*輸出證書私鑰*/,int * keyl/*長度*/,char * outMsg/*,int type結果類型DER,PEM*/);//直接生成公私鑰
/*黑名單生成函數*/
BOOL MakeCrl(char *certfile/*根證書公鑰*/,int certlen,/*為0則certfile為磁盤文件,否則為內存區域*/
char *keyfile/*根證書私鑰*/,int keylen,
stuREVOKE * Head/*作廢鏈表*/,PNewCrlMem NewCrlMem/*回調函數*/,char *& outCrl,int * crll,char * outfile/*crl文件*/,
char * outMsg/*操作結果*/);
/*分解p12包*/
BOOL ParseDB(char * strP12/*包文件*/,char * strPwd/*解包密碼*/,char * strCert/*公鑰存放*/,
char * strkey/*私鑰存放*/,int outformat/*輸出格式*/,char * out/*返回結果*/);
/*組合p12包*/
BOOL CreateDB(char * strP12/*包文件IN*/,char * strPwd/*密碼IN*/,char * strCert/*公鑰存放IN*/,
char * strkey/*私鑰存放IN*/,char * out/*返回結果OUT*/);
BOOL ChangePB(char * strP12/*IN包文件*/,char * strPwd/*IN原密碼*/,char * strPwd2/*IN新密碼*/,
char * strOutP12/*OUT包文件*/,char * out/*返回結果OUT*/);
//檢驗公鑰、私鑰是否配對
BOOL CertPairCheck(char * cert,char * key,char * out);//檢驗公鑰、私鑰是否配對
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -