diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/mincrypt/dsa_sig.h | 43 | ||||
-rw-r--r-- | include/mincrypt/hash-internal.h | 63 | ||||
-rw-r--r-- | include/mincrypt/p256.h | 162 | ||||
-rw-r--r-- | include/mincrypt/p256_ecdsa.h | 53 | ||||
-rw-r--r-- | include/mincrypt/rsa.h | 58 | ||||
-rw-r--r-- | include/mincrypt/sha.h | 52 | ||||
-rw-r--r-- | include/mincrypt/sha256.h | 52 |
7 files changed, 0 insertions, 483 deletions
diff --git a/include/mincrypt/dsa_sig.h b/include/mincrypt/dsa_sig.h deleted file mode 100644 index b0d91cd3d..000000000 --- a/include/mincrypt/dsa_sig.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_DSA_SIG_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_DSA_SIG_H_ - -#include "mincrypt/p256.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Returns 0 if input sig is not a valid ASN.1 sequence -int dsa_sig_unpack(unsigned char* sig, int sig_len, p256_int* r_int, p256_int* s_int); - -#ifdef __cplusplus -} -#endif - -#endif /* SYSTEM_CORE_INCLUDE_MINCRYPT_DSA_SIG_H_ */ diff --git a/include/mincrypt/hash-internal.h b/include/mincrypt/hash-internal.h deleted file mode 100644 index c813b449f..000000000 --- a/include/mincrypt/hash-internal.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2007 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_HASH_INTERNAL_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_HASH_INTERNAL_H_ - -#include <stdint.h> - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -struct HASH_CTX; // forward decl - -typedef struct HASH_VTAB { - void (* const init)(struct HASH_CTX*); - void (* const update)(struct HASH_CTX*, const void*, int); - const uint8_t* (* const final)(struct HASH_CTX*); - const uint8_t* (* const hash)(const void*, int, uint8_t*); - int size; -} HASH_VTAB; - -typedef struct HASH_CTX { - const HASH_VTAB * f; - uint64_t count; - uint8_t buf[64]; - uint32_t state[8]; // upto SHA2 -} HASH_CTX; - -#define HASH_init(ctx) (ctx)->f->init(ctx) -#define HASH_update(ctx, data, len) (ctx)->f->update(ctx, data, len) -#define HASH_final(ctx) (ctx)->f->final(ctx) -#define HASH_hash(data, len, digest) (ctx)->f->hash(data, len, digest) -#define HASH_size(ctx) (ctx)->f->size - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_HASH_INTERNAL_H_ diff --git a/include/mincrypt/p256.h b/include/mincrypt/p256.h deleted file mode 100644 index 465a1b922..000000000 --- a/include/mincrypt/p256.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_LITE_P256_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_LITE_P256_H_ - -// Collection of routines manipulating 256 bit unsigned integers. -// Just enough to implement ecdsa-p256 and related algorithms. - -#include <stdint.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define P256_BITSPERDIGIT 32 -#define P256_NDIGITS 8 -#define P256_NBYTES 32 - -typedef int p256_err; -typedef uint32_t p256_digit; -typedef int32_t p256_sdigit; -typedef uint64_t p256_ddigit; -typedef int64_t p256_sddigit; - -// Defining p256_int as struct to leverage struct assigment. -typedef struct { - p256_digit a[P256_NDIGITS]; -} p256_int; - -extern const p256_int SECP256r1_n; // Curve order -extern const p256_int SECP256r1_p; // Curve prime -extern const p256_int SECP256r1_b; // Curve param - -// Initialize a p256_int to zero. -void p256_init(p256_int* a); - -// Clear a p256_int to zero. -void p256_clear(p256_int* a); - -// Return bit. Index 0 is least significant. -int p256_get_bit(const p256_int* a, int index); - -// b := a % MOD -void p256_mod( - const p256_int* MOD, - const p256_int* a, - p256_int* b); - -// c := a * (top_b | b) % MOD -void p256_modmul( - const p256_int* MOD, - const p256_int* a, - const p256_digit top_b, - const p256_int* b, - p256_int* c); - -// b := 1 / a % MOD -// MOD best be SECP256r1_n -void p256_modinv( - const p256_int* MOD, - const p256_int* a, - p256_int* b); - -// b := 1 / a % MOD -// MOD best be SECP256r1_n -// Faster than p256_modinv() -void p256_modinv_vartime( - const p256_int* MOD, - const p256_int* a, - p256_int* b); - -// b := a << (n % P256_BITSPERDIGIT) -// Returns the bits shifted out of most significant digit. -p256_digit p256_shl(const p256_int* a, int n, p256_int* b); - -// b := a >> (n % P256_BITSPERDIGIT) -void p256_shr(const p256_int* a, int n, p256_int* b); - -int p256_is_zero(const p256_int* a); -int p256_is_odd(const p256_int* a); -int p256_is_even(const p256_int* a); - -// Returns -1, 0 or 1. -int p256_cmp(const p256_int* a, const p256_int *b); - -// c: = a - b -// Returns -1 on borrow. -int p256_sub(const p256_int* a, const p256_int* b, p256_int* c); - -// c := a + b -// Returns 1 on carry. -int p256_add(const p256_int* a, const p256_int* b, p256_int* c); - -// c := a + (single digit)b -// Returns carry 1 on carry. -int p256_add_d(const p256_int* a, p256_digit b, p256_int* c); - -// ec routines. - -// {out_x,out_y} := nG -void p256_base_point_mul(const p256_int *n, - p256_int *out_x, - p256_int *out_y); - -// {out_x,out_y} := n{in_x,in_y} -void p256_point_mul(const p256_int *n, - const p256_int *in_x, - const p256_int *in_y, - p256_int *out_x, - p256_int *out_y); - -// {out_x,out_y} := n1G + n2{in_x,in_y} -void p256_points_mul_vartime( - const p256_int *n1, const p256_int *n2, - const p256_int *in_x, const p256_int *in_y, - p256_int *out_x, p256_int *out_y); - -// Return whether point {x,y} is on curve. -int p256_is_valid_point(const p256_int* x, const p256_int* y); - -// Outputs big-endian binary form. No leading zero skips. -void p256_to_bin(const p256_int* src, uint8_t dst[P256_NBYTES]); - -// Reads from big-endian binary form, -// thus pre-pad with leading zeros if short. -void p256_from_bin(const uint8_t src[P256_NBYTES], p256_int* dst); - -#define P256_DIGITS(x) ((x)->a) -#define P256_DIGIT(x,y) ((x)->a[y]) - -#define P256_ZERO {{0}} -#define P256_ONE {{1}} - -#ifdef __cplusplus -} -#endif - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_LITE_P256_H_ diff --git a/include/mincrypt/p256_ecdsa.h b/include/mincrypt/p256_ecdsa.h deleted file mode 100644 index da339fa38..000000000 --- a/include/mincrypt/p256_ecdsa.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2013 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_P256_ECDSA_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_P256_ECDSA_H_ - -// Using current directory as relative include path here since -// this code typically gets lifted into a variety of build systems -// and directory structures. -#include "p256.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Returns 0 if {r,s} is not a signature on message for -// public key {key_x,key_y}. -// -// Note: message is a p256_int. -// Convert from a binary string using p256_from_bin(). -int p256_ecdsa_verify(const p256_int* key_x, - const p256_int* key_y, - const p256_int* message, - const p256_int* r, const p256_int* s); - -#ifdef __cplusplus -} -#endif - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_P256_ECDSA_H_ diff --git a/include/mincrypt/rsa.h b/include/mincrypt/rsa.h deleted file mode 100644 index 3d0556b16..000000000 --- a/include/mincrypt/rsa.h +++ /dev/null @@ -1,58 +0,0 @@ -/* rsa.h -** -** Copyright 2008, The Android Open Source Project -** -** Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in the -** documentation and/or other materials provided with the distribution. -** * Neither the name of Google Inc. nor the names of its contributors may -** be used to endorse or promote products derived from this software -** without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR -** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -** EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -** OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -** WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -** OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -** ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_RSA_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_RSA_H_ - -#include <inttypes.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#define RSANUMBYTES 256 /* 2048 bit key length */ -#define RSANUMWORDS (RSANUMBYTES / sizeof(uint32_t)) - -typedef struct RSAPublicKey { - int len; /* Length of n[] in number of uint32_t */ - uint32_t n0inv; /* -1 / n[0] mod 2^32 */ - uint32_t n[RSANUMWORDS]; /* modulus as little endian array */ - uint32_t rr[RSANUMWORDS]; /* R^2 as little endian array */ - int exponent; /* 3 or 65537 */ -} RSAPublicKey; - -int RSA_verify(const RSAPublicKey *key, - const uint8_t* signature, - const int len, - const uint8_t* hash, - const int hash_len); - -#ifdef __cplusplus -} -#endif - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_RSA_H_ diff --git a/include/mincrypt/sha.h b/include/mincrypt/sha.h deleted file mode 100644 index ef60aab82..000000000 --- a/include/mincrypt/sha.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2005 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_SHA1_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_SHA1_H_ - -#include <stdint.h> -#include "hash-internal.h" - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -typedef HASH_CTX SHA_CTX; - -void SHA_init(SHA_CTX* ctx); -void SHA_update(SHA_CTX* ctx, const void* data, int len); -const uint8_t* SHA_final(SHA_CTX* ctx); - -// Convenience method. Returns digest address. -// NOTE: *digest needs to hold SHA_DIGEST_SIZE bytes. -const uint8_t* SHA_hash(const void* data, int len, uint8_t* digest); - -#define SHA_DIGEST_SIZE 20 - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_SHA1_H_ diff --git a/include/mincrypt/sha256.h b/include/mincrypt/sha256.h deleted file mode 100644 index 3a87c3178..000000000 --- a/include/mincrypt/sha256.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2011 The Android Open Source Project - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of Google Inc. nor the names of its contributors may - * be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SYSTEM_CORE_INCLUDE_MINCRYPT_SHA256_H_ -#define SYSTEM_CORE_INCLUDE_MINCRYPT_SHA256_H_ - -#include <stdint.h> -#include "hash-internal.h" - -#ifdef __cplusplus -extern "C" { -#endif // __cplusplus - -typedef HASH_CTX SHA256_CTX; - -void SHA256_init(SHA256_CTX* ctx); -void SHA256_update(SHA256_CTX* ctx, const void* data, int len); -const uint8_t* SHA256_final(SHA256_CTX* ctx); - -// Convenience method. Returns digest address. -const uint8_t* SHA256_hash(const void* data, int len, uint8_t* digest); - -#define SHA256_DIGEST_SIZE 32 - -#ifdef __cplusplus -} -#endif // __cplusplus - -#endif // SYSTEM_CORE_INCLUDE_MINCRYPT_SHA256_H_ |