| Index: srtp/crypto/include/sha1.h
|
| diff --git a/srtp/crypto/include/sha1.h b/srtp/crypto/include/sha1.h
|
| index e3af4d4b4b8836675a64022a2e39b4cf70efe540..9b6cfed7e374e5c653bc0eb3849dd8a7155c460f 100644
|
| --- a/srtp/crypto/include/sha1.h
|
| +++ b/srtp/crypto/include/sha1.h
|
| @@ -48,6 +48,44 @@
|
| #define SHA1_H
|
|
|
| #include "err.h"
|
| +#ifdef OPENSSL
|
| +#include <openssl/evp.h>
|
| +#include <stdint.h>
|
| +
|
| +typedef EVP_MD_CTX sha1_ctx_t;
|
| +
|
| +/*
|
| + * sha1_init(&ctx) initializes the SHA1 context ctx
|
| + *
|
| + * sha1_update(&ctx, msg, len) hashes the len octets starting at msg
|
| + * into the SHA1 context
|
| + *
|
| + * sha1_final(&ctx, output) performs the final processing of the SHA1
|
| + * context and writes the result to the 20 octets at output
|
| + *
|
| + * Return values are ignored on the EVP functions since all three
|
| + * of these functions return void.
|
| + *
|
| + */
|
| +
|
| +static inline void sha1_init (sha1_ctx_t *ctx)
|
| +{
|
| + EVP_MD_CTX_init(ctx);
|
| + EVP_DigestInit(ctx, EVP_sha1());
|
| +}
|
| +
|
| +static inline void sha1_update (sha1_ctx_t *ctx, const uint8_t *M, int octets_in_msg)
|
| +{
|
| + EVP_DigestUpdate(ctx, M, octets_in_msg);
|
| +}
|
| +
|
| +static inline void sha1_final (sha1_ctx_t *ctx, uint32_t *output)
|
| +{
|
| + unsigned int len = 0;
|
| +
|
| + EVP_DigestFinal(ctx, (unsigned char*)output, &len);
|
| +}
|
| +#else
|
| #include "datatypes.h"
|
|
|
| typedef struct {
|
| @@ -104,5 +142,7 @@ sha1_final(sha1_ctx_t *ctx, uint32_t output[5]);
|
|
|
| void
|
| sha1_core(const uint32_t M[16], uint32_t hash_value[5]);
|
| +
|
| +#endif /* else OPENSSL */
|
|
|
| #endif /* SHA1_H */
|
|
|