All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- C# .NET 8.0 library wrapper for noscrypt
- Full NIP44 vector testing for encryption
- Initialize stack buffers to zero before use in noscrypt.c
NCVerifyDigest()
now correctly returnsE_OPERATION_FAILED
when signature verification fails
- Security policy for the module
- Valgrind memory checking during unit testing
- Added fully automated integration testing for Windows and Linux deployments
- Automated tests for all crypto backends (MbedTLS, OpenSSL, BCrypt)
- #9 - Convert all OpenSSL apis to use the EVP api and unify it's usage. Also fixes some detected memory leaks that were undocumented.
- Updated OpenSSL to v3.4.0
- Updated MbedTLS to v3.6.2
- Updated libsecp256k1 to v0.6.0
NCUtilGetEncryptionPaddedSize()
no longer validates input sizes against nip44 messages sizes (correct behavior)- Now requires 32bit minimum CPU word size when using OpenSSL as a crypto backend
- Breaking: Noscrypt no longer builds and links against mbedtls using CMake. You may manually install and link against mbedtls, or use the Taskfile to do it for you.
NC_FETCH_MBEDTLS
CMake directive was removed, see previous point.
NCUtilContextAlloc()
andNCUtilContextFree()
utilities for dynamic library context allocation
- Public and Secret key structure definition names have been correctly namespaced (no breaking changes)
- #8 - an issue where nip44 encryption fails on reusable cipher instances
- Utilities sidecar library for easy note encryption (noscryptutil.h)
- Utilities for padding calculations
- Prints the name of the configured crypto backend during build
- Many internal hardening improvments (span pass-by-value, span validation functions)
NCEncryptionGetIvSize()
function to determine the size of the IV for a chosen encryption spec (nip04 or nip44)
- OpenSSL EVP incorrect cipher initialization vector
- OpenSSL HKDF incorrect key derivation when switching to EVP api
- Some missing calling convention macros for public api functions
- Updated libsecp256k1 to v0.5.1
- Updated OpenSSL to v3.3.1
- Converted
NCToSecKey()
andNCToPubKey()
to a explicitly named macros - Converted error code helper functions from header-only functions to standard api
- Added helper functions to alter the
NCEncryptionArgs
api. Altering fields directly is now deprecated. - Public API visibility for non-Windows platforms now defaults to
extern
- Breaking: Changed the
nonce32
andhmacKeyOut32
properties of theNCEncryptionArgs
struct tononceData
andkeyData
respectively. ABI is still compatible, but API has changed. Again mutating this structure manually is now deprecated. - Unified some API naming conventions for better consistency
NC_ENCRYPTION_NONCE_SIZE
macro for better forward compatabilityNC_NIP04_AES_IV_SIZE
macro for better forward compatability
NCGetSharedContext()
to get a process-wide shared context.- C++ extern wrappers noscrypt.h public api
- Integrated test exe to cmake ctest
- Potential memory leak for openssl evp contexts during error conditions.
- mbedtls dependency compilation when using fetch for release builds.
- fPIC errors for libsecp256k1.
- Update libsecp256k1 to v0.5.0.
- Breaking:
NCValidateSecretKey()
retruns NC_SUCCESS instead of 1. - Builds using OpenSSL as a crypto backend no longer require the monocypher dependency.
- NCContext structure defintion.
- Internal headers from the public include directory.