50 lines
1.9 KiB
Markdown
50 lines
1.9 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
This is romulus-js, a TypeScript implementation of the Romulus-M cryptography specification. It provides authenticated encryption with associated data (AEAD) functionality.
|
|
|
|
## Development Commands
|
|
|
|
- `npm run build` - Compile TypeScript to JavaScript (outputs to `dist/`)
|
|
- `npm run test` - Run Jest test suite
|
|
- `npm run lint` - Run ts-standard linter
|
|
- `npm install` - Install dependencies (automatically runs `tsc` via postinstall)
|
|
|
|
## Architecture
|
|
|
|
The codebase implements the Romulus-M AEAD cipher with the following structure:
|
|
|
|
### Core Files
|
|
|
|
- `src/romulus-m.ts` - Main cryptographic implementation containing `cryptoAeadEncrypt` and `cryptoAeadDecrypt` functions
|
|
- `src/skinny-128-384-plus.ts` - SKINNY-128-384+ block cipher implementation used by Romulus-M
|
|
- `src/constants.ts` - Cryptographic constants
|
|
|
|
### Public API
|
|
|
|
- `src/encrypt.ts` - High-level encrypt function that auto-generates nonces using UUID v4
|
|
- `src/decrypt.ts` - High-level decrypt function that handles nonce extraction
|
|
- `src/index.ts` - Main entry point exporting encrypt/decrypt functions
|
|
|
|
### Key Implementation Details
|
|
|
|
- Uses 128-bit keys, nonces, and block sizes
|
|
- Implements LFSR-based counter with 56-bit precision
|
|
- Uses domain separation for different encryption phases
|
|
- Nonces are automatically prepended to ciphertext in the high-level API
|
|
- Low-level API (`romulus-m.ts`) works with `number[]` arrays
|
|
- High-level API works with `Uint8Array` for better developer experience
|
|
|
|
### Testing
|
|
|
|
Tests are located in `tests/` directory using Jest framework. Test files include:
|
|
|
|
- `romulus-m.test.ts` - Tests for core cryptographic functions
|
|
- `encrypt.test.ts` and `decrypt.test.ts` - Tests for high-level API
|
|
- `romulus-m-reference.test.ts` - Reference implementation tests
|
|
|
|
The TypeScript configuration automatically compiles on install and uses ts-jest for testing.
|