- Integrated `zupt_mac_verify_ct` in `zupt_decrypt_buffer()` to replace C XOR loop for HMAC-SHA256 - Integrated `zupt_ct_select_32` in `zupt_mlkem768_decaps()` to replace C `cmov()` for FO transformation - Added `include/zupt_jasmin.h` with extern declarations and ABI docs - Added `#ifdef ZUPT_USE_JASMIN` guards with clean C fallbacks in `zupt_crypto.c` and `zupt_mlkem.c` - Makefile now auto-detects `jasmin/*.s`, assembles and links with `-DZUPT_USE_JASMIN` Closes #3
22 lines
724 B
C
22 lines
724 B
C
/*
|
|
* Zupt — Backup-oriented compression with AES-256 encryption
|
|
* Copyright (c) 2026 Cristian Cezar Moisés
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
* X25519 Diffie-Hellman key agreement (RFC 7748).
|
|
* Montgomery ladder — constant-time by construction.
|
|
*/
|
|
#ifndef ZUPT_X25519_H
|
|
#define ZUPT_X25519_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/* X25519(scalar, point) → result. All inputs/outputs are 32 bytes.
|
|
* CT-REQUIRED: Montgomery ladder is inherently constant-time. */
|
|
void zupt_x25519(uint8_t out[32], const uint8_t scalar[32], const uint8_t point[32]);
|
|
|
|
/* X25519 with the standard basepoint (9).
|
|
* Used for keygen: public = X25519(private, basepoint). */
|
|
void zupt_x25519_base(uint8_t out[32], const uint8_t scalar[32]);
|
|
|
|
#endif
|