aboutsummaryrefslogtreecommitdiff
path: root/lib/sha1.h
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2009-06-15 16:03:28 -0700
committerBen Pfaff <blp@nicira.com>2009-06-15 16:03:28 -0700
commit5eccf359391f7fe2cdb0edbaaf5680895c115218 (patch)
treeafd782f982a7f2c18cd03873cd5e959aec4c2420 /lib/sha1.h
parenta14bc59fb8f27db193d74662dc9c5cb8237177ef (diff)
Replace SHA-1 library with one that is clearly licensed.
The SHA-1 library that we used until now was taken from RFC 3174. That library has no clearly free license statement, only a license on the text of the RFC. This commit replaces this library with a modified version of the code from the Apache Portable Runtime library from apr.apache.org, which is licensed under the Apache 2.0 license, the same as the rest of Open vSwitch.
Diffstat (limited to 'lib/sha1.h')
-rw-r--r--lib/sha1.h101
1 files changed, 39 insertions, 62 deletions
diff --git a/lib/sha1.h b/lib/sha1.h
index 382cf320..75d3533d 100644
--- a/lib/sha1.h
+++ b/lib/sha1.h
@@ -1,74 +1,51 @@
/*
- * sha1.h
- *
- * Description:
- * This is the header file for code which implements the Secure
- * Hashing Algorithm 1 as defined in FIPS PUB 180-1 published
- * April 17, 1995.
- *
- * Many of the variable names in this code, especially the
- * single character names, were used because those were the names
- * used in the publication.
- *
- * Please read the file sha1.c for more information.
- *
+ * This file is from the Apache Portable Runtime Library.
+ * The full upstream copyright and license statement is included below.
+ * Modifications copyright (c) 2009 Nicira Networks.
*/
-#ifndef _SHA1_H_
-#define _SHA1_H_
-#include <stdint.h>
-/*
- * If you do not have the ISO standard stdint.h header file, then you
- * must typdef the following:
- * name meaning
- * uint32_t unsigned 32 bit integer
- * uint8_t unsigned 8 bit integer (i.e., unsigned char)
- * int_least16_t integer of >= 16 bits
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
*
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
-
-#ifndef _SHA_enum_
-#define _SHA_enum_
-enum
-{
- shaSuccess = 0,
- shaNull, /* Null pointer parameter */
- shaInputTooLong, /* input data too long */
- shaStateError /* called Input after Result */
-};
-#endif
-#define SHA1HashSize 20
-
-/*
- * This structure will hold context information for the SHA-1
- * hashing operation
+/* NIST Secure Hash Algorithm
+ * heavily modified by Uwe Hollerbach uh@alumni.caltech edu
+ * from Peter C. Gutmann's implementation as found in
+ * Applied Cryptography by Bruce Schneier
+ * This code is hereby placed in the public domain
*/
-typedef struct SHA1Context
-{
- uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest */
- uint32_t Length_Low; /* Message length in bits */
- uint32_t Length_High; /* Message length in bits */
+#ifndef SHA1_H
+#define SHA1_H
- /* Index into message block array */
- int_least16_t Message_Block_Index;
- uint8_t Message_Block[64]; /* 512-bit message blocks */
+#include <stddef.h>
+#include <stdint.h>
- int Computed; /* Is the digest computed? */
- int Corrupted; /* Is the message digest corrupted? */
-} SHA1Context;
+/* Size of the SHA1 digest. */
+#define SHA1_DIGEST_SIZE 20
-/*
- * Function Prototypes
- */
-int SHA1Reset( SHA1Context *);
-int SHA1Input( SHA1Context *,
- const uint8_t *,
- unsigned int);
-int SHA1Result( SHA1Context *,
- uint8_t Message_Digest[SHA1HashSize]);
+/* SHA1 context structure. */
+struct sha1_ctx {
+ uint32_t digest[5]; /* Message digest. */
+ uint32_t count_lo, count_hi; /* 64-bit bit counts. */
+ uint32_t data[16]; /* SHA data buffer */
+ int local; /* Unprocessed amount in data. */
+};
-void SHA1Bytes(const void *data, unsigned int n,
- uint8_t Message_Digest[SHA1HashSize]);
+void sha1_init(struct sha1_ctx *);
+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]);
-#endif
+#endif /* sha1.h */