xref: /inferno-os/libkeyring/keys.h (revision 7de2b42d50e3c05cc143e7b51284009b5e185581)
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