From f5144b94c8221f81c6d7520990a7602c3ce2a5a4 Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Sun, 1 Dec 2013 22:33:40 +0400 Subject: [PATCH 1/1] authobj - new interface works --- authobj.c | 10 +++++----- test_auth.c | 8 ++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/authobj.c b/authobj.c index adc101b..224cbb5 100644 --- a/authobj.c +++ b/authobj.c @@ -158,19 +158,19 @@ parse_authobj(const unsigned char *key, const int keysize, serial_init(&srl, ao.buffer, bufsize); if (serial_get(&srl, (void**)&ao.data, &ao.datasize)) { - ao.err = "parse authobj: too long secret"; + ao.err = "mismatch: impossible secret"; } else if (serial_get(&srl, (void**)&ao.payload, &ao.paylsize)) { - ao.err = "parse authobj: too long payload"; + ao.err = "mismatch: impossible payload"; } else if ((rc = hash(ao.buffer, serial_size(&srl), myhash, &myhsize))) { ao.err = crypto_errstr(rc); } else if (serial_get(&srl, (void**)&theirhash, &theirhsize)) { - ao.err = "parse authobj: too long hash"; + ao.err = "mismatch: impossible hash"; } else if (theirhsize != HASHSIZE) { - ao.err = "parse authobj: hash is of wrong size"; + ao.err = "mismatch: hash is of wrong size"; } else if ((myhsize != theirhsize) || memcmp(myhash, theirhash, myhsize)) { - ao.err = "parse authobj: hash mismatch"; + ao.err = "mismatch: different hash"; } } return ao; diff --git a/test_auth.c b/test_auth.c index 421c8b9..177fb5f 100644 --- a/test_auth.c +++ b/test_auth.c @@ -9,7 +9,7 @@ int main(int argc, char *argv[]) const char *id = "testuser"; const char *pass = "testpassword"; const char *nonce = "1"; - const unsigned char secret[] = {0xb4, 0x62, 0xf2, 0x60, 0x87, + unsigned char secret[] = {0xb4, 0x62, 0xf2, 0x60, 0x87, 0x78, 0x16, 0x87, 0xde, 0xce, 0x80, 0x09, 0x24, 0x0b, 0x93, 0xfc, 0xa0, 0xfc, 0x56, 0x56}; @@ -19,7 +19,11 @@ int main(int argc, char *argv[]) struct _auth_obj ao; struct _auth_obj nao; - printf("using crypto %s\n", crypto_init(0)); + if (argc == 2 && strlen(argv[1]) == 40 && + strspn(argv[1], "0123456789abcdefABCDEF") == 40) { + for (i = 0; i < sizeof(secret); i++) + sscanf(&argv[1][i*2], "%2hhx", &secret[i]); + } ao = new_authobj(id, pass, nonce, secret, sizeof(secret), payload, strlen((char *)payload)); printf("new_authobj err=%s\n", ao.err?ao.err:""); -- 2.39.2