comparison mycrypt_kr.h @ 0:d7da3b1e1540 libtomcrypt

put back the 0.95 makefile which was inadvertently merged over
author Matt Johnston <matt@ucc.asn.au>
date Mon, 31 May 2004 18:21:40 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d7da3b1e1540
1 #ifdef KR
2
3 #if !defined(MRSA) || !defined(MDH) || !defined(MECC)
4 #error "Keyring code requires all three public key algorithms."
5 #endif
6
7 #define MAXLEN 256
8
9 enum {
10 NON_KEY=0,
11 RSA_KEY,
12 DH_KEY,
13 ECC_KEY
14 };
15
16 typedef union {
17 rsa_key rsa;
18 dh_key dh;
19 ecc_key ecc;
20 } _pk_key;
21
22 typedef struct Pk_key {
23 int key_type, /* PUBLIC, PRIVATE, PRIVATE_OPTIMIZED */
24 system; /* RSA, ECC or DH ? */
25
26 unsigned char
27 name[MAXLEN], /* various info's about this key */
28 email[MAXLEN],
29 description[MAXLEN];
30
31 unsigned long ID; /* CRC32 of the name/email/description together */
32
33 _pk_key key;
34
35 struct Pk_key *next; /* linked list chain */
36 } pk_key;
37
38 extern int kr_init(pk_key **pk);
39
40 extern unsigned long kr_crc(const unsigned char *name, const unsigned char *email, const unsigned char *description);
41
42 extern pk_key *kr_find(pk_key *pk, unsigned long ID);
43 extern pk_key *kr_find_name(pk_key *pk, const char *name);
44
45 extern int kr_add(pk_key *pk, int key_type, int sys, const unsigned char *name,
46 const unsigned char *email, const unsigned char *description, const _pk_key *key);
47
48 extern int kr_del(pk_key **_pk, unsigned long ID);
49 extern int kr_clear(pk_key **pk);
50 extern int kr_make_key(pk_key *pk, prng_state *prng, int wprng,
51 int sys, int keysize, const unsigned char *name,
52 const unsigned char *email, const unsigned char *description);
53
54 extern int kr_export(pk_key *pk, unsigned long ID, int key_type, unsigned char *out, unsigned long *outlen);
55 extern int kr_import(pk_key *pk, const unsigned char *in, unsigned long inlen);
56
57 extern int kr_load(pk_key **pk, FILE *in, symmetric_CTR *ctr);
58 extern int kr_save(pk_key *pk, FILE *out, symmetric_CTR *ctr);
59
60 extern int kr_encrypt_key(pk_key *pk, unsigned long ID,
61 const unsigned char *in, unsigned long inlen,
62 unsigned char *out, unsigned long *outlen,
63 prng_state *prng, int wprng, int hash);
64
65 extern int kr_decrypt_key(pk_key *pk, const unsigned char *in,
66 unsigned char *out, unsigned long *outlen);
67
68 extern int kr_sign_hash(pk_key *pk, unsigned long ID,
69 const unsigned char *in, unsigned long inlen,
70 unsigned char *out, unsigned long *outlen,
71 prng_state *prng, int wprng);
72
73 extern int kr_verify_hash(pk_key *pk, const unsigned char *in,
74 const unsigned char *hash, unsigned long hashlen,
75 int *stat);
76
77 extern int kr_fingerprint(pk_key *pk, unsigned long ID, int hash,
78 unsigned char *out, unsigned long *outlen);
79
80 #endif
81