diff options
Diffstat (limited to 'libkeyring/keys.h')
| -rw-r--r-- | libkeyring/keys.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/libkeyring/keys.h b/libkeyring/keys.h new file mode 100644 index 00000000..fc57fd5c --- /dev/null +++ b/libkeyring/keys.h @@ -0,0 +1,118 @@ +typedef struct IPint IPint; +typedef struct SigAlg SigAlg; +typedef struct SigAlgVec SigAlgVec; +typedef struct SK SK; +typedef struct PK PK; +typedef struct Certificate Certificate; +typedef struct XDigestState XDigestState; +typedef struct XAESstate XAESstate; +typedef struct XDESstate XDESstate; +typedef struct XIDEAstate XIDEAstate; +typedef struct XRC4state XRC4state; + +enum +{ + Maxbuf= 4096, + MaxBigBytes = 1024 +}; + +/* infininite precision integer */ +struct IPint +{ + Keyring_IPint x; + BigInt b; +}; + +/* generic certificate */ +struct Certificate +{ + Keyring_Certificate x; + void *signa; /* actual signature */ +}; + +/* generic public key */ +struct PK +{ + Keyring_PK x; + void *key; /* key and system parameters */ +}; + +/* digest state */ +struct XDigestState +{ + Keyring_DigestState x; + DigestState state; +}; + +/* AES state */ +struct XAESstate +{ + Keyring_AESstate x; + AESstate state; +}; + +/* DES state */ +struct XDESstate +{ + Keyring_DESstate x; + DESstate state; +}; + +/* IDEA state */ +struct XIDEAstate +{ + Keyring_IDEAstate x; + IDEAstate state; +}; + +/* RC4 state */ +struct XRC4state +{ + Keyring_RC4state x; + RC4state state; +}; + +/* generic secret key */ +struct SK +{ + Keyring_SK x; + void *key; /* key and system parameters */ +}; + +struct SigAlgVec { + char *name; + + char** skattr; + char** pkattr; + char** sigattr; + + void* (*str2sk)(char*, char**); + void* (*str2pk)(char*, char**); + void* (*str2sig)(char*, char**); + + int (*sk2str)(void*, char*, int); + int (*pk2str)(void*, char*, int); + int (*sig2str)(void*, char*, int); + + void* (*sk2pk)(void*); + + void* (*gensk)(int); + void* (*genskfrompk)(void*); + void* (*sign)(BigInt, void*); + int (*verify)(BigInt, void*, void*); + + void (*skfree)(void*); + void (*pkfree)(void*); + void (*sigfree)(void*); +}; + +struct SigAlg +{ + Keyring_SigAlg x; + SigAlgVec *vec; +}; + +int bigtobase64(BigInt b, char *buf, int blen); +BigInt base64tobig(char *str, char **strp); +SigAlgVec* findsigalg(char*); +Keyring_IPint* newIPint(BigInt); |
