keys.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. typedef struct SigAlg SigAlg;
  2. typedef struct SigAlgVec SigAlgVec;
  3. typedef struct SK SK;
  4. typedef struct PK PK;
  5. typedef struct Certificate Certificate;
  6. typedef struct XDigestState XDigestState;
  7. typedef struct XAESstate XAESstate;
  8. typedef struct XDESstate XDESstate;
  9. typedef struct XIDEAstate XIDEAstate;
  10. typedef struct XRC4state XRC4state;
  11. enum
  12. {
  13. Maxbuf= 4096,
  14. MaxBigBytes = 1024
  15. };
  16. /* generic certificate */
  17. struct Certificate
  18. {
  19. Keyring_Certificate x;
  20. void *signa; /* actual signature */
  21. };
  22. /* generic public key */
  23. struct PK
  24. {
  25. Keyring_PK x;
  26. void *key; /* key and system parameters */
  27. };
  28. /* digest state */
  29. struct XDigestState
  30. {
  31. Keyring_DigestState x;
  32. DigestState state;
  33. };
  34. /* AES state */
  35. struct XAESstate
  36. {
  37. Keyring_AESstate x;
  38. AESstate state;
  39. };
  40. /* DES state */
  41. struct XDESstate
  42. {
  43. Keyring_DESstate x;
  44. DESstate state;
  45. };
  46. /* IDEA state */
  47. struct XIDEAstate
  48. {
  49. Keyring_IDEAstate x;
  50. IDEAstate state;
  51. };
  52. /* RC4 state */
  53. struct XRC4state
  54. {
  55. Keyring_RC4state x;
  56. RC4state state;
  57. };
  58. /* generic secret key */
  59. struct SK
  60. {
  61. Keyring_SK x;
  62. void *key; /* key and system parameters */
  63. };
  64. struct SigAlgVec {
  65. char *name;
  66. char** skattr;
  67. char** pkattr;
  68. char** sigattr;
  69. void* (*str2sk)(char*, char**);
  70. void* (*str2pk)(char*, char**);
  71. void* (*str2sig)(char*, char**);
  72. int (*sk2str)(void*, char*, int);
  73. int (*pk2str)(void*, char*, int);
  74. int (*sig2str)(void*, char*, int);
  75. void* (*sk2pk)(void*);
  76. void* (*gensk)(int);
  77. void* (*genskfrompk)(void*);
  78. void* (*sign)(mpint*, void*);
  79. int (*verify)(mpint*, void*, void*);
  80. void (*skfree)(void*);
  81. void (*pkfree)(void*);
  82. void (*sigfree)(void*);
  83. };
  84. struct SigAlg
  85. {
  86. Keyring_SigAlg x;
  87. SigAlgVec *vec;
  88. };
  89. int bigtobase64(mpint* b, char *buf, int blen);
  90. mpint* base64tobig(char *str, char **strp);
  91. SigAlgVec* findsigalg(char*);
  92. //Keyring_IPint* newIPint(mpint*);
  93. void* newIPint(mpint*);