diff --git a/test-scripts/new_flow.sh b/test-scripts/new_flow.sh index dc610fd..7028209 100755 --- a/test-scripts/new_flow.sh +++ b/test-scripts/new_flow.sh @@ -26,44 +26,49 @@ trap 'rm -rf "$TMPDIR"' EXIT initialize_account() { # Generate or load mnemonic if [ ! -f "mnemonic.txt" ]; then - # Generate 24-word mnemonic using Python - python3 -c " -from eth_account.hdaccount import generate_mnemonic -print(generate_mnemonic(language='english')) -" > mnemonic.txt + # Generate entropy and convert to hex + openssl rand -hex 32 > mnemonic.txt fi - # Read and process mnemonic - MNEMONIC=$(cat mnemonic.txt) + # Read entropy + ENTROPY=$(cat mnemonic.txt) - # Derive address and keys using Python - IDENTITY=$(python3 -c " -from eth_account import Account -from eth_keys import keys -import json - -Account.enable_unaudited_hdwallet_features() -mnemonic = '$MNEMONIC'.strip() -account = Account.from_mnemonic(mnemonic) -address = account.address -private_key = account.key.hex()[2:] -pk = keys.PrivateKey(account.key) -public_key = pk.public_key.to_hex()[2:] - -identity = { - 'did': f'did:ethr:{address}', - 'keys': [{ - 'id': f'did:ethr:{address}#keys-1', - 'type': 'Secp256k1VerificationKey2018', - 'controller': f'did:ethr:{address}', - 'ethereumAddress': address, - 'publicKeyHex': public_key, - 'privateKeyHex': private_key + # Create temporary directory for key operations + TMPDIR=$(mktemp -d) + trap 'rm -rf "$TMPDIR"' EXIT + + # Generate secp256k1 private key + openssl ecparam -name secp256k1 -genkey -noout -out "$TMPDIR/private.pem" + + # Extract private key in hex format + PRIVATE_KEY=$(openssl ec -in "$TMPDIR/private.pem" -text -noout 2>/dev/null | + grep priv -A 3 | tail -n +2 | tr -d '\n[:space:]:' | cut -c3-) + + # Generate public key and address + PUBLIC_KEY=$(openssl ec -in "$TMPDIR/private.pem" -pubout -outform DER 2>/dev/null | + tail -c 65 | xxd -p -c 65) + + # Generate Ethereum address (last 20 bytes of keccak256 of public key) + ADDRESS=$(echo -n "$PUBLIC_KEY" | xxd -r -p | + openssl dgst -sha3-256 -binary | + tail -c 20 | xxd -p) + + # Create identity JSON + IDENTITY=$(cat <