const crypto = require('crypto');
console.log('Different ways to create DiffieHellman instances:\n');
// Method 1: Generate a new DH group with specified prime length
const dh1 = crypto.createDiffieHellman(2048);
console.log('1. Generated prime length:', dh1.getPrime().length * 8, 'bits');
// Method 2: Create a DH group using a predefined prime
// Using a small prime for demonstration (in production, use much larger primes)
const prime = Buffer.from('f5e108', 'hex');
const dh2 = crypto.createDiffieHellman(prime);
console.log('2. Created with predefined prime length:', dh2.getPrime().length * 4, 'bits');
// Method 3: Create a DH group using a predefined prime and generator
const generator = Buffer.from('02', 'hex'); // Often 2, 5, or other small values
const dh3 = crypto.createDiffieHellman(prime, generator);
console.log('3. Created with prime and generator');
// Method 4: Using predefined groups with getDiffieHellman()
const predefinedGroupName = 'modp14'; // RFC 3526 2048-bit MODP Group
const dh4 = crypto.getDiffieHellman(predefinedGroupName);
console.log(`4. Created with predefined group '${predefinedGroupName}':`, dh4.getPrime().length * 8, 'bits');
// Show all supported group names
console.log('\nSupported predefined groups:', crypto.getDiffieHellmanGroups());