diff options
author | Ben Pfaff <blp@nicira.com> | 2009-11-04 15:12:54 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2009-11-04 15:24:40 -0800 |
commit | e7f1bf58e44a3449ba6dcf637a51191006bd2324 (patch) | |
tree | f78774467343fa23961fece9082336ae27e4c47d /lib/sha1.h | |
parent | 0611aea043269d0e3dad7090b590b196aa378382 (diff) |
sha1: Add functions, macros for converting digests to and from strings.
These will be used in the upcoming OVSDB.
The SHA1_FMT and SHA1_ARGS macros are arguably absurd, but they are
also convenient.
Diffstat (limited to 'lib/sha1.h')
-rw-r--r-- | lib/sha1.h | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -29,11 +29,12 @@ #ifndef SHA1_H #define SHA1_H +#include <stdbool.h> #include <stddef.h> #include <stdint.h> -/* Size of the SHA1 digest. */ -#define SHA1_DIGEST_SIZE 20 +#define SHA1_DIGEST_SIZE 20 /* Size of the SHA1 digest. */ +#define SHA1_HEX_DIGEST_LEN 40 /* Length of SHA1 digest as hex in ASCII. */ /* SHA1 context structure. */ struct sha1_ctx { @@ -48,4 +49,18 @@ void sha1_update(struct sha1_ctx *, const void *, size_t); void sha1_final(struct sha1_ctx *, uint8_t digest[SHA1_DIGEST_SIZE]); void sha1_bytes(const void *, size_t, uint8_t digest[SHA1_DIGEST_SIZE]); +#define SHA1_FMT \ + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" \ + "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x" +#define SHA1_ARGS(DIGEST) \ + ((DIGEST)[0]), ((DIGEST)[1]), ((DIGEST)[2]), ((DIGEST)[3]), \ + ((DIGEST)[4]), ((DIGEST)[5]), ((DIGEST)[6]), ((DIGEST)[7]), \ + ((DIGEST)[8]), ((DIGEST)[9]), ((DIGEST)[10]), ((DIGEST)[11]), \ + ((DIGEST)[12]), ((DIGEST)[13]), ((DIGEST)[14]), ((DIGEST)[15]), \ + ((DIGEST)[16]), ((DIGEST)[17]), ((DIGEST)[18]), ((DIGEST)[19]) + +void sha1_to_hex(const uint8_t digest[SHA1_DIGEST_SIZE], + char hex[SHA1_HEX_DIGEST_LEN + 1]); +bool sha1_from_hex(uint8_t digest[SHA1_DIGEST_SIZE], const char *hex); + #endif /* sha1.h */ |