2 Commits

Author SHA1 Message Date
895e7765f9 Update README: Remove custom peer ID documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:22:58 +01:00
49d3984640 Remove custom peer ID feature for security
Always generate cryptographically random 128-bit peer IDs to prevent peer ID hijacking vulnerability. This ensures peer IDs are secure through collision resistance rather than relying on expiration-based protection.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:19:07 +01:00
4 changed files with 11 additions and 26 deletions

View File

@@ -437,26 +437,16 @@ const newPeers = await client.offers.findByTopic('movie-xyz', {
### Authentication ### Authentication
#### `client.register(customPeerId?)` #### `client.register()`
Register a new peer and receive credentials. Register a new peer and receive credentials.
Generates a cryptographically random 128-bit peer ID.
```typescript ```typescript
// Auto-generate peer ID
const creds = await client.register(); const creds = await client.register();
// { peerId: 'f17c195f067255e357232e34cf0735d9', secret: '...' } // { peerId: 'f17c195f067255e357232e34cf0735d9', secret: '...' }
// Or use a custom peer ID (1-128 characters)
const customCreds = await client.register('my-custom-peer-id');
// { peerId: 'my-custom-peer-id', secret: '...' }
``` ```
**Parameters:**
- `customPeerId` (optional): Custom peer ID (1-128 characters). If not provided, a random ID will be generated.
**Notes:**
- Returns 409 Conflict if the custom peer ID is already in use
- Custom peer IDs must be non-empty and between 1-128 characters
### Topics ### Topics
#### `client.offers.getTopics(options?)` #### `client.offers.getTopics(options?)`

View File

@@ -1,6 +1,6 @@
{ {
"name": "@xtr-dev/rondevu-client", "name": "@xtr-dev/rondevu-client",
"version": "0.7.11", "version": "0.7.12",
"description": "TypeScript client for Rondevu topic-based peer discovery and signaling server", "description": "TypeScript client for Rondevu topic-based peer discovery and signaling server",
"type": "module", "type": "module",
"main": "dist/index.js", "main": "dist/index.js",

View File

@@ -29,21 +29,16 @@ export class RondevuAuth {
/** /**
* Register a new peer and receive credentials * Register a new peer and receive credentials
* @param customPeerId - Optional custom peer ID (1-128 characters). If not provided, a random ID will be generated. * Generates a cryptographically random peer ID (128-bit)
* @throws Error if registration fails (e.g., peer ID already in use) * @throws Error if registration fails
*/ */
async register(customPeerId?: string): Promise<Credentials> { async register(): Promise<Credentials> {
const body: { peerId?: string } = {};
if (customPeerId !== undefined) {
body.peerId = customPeerId;
}
const response = await this.fetchFn(`${this.baseUrl}/register`, { const response = await this.fetchFn(`${this.baseUrl}/register`, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
body: JSON.stringify(body), body: JSON.stringify({}),
}); });
if (!response.ok) { if (!response.ok) {

View File

@@ -100,10 +100,10 @@ export class Rondevu {
/** /**
* Register and initialize authenticated client * Register and initialize authenticated client
* @param customPeerId - Optional custom peer ID (1-128 characters). If not provided, a random ID will be generated. * Generates a cryptographically random peer ID (128-bit)
*/ */
async register(customPeerId?: string): Promise<Credentials> { async register(): Promise<Credentials> {
this.credentials = await this.auth.register(customPeerId); this.credentials = await this.auth.register();
// Create offers API instance // Create offers API instance
this._offers = new RondevuOffers( this._offers = new RondevuOffers(