diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2009-11-01 16:31:59 -0300 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2009-11-01 16:31:59 -0300 |
commit | f22fea661d0755029173a21fa72f7c131ee884e7 (patch) | |
tree | 48a0f4ae5bf1225709a4571a134a5900964fd354 /dpid/misc_new.c | |
parent | e909b151a01c444a1630dc524249190d333620b2 (diff) |
Introduce basic shared-secret-based authentication
Diffstat (limited to 'dpid/misc_new.c')
-rw-r--r-- | dpid/misc_new.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/dpid/misc_new.c b/dpid/misc_new.c index 35bc77ae..7f963aed 100644 --- a/dpid/misc_new.c +++ b/dpid/misc_new.c @@ -191,3 +191,26 @@ char *a_Misc_mkfname(char *template) MSG_ERR("a_Misc_mkfname: another round for %s \n", template); } } + +/* + * Return a new, random hexadecimal string of 'nchar' characters. + */ +char *a_Misc_mksecret(int nchar) +{ + int i; + uint_t random; + char *secret = dNew(char, nchar + 1); + + srand((uint_t)(time(0) ^ getpid())); + random = (unsigned) rand(); + for (i = 0; i < nchar; ++i) { + int hexdigit = (random >> (i * 5)) & 0x0f; + + secret[i] = hexdigit > 9 ? hexdigit + 'a' - 10 : hexdigit + '0'; + } + secret[i] = 0; + MSG("a_Misc_mksecret: %s\n", secret); + + return secret; +} + |