forked from xuos/xiuos
add sm3 sm4 sm9 crypto algorithm
This commit is contained in:
72
framework/security/crypto/include/sm9.h
Executable file
72
framework/security/crypto/include/sm9.h
Executable file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2020 AIIT Ubiquitous Team
|
||||
* XiUOS is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sm9.h
|
||||
* @brief API of SM9
|
||||
* @version 1.0
|
||||
* @author AIIT Ubiquitous Team
|
||||
* @date 2021-04-24
|
||||
*/
|
||||
|
||||
#ifndef SM9_H
|
||||
#define SM9_H
|
||||
|
||||
#include <sm9_util.h>
|
||||
#include <sm9_para.h>
|
||||
|
||||
typedef struct SM9Signature {
|
||||
big8w h;
|
||||
G1point S;
|
||||
} Signature;
|
||||
|
||||
typedef struct SM9_Key_Package {
|
||||
unsigned char* K;
|
||||
G1point C;
|
||||
} Key_Package;
|
||||
|
||||
void SM9Init();
|
||||
Signature SM9Sign(unsigned char *message, uint32_t msglen, G1point ds, G2point Ppub_s);
|
||||
bool SM9VerifySignature(
|
||||
unsigned char *ID, unsigned char ID_len, unsigned char hid,
|
||||
unsigned char *message, uint32_t msglen,
|
||||
Signature signature, G2point Ppub_s);
|
||||
|
||||
void SM9KeyExchangeProduceR(unsigned char* ID, unsigned char IDlen, big8w* r, G1point* R, G1point encrypt_publickey);
|
||||
bool SM9KeyExchangeProduceKey(G1point* RA, G1point* RB, big8w* r, uint32_t klen_bitsize,
|
||||
unsigned char* challengerID, unsigned char challengerIDlen,
|
||||
unsigned char* responserID, unsigned char responserIDlen,
|
||||
q12 *g1, q12* g2, q12* g3, char* resultkey, bool sponsor,
|
||||
G1point encrypt_publickey, G2point encrypt_secretkey);
|
||||
bool SM9KeyExchangeVerifyKey(q12 *g1, q12 *g2, q12 *g3, G1point *RA, G1point *RB,
|
||||
unsigned char *challengerID, unsigned char challengerIDlen,
|
||||
unsigned char *responserID, unsigned char responserIDlen,
|
||||
unsigned char *S1, unsigned char *SA);
|
||||
|
||||
void SM9KeyPackage(unsigned char* ID, unsigned char IDlen, unsigned char hid, G1point Ppub_e, uint32_t klen_bitsize, unsigned char* K, G1point* C);
|
||||
bool SM9KeyDepackage(G1point C, G2point de, unsigned char* ID, unsigned char IDlen, unsigned int klen_bitsize, unsigned char* K);
|
||||
|
||||
bool SM9EncryptWithKDF(unsigned char *message, unsigned int msglen_bitsize, unsigned int K2_len_bitsize,
|
||||
unsigned char *ID, unsigned char IDlen, unsigned char hid, G1point Ppub_e, unsigned char *C);
|
||||
bool SM9DecryptWithKDF(unsigned char *ID, unsigned char IDlen,
|
||||
unsigned char *message, unsigned int msglen_bitsize, unsigned int K2_len_bitsize,
|
||||
unsigned char *C, G2point encrypt_secretkey);
|
||||
|
||||
bool SM9EncryptWithSM4(unsigned char *message, unsigned int msglen_bytesize,
|
||||
unsigned int K1_len_bitsize, unsigned int K2_len_bitsize,
|
||||
unsigned char *ID, unsigned char IDlen, unsigned char hid, G1point Ppub_e,
|
||||
unsigned char *C);
|
||||
bool SM9DecryptWithSM4(unsigned char *ID, unsigned char IDlen,
|
||||
unsigned char *message, unsigned int msglen, unsigned int K1_len_bitsize, unsigned int K2_len_bitsize,
|
||||
unsigned char *C, unsigned int Cbyteslen, G2point encrypt_secretkey);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user