Move sha1.[ch] to crypt.[ch] and make crypto API independent of sha1.
[paraslash.git] / crypt.c
diff --git a/crypt.c b/crypt.c
index 9980447..f3bfed3 100644 (file)
--- a/crypt.c
+++ b/crypt.c
@@ -14,6 +14,7 @@
 #include <openssl/err.h>
 #include <openssl/rc4.h>
 #include <openssl/pem.h>
+#include <openssl/sha.h>
 
 #include "para.h"
 #include "error.h"
@@ -364,3 +365,22 @@ int sc_recv_buffer(struct stream_cipher_context *scc, char *buf, size_t size)
                *buf = '\0';
        return n;
 }
+
+/**
+ * Compute the hash of the given input data.
+ *
+ * \param data Pointer to the data to compute the hash value from.
+ * \param len The length of \a data in bytes.
+ * \param hash Result pointer.
+ *
+ * \a hash must point to an area at least \p HASH_SIZE bytes large.
+ *
+ * \sa sha(3), openssl(1).
+ * */
+void hash_function(const char *data, unsigned long len, unsigned char *hash)
+{
+       SHA_CTX c;
+       SHA1_Init(&c);
+       SHA1_Update(&c, data, len);
+       SHA1_Final(hash, &c);
+}