/ src / test / resources / proxy-key-example.html
proxy-key-example.html
 1  <!doctype html>
 2  <html>
 3  	<head>
 4  		<script src="Base58.js"></script>
 5  		<script src="nacl_factory.js"></script>
 6  		<script>
 7  			nacl_factory.instantiate(function (nacl) {
 8  				var mintingAccountPrk = Base58.decode('A9MNsATgQgruBUjxy2rjWY36Yf19uRioKZbiLFT2P7c6');
 9  				var recipientAccountPuk = Base58.decode('C6wuddsBV3HzRrXUtezE7P5MoRXp5m3mEDokRDGZB6ry');
10  				// var recipientAccountPuk = Base58.decode('2sbcMmVKke5inS4yrbeoG6Cyw2mZCptQNjyWgnY4YHaF');
11  
12  				var mintingEd25519KeyPair = nacl.crypto_sign_seed_keypair(mintingAccountPrk);
13  				var mintingX25519KeyPair = nacl.crypto_box_keypair_from_sign_sk(mintingEd25519KeyPair.signSk);
14  
15  				var mintingX25519Prk = mintingX25519KeyPair.boxSk;
16  				console.log("minting private key (X25519): " + Base58.encode(mintingX25519Prk));
17  
18  				// Expecting: 2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP as we explicitly use Ed25519 ("sign") keypair here
19  				var mintingAccountPuk = mintingEd25519KeyPair.signPk; 
20  				console.log("minting public key for confirmation (Ed25519): " + Base58.encode(mintingAccountPuk));
21  
22  				recipientAccountX25519Puk = nacl.crypto_box_pk_from_sign_pk(recipientAccountPuk)
23  				console.log("recipient public key (X25519): " + Base58.encode(recipientAccountX25519Puk));
24  
25  				var sharedSecret = nacl.crypto_scalarmult(mintingX25519Prk, recipientAccountX25519Puk);
26  				console.log("shared secret (for debugging): " + Base58.encode(sharedSecret));
27  
28  				// Proxy PRIVATE key is SHA256 of shared secret
29  				var proxyPrivateKey = nacl.crypto_hash_sha256(sharedSecret)
30  				console.log("proxy private key: " + Base58.encode(proxyPrivateKey));
31  
32  				var proxyKeyPair = nacl.crypto_sign_seed_keypair(proxyPrivateKey);
33  				console.log("proxy public key: " + Base58.encode(proxyKeyPair.signPk));
34  			});
35  		</script>
36  	</head>
37  	<body>
38  	</body>
39  </html>