0.1.3 • Published 2 months ago

@synet/core v0.1.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

@synet/core

Core cryptographic and identity primitives for Synet agents.

Installation

npm install @synet/core**

Features

  • Key management (RSA and Ed25519)
  • Digital signatures
  • Cryptographic hashing
  • Identity derivation
  • Zero dependencies

Usage

Key Management

Generate cryptographic key pairs, derive public keys from private keys, and manage key identities:

import { generateKeyPair, derivePublicKey, getShortId } from '@synet/core';

// Generate a new Ed25519 key pair
const keyPair = generateKeyPair('ed25519');
console.log('Private key:', keyPair.privateKey);
console.log('Public key:', keyPair.publicKey);

// Derive a public key from an existing private key
const derivedPublic = derivePublicKey(keyPair.privateKey);
console.log('Derived public key matches:', derivedPublic === keyPair.publicKey);

// Generate a short ID for a key (useful for display)
const shortId = getShortId(keyPair.publicKey);
console.log('Key short ID:', shortId); // e.g., "3f7b2a1c8e9d4f6a"

Digital Signatures

Create and verify cryptographic signatures for message authentication:

import { signMessage, verifySignature } from '@synet/core';

// Sign a message
const message = 'This message needs to be authenticated';
const signature = signMessage(keyPair.privateKey, message);

// Verify the signature
const isValid = verifySignature(keyPair.publicKey, message, signature);
console.log('Signature valid:', isValid); // true

// Tampering detection
const isForged = verifySignature(keyPair.publicKey, 'Forged message', signature);
console.log('Forged signature valid:', isForged); // false

Cryptographic Hashing

Create secure hash digests in various formats:

import { sha256Hex, sha256Base64, hashToAgentId } from '@synet/core';

// Create SHA-256 hash in hexadecimal format
const hexHash = sha256Hex('important data');
console.log('Hex hash:', hexHash);

// Create SHA-256 hash in base64 format
const base64Hash = sha256Base64('important data');
console.log('Base64 hash:', base64Hash);

// Generate an agent ID from a public key
const agentId = hashToAgentId(keyPair.publicKey);
console.log('Agent ID:', agentId); // e.g., "8f4d7c2b1a3e6d5f"

API Reference

Key Manager Functions

generateKeyPair(type: 'rsa' | 'ed25519'): KeyPair

Generates a new cryptographic key pair of the specified type.

derivePublicKey(privateKey: string): string | null

Extracts the public key from a private key.

getShortId(publicKey: string): string

Computes a 16-character hexadecimal identifier from a public key.

getFingerprint(publicKey: string): string

Computes a full 64-character hexadecimal fingerprint from a public key.

generateWireGuardKeyPair(): { privateKey: string, publicKey: string }

Generates Wireguard native Curve25519 (X25519) keypair exported in Base64

Signer Functions

signMessage(privateKey: string, message: string): string

Signs a message with a private key, returning a base64-encoded signature.

verifySignature(publicKey: string, message: string, signature: string): boolean

Verifies a signature against a message using a public key.

Hash Functions

sha256Hex(data: string | Buffer): string

Creates a SHA-256 hash of the input data in hexadecimal format.

sha256Base64(data: string | Buffer): string

Creates a SHA-256 hash of the input data in base64 format.

hashToAgentId(publicKey: string): string

Derives a 16-character agent identifier from a public key.

Types

type KeyType = 'rsa' | 'ed25519';

interface KeyPair {
  privateKey: string;
  publicKey: string;
  type: KeyType;
}

Development

# Install dependencies
npm install

# Run tests
npm test

# Run tests with coverage
npm run coverage

# Lint code
npm run lint

# Build the package
npm run build

License

MIT

0.1.3

2 months ago

0.1.2

2 months ago

0.1.1

2 months ago

0.1.0

2 months ago