diff options
author | vnugent <public@vaughnnugent.com> | 2024-05-26 17:39:40 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2024-05-26 17:39:40 -0400 |
commit | a8a6efb2319f739e5faae550561dc27d9dd1e88d (patch) | |
tree | fb24ccfb03e5eb57861182f89794992cfe02bb6e /include | |
parent | 72e1b7be4031e2fd4d258fcf434ad049c0029201 (diff) |
chore: Update libs, reorder files, internalize private headers
Diffstat (limited to 'include')
-rw-r--r-- | include/hkdf.h | 61 | ||||
-rw-r--r-- | include/nc-crypto.h | 59 | ||||
-rw-r--r-- | include/nc-util.h | 95 |
3 files changed, 0 insertions, 215 deletions
diff --git a/include/hkdf.h b/include/hkdf.h deleted file mode 100644 index 460e203..0000000 --- a/include/hkdf.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2024 Vaughn Nugent -* -* Package: noscrypt -* File: hkdf.h -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public License -* as published by the Free Software Foundation; either version 2.1 -* of the License, or (at your option) any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with noscrypt. If not, see http://www.gnu.org/licenses/. -*/ - -#pragma once - -#ifndef _NC_HKDF_H -#define _NC_HKDF_H - -#include "nc-util.h" -#include "nc-crypto.h" - -/* -* IMPORTANT: -* The HKDF_IN_BUF_SIZE defintion sets the internal stack buffer size to use -* during fallback HKDF_Expand operations. -* -* 128 bytes should be more than enough for most use cases, without going -* overboard. Could be dialed in better for specific use cases later. -*/ - -#ifndef HKDF_IN_BUF_SIZE - #define HKDF_IN_BUF_SIZE 0x80 -#endif - - -/* typedefs for hdkf callback functions */ - -typedef cstatus_t (*hmac_hash_func)(void* ctx, const cspan_t* data); -typedef cstatus_t (*hmac_finish_fn)(void* ctx, sha256_t hmacOut32); - -struct nc_hkdf_fn_cb_struct -{ - hmac_hash_func update; - hmac_finish_fn finish; -}; - -cstatus_t hkdfExpandProcess( - const struct nc_hkdf_fn_cb_struct* handler, - void* ctx, - const cspan_t* info, - span_t* okm -); - -#endif /* !_NC_HKDF_H */ diff --git a/include/nc-crypto.h b/include/nc-crypto.h deleted file mode 100644 index f04ebe0..0000000 --- a/include/nc-crypto.h +++ /dev/null @@ -1,59 +0,0 @@ - -/* -* Copyright (c) 2024 Vaughn Nugent -* -* Package: noscrypt -* File: nc-crypto.h -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public License -* as published by the Free Software Foundation; either version 2.1 -* of the License, or (at your option) any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with noscrypt. If not, see http://www.gnu.org/licenses/. -*/ - -#pragma once - -#ifndef _NC_CRYPTO_H -#define _NC_CRYPTO_H - -#include <stdint.h> - -#define CHACHA_NONCE_SIZE 0x0cu /* Size of 12 is set by the cipher spec */ -#define CHACHA_KEY_SIZE 0x20u /* Size of 32 is set by the cipher spec */ -#define SHA256_DIGEST_SIZE 0x20u /* Size of 32 is set by the cipher spec */ - -typedef uint8_t cstatus_t; -#define CSTATUS_OK ((cstatus_t)0x01u) -#define CSTATUS_FAIL ((cstatus_t)0x00u) - -typedef uint8_t sha256_t[SHA256_DIGEST_SIZE]; - -uint32_t ncCryptoFixedTimeComp(const uint8_t* a, const uint8_t* b, uint32_t size); - -void ncCryptoSecureZero(void* ptr, uint32_t size); - -cstatus_t ncCryptoDigestSha256(const cspan_t* data, sha256_t digestOut32); - -cstatus_t ncCryptoHmacSha256(const cspan_t* key, const cspan_t* data, sha256_t hmacOut32); - -cstatus_t ncCryptoSha256HkdfExpand(const cspan_t* prk, const cspan_t* info, span_t* okm); - -cstatus_t ncCryptoSha256HkdfExtract(const cspan_t* salt, const cspan_t* ikm, sha256_t prk); - -cstatus_t ncCryptoChacha20( - const uint8_t key[CHACHA_KEY_SIZE], - const uint8_t nonce[CHACHA_NONCE_SIZE], - const uint8_t* input, - uint8_t* output, - uint32_t dataSize -); - -#endif /* !_NC_CRYPTO_H */ diff --git a/include/nc-util.h b/include/nc-util.h deleted file mode 100644 index 8fb74ff..0000000 --- a/include/nc-util.h +++ /dev/null @@ -1,95 +0,0 @@ - -/* -* Copyright (c) 2024 Vaughn Nugent -* -* Package: noscrypt -* File: nc-util.h -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public License -* as published by the Free Software Foundation; either version 2.1 -* of the License, or (at your option) any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License -* along with noscrypt. If not, see http://www.gnu.org/licenses/. -*/ - -#pragma once - -#ifndef _NC_UTIL_H -#define _NC_UTIL_H - -#include "platform.h" - -/* NULL */ -#ifndef NULL - #define NULL ((void*)0) -#endif /* !NULL */ - -#ifdef DEBUG - /* Must include assert.h for assertions */ - #include <assert.h> - #define DEBUG_ASSERT(x) assert(x); - #define DEBUG_ASSERT2(x, message) assert(x && message); - - /* - * Compiler enabled static assertion keywords are - * only available in C11 and later. Later versions - * have macros built-in from assert.h so we can use - * the static_assert macro directly. - * - * Static assertions are only used for testing such as - * sanity checks and this library targets the c89 standard - * so static_assret very likely will not be available. - */ - #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L - #define STATIC_ASSERT(x, m) static_assert(x, m) - #elif !defined(STATIC_ASSERT) - #define STATIC_ASSERT(x, m) - #pragma message("Static assertions are not supported by this language version") - #endif - -#else - #define DEBUG_ASSERT(x) - #define DEBUG_ASSERT2(x, message) - #define STATIC_ASSERT(x, m) -#endif - -#include <stdint.h> - -#if SIZE_MAX < UINT32_MAX - #define _overflow_check(x) if(x > SIZE_MAX) return CSTATUS_FAIL; -#else - #define _overflow_check(x) -#endif - -typedef struct memory_span_struct -{ - uint8_t* data; - uint32_t size; -} span_t; - -typedef struct read_only_memory_span_struct -{ - const uint8_t* data; - uint32_t size; -} cspan_t; - -static _nc_fn_inline void ncSpanInitC(cspan_t* span, const uint8_t* data, uint32_t size) -{ - span->data = data; - span->size = size; -} - -static _nc_fn_inline void ncSpanInit(span_t* span, uint8_t* data, uint32_t size) -{ - span->data = data; - span->size = size; -} - -#endif /* !_NC_UTIL_H */
\ No newline at end of file |