minor
[charm.git] / src / conv-ccs / ccs-auth.h
1 /**************************************************
2  CCS Authentication utility routines 
3
4 Orion Sky Lawlor, olawlor@acm.org, 7/23/2001
5 */
6 #ifndef __CCS_AUTH_H
7 #define __CCS_AUTH_H
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 /*A secret key, used to authenticate a client or server.
14 This could be human-readable text, a random one-time pad,
15 some shared common knowledge, or any combination.
16 */
17 typedef struct {
18         unsigned char data[16];
19 } CcsSec_secretKey;
20 int CCS_AUTH_makeSecretKey(const char *str,CcsSec_secretKey *key);
21
22
23 /*The output of a SHA-1 hash algorithm*/
24 typedef struct {
25         unsigned char data[20];
26 } SHA1_hash_t;
27
28 void CCS_AUTH_hash(const CcsSec_secretKey *key,unsigned int salt,
29                    const CcsMessageHeader *hdrOrNull,SHA1_hash_t *out);
30 int  CCS_AUTH_differ(const CcsSec_secretKey *key,unsigned int salt,
31                    const CcsMessageHeader *hdrOrNull,SHA1_hash_t *given);
32
33
34 /*Strong (but rather slow) random stream*/
35 typedef struct {
36   unsigned char state[64]; /*Random number stream state*/
37 } CCS_RAND_state;
38
39 void CCS_RAND_new(CCS_RAND_state *s);
40 unsigned int CCS_RAND_next(CCS_RAND_state *s);
41
42 #ifdef __cplusplus
43 };
44 #endif
45
46 #endif /* def(thisHeader) */
47