sm2.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <limits.h>
  2. #include <openssl/ec.h>
  3. #include <openssl/bn.h>
  4. #include <openssl/rand.h>
  5. #include <openssl/err.h>
  6. #include <openssl/ecdsa.h>
  7. #include <openssl/ecdh.h>
  8. #include <openssl/ssl.h>
  9. #define NID_X9_62_prime_field 406
  10. #define ABORT do { \
  11. fflush(stdout); \
  12. fprintf(stderr, "%s:%d: ABORT\n", __FILE__, __LINE__); \
  13. ERR_print_errors_fp(stderr); \
  14. exit(1); \
  15. } while (0)
  16. int sm2_init();
  17. EC_KEY* sm2_generate_key();
  18. int sm2_exchange_key(EC_KEY*B,EC_KEY*RB,EC_POINT*PA,EC_POINT*RA,unsigned char*ZA,unsigned char *ZB,unsigned char *outkey,size_t keylen);
  19. int sm2_end();
  20. int ecKey2str(EC_KEY*k,unsigned char*pubkey);
  21. int pubkey2ecPoint(char*pubkey,EC_POINT**k);
  22. int sm2_decrypt(const char*decdata,const char*dB,char*M);
  23. /*
  24. 旧国密密文格式解密
  25. */
  26. int sm2_decrypt_new(const char*decdata,const char*dB,char*M);
  27. /*
  28. 新国密密文格式解密
  29. */
  30. int sm2_encrypt(char*random_k,char*ecpoint_PBx,char*ecpoint_PBy,const char *M,unsigned char mdatalen,char*encdata);
  31. /*
  32. 旧国密密文格式加密
  33. */
  34. int sm2_encrypt_new(char*random_k,char*ecpoint_PBx,char*ecpoint_PBy,const char *M,unsigned char mdatalen,char*encdata);
  35. /*
  36. 新国密密文格式加密
  37. */