137da2899SCharles.Forsyth typedef struct SigAlg SigAlg; 237da2899SCharles.Forsyth typedef struct SigAlgVec SigAlgVec; 337da2899SCharles.Forsyth typedef struct SK SK; 437da2899SCharles.Forsyth typedef struct PK PK; 537da2899SCharles.Forsyth typedef struct Certificate Certificate; 637da2899SCharles.Forsyth typedef struct XDigestState XDigestState; 737da2899SCharles.Forsyth typedef struct XAESstate XAESstate; 837da2899SCharles.Forsyth typedef struct XDESstate XDESstate; 937da2899SCharles.Forsyth typedef struct XIDEAstate XIDEAstate; 1037da2899SCharles.Forsyth typedef struct XRC4state XRC4state; 1137da2899SCharles.Forsyth 1237da2899SCharles.Forsyth enum 1337da2899SCharles.Forsyth { 1437da2899SCharles.Forsyth Maxbuf= 4096, 1537da2899SCharles.Forsyth MaxBigBytes = 1024 1637da2899SCharles.Forsyth }; 1737da2899SCharles.Forsyth 1837da2899SCharles.Forsyth /* generic certificate */ 1937da2899SCharles.Forsyth struct Certificate 2037da2899SCharles.Forsyth { 2137da2899SCharles.Forsyth Keyring_Certificate x; 2237da2899SCharles.Forsyth void *signa; /* actual signature */ 2337da2899SCharles.Forsyth }; 2437da2899SCharles.Forsyth 2537da2899SCharles.Forsyth /* generic public key */ 2637da2899SCharles.Forsyth struct PK 2737da2899SCharles.Forsyth { 2837da2899SCharles.Forsyth Keyring_PK x; 2937da2899SCharles.Forsyth void *key; /* key and system parameters */ 3037da2899SCharles.Forsyth }; 3137da2899SCharles.Forsyth 3237da2899SCharles.Forsyth /* digest state */ 3337da2899SCharles.Forsyth struct XDigestState 3437da2899SCharles.Forsyth { 3537da2899SCharles.Forsyth Keyring_DigestState x; 3637da2899SCharles.Forsyth DigestState state; 3737da2899SCharles.Forsyth }; 3837da2899SCharles.Forsyth 3937da2899SCharles.Forsyth /* AES state */ 4037da2899SCharles.Forsyth struct XAESstate 4137da2899SCharles.Forsyth { 4237da2899SCharles.Forsyth Keyring_AESstate x; 4337da2899SCharles.Forsyth AESstate state; 4437da2899SCharles.Forsyth }; 4537da2899SCharles.Forsyth 4637da2899SCharles.Forsyth /* DES state */ 4737da2899SCharles.Forsyth struct XDESstate 4837da2899SCharles.Forsyth { 4937da2899SCharles.Forsyth Keyring_DESstate x; 5037da2899SCharles.Forsyth DESstate state; 5137da2899SCharles.Forsyth }; 5237da2899SCharles.Forsyth 5337da2899SCharles.Forsyth /* IDEA state */ 5437da2899SCharles.Forsyth struct XIDEAstate 5537da2899SCharles.Forsyth { 5637da2899SCharles.Forsyth Keyring_IDEAstate x; 5737da2899SCharles.Forsyth IDEAstate state; 5837da2899SCharles.Forsyth }; 5937da2899SCharles.Forsyth 6037da2899SCharles.Forsyth /* RC4 state */ 6137da2899SCharles.Forsyth struct XRC4state 6237da2899SCharles.Forsyth { 6337da2899SCharles.Forsyth Keyring_RC4state x; 6437da2899SCharles.Forsyth RC4state state; 6537da2899SCharles.Forsyth }; 6637da2899SCharles.Forsyth 6737da2899SCharles.Forsyth /* generic secret key */ 6837da2899SCharles.Forsyth struct SK 6937da2899SCharles.Forsyth { 7037da2899SCharles.Forsyth Keyring_SK x; 7137da2899SCharles.Forsyth void *key; /* key and system parameters */ 7237da2899SCharles.Forsyth }; 7337da2899SCharles.Forsyth 7437da2899SCharles.Forsyth struct SigAlgVec { 7537da2899SCharles.Forsyth char *name; 7637da2899SCharles.Forsyth 7737da2899SCharles.Forsyth char** skattr; 7837da2899SCharles.Forsyth char** pkattr; 7937da2899SCharles.Forsyth char** sigattr; 8037da2899SCharles.Forsyth 8137da2899SCharles.Forsyth void* (*str2sk)(char*, char**); 8237da2899SCharles.Forsyth void* (*str2pk)(char*, char**); 8337da2899SCharles.Forsyth void* (*str2sig)(char*, char**); 8437da2899SCharles.Forsyth 8537da2899SCharles.Forsyth int (*sk2str)(void*, char*, int); 8637da2899SCharles.Forsyth int (*pk2str)(void*, char*, int); 8737da2899SCharles.Forsyth int (*sig2str)(void*, char*, int); 8837da2899SCharles.Forsyth 8937da2899SCharles.Forsyth void* (*sk2pk)(void*); 9037da2899SCharles.Forsyth 9137da2899SCharles.Forsyth void* (*gensk)(int); 9237da2899SCharles.Forsyth void* (*genskfrompk)(void*); 9331a18a69SCharles.Forsyth void* (*sign)(mpint*, void*); 9431a18a69SCharles.Forsyth int (*verify)(mpint*, void*, void*); 9537da2899SCharles.Forsyth 9637da2899SCharles.Forsyth void (*skfree)(void*); 9737da2899SCharles.Forsyth void (*pkfree)(void*); 9837da2899SCharles.Forsyth void (*sigfree)(void*); 9937da2899SCharles.Forsyth }; 10037da2899SCharles.Forsyth 10137da2899SCharles.Forsyth struct SigAlg 10237da2899SCharles.Forsyth { 10337da2899SCharles.Forsyth Keyring_SigAlg x; 10437da2899SCharles.Forsyth SigAlgVec *vec; 10537da2899SCharles.Forsyth }; 10637da2899SCharles.Forsyth 10731a18a69SCharles.Forsyth int bigtobase64(mpint* b, char *buf, int blen); 10831a18a69SCharles.Forsyth mpint* base64tobig(char *str, char **strp); 10937da2899SCharles.Forsyth SigAlgVec* findsigalg(char*); 110*7de2b42dSforsyth //Keyring_IPint* newIPint(mpint*); 111*7de2b42dSforsyth void* newIPint(mpint*); 112