sdf.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright 2014-2022 The GmSSL Project. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the License); you may
  5. * not use this file except in compliance with the License.
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. */
  9. #ifndef GMSSL_SDF_H
  10. #define GMSSL_SDF_H
  11. #include <string.h>
  12. #include <stdint.h>
  13. #include <gmssl/sm2.h>
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. /*
  18. SDF Public API
  19. sdf_load_library
  20. sdf_unload_library
  21. SDF_DEVICE
  22. sdf_open_device
  23. sdf_close_device
  24. sdf_print_device_info
  25. sdf_rand_bytes
  26. sdf_load_sign_key
  27. SDF_KEY
  28. sdf_sign
  29. sdf_release_key
  30. */
  31. typedef struct {
  32. void *handle;
  33. char issuer[41];
  34. char name[17];
  35. char serial[17];
  36. } SDF_DEVICE;
  37. typedef struct {
  38. SM2_KEY public_key;
  39. void *session;
  40. int index;
  41. } SDF_KEY;
  42. int sdf_load_library(const char *so_path, const char *vendor);
  43. int sdf_open_device(SDF_DEVICE *dev);
  44. int sdf_print_device_info(FILE *fp, int fmt, int ind, const char *lable, SDF_DEVICE *dev);
  45. int sdf_rand_bytes(SDF_DEVICE *dev, uint8_t *buf, size_t len);
  46. int sdf_load_sign_key(SDF_DEVICE *dev, SDF_KEY *key, int index, const char *pass);
  47. int sdf_sign(SDF_KEY *key, const uint8_t dgst[32], uint8_t *sig, size_t *siglen);
  48. int sdf_release_key(SDF_KEY *key);
  49. int sdf_close_device(SDF_DEVICE *dev);
  50. void sdf_unload_library(void);
  51. #ifdef __cplusplus
  52. }
  53. #endif
  54. #endif