summaryrefslogtreecommitdiff
path: root/libkeyring/keys.h
diff options
context:
space:
mode:
Diffstat (limited to 'libkeyring/keys.h')
-rw-r--r--libkeyring/keys.h118
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);