@@ -30,6 +30,7 @@ import{ tssLib as tssLibFrostBip340 } from "@toruslabs/tss-frost-lib-bip340";
3030import "./App.css" ;
3131import jwt , { Algorithm } from "jsonwebtoken" ;
3232import { flow } from "./flow" ;
33+ import { ec as EC } from "elliptic" ;
3334
3435type TssLib = typeof tssLibDkls | typeof tssLibFrost | typeof tssLibFrostBip340 ;
3536
@@ -423,16 +424,29 @@ function App() {
423424 uiConsole ( sig . toString ( "hex" ) ) ;
424425 }
425426 } ;
427+
428+ const signWithKeyTweak = async ( ) : Promise < any > => {
429+ if ( coreKitInstance . current . sigType === SIG_TYPE . ECDSA_SECP256K1 ) {
430+ throw new Error ( "Not supported for this signature type" ) ;
431+ } else if ( coreKitInstance . current . sigType === SIG_TYPE . ED25519 || coreKitInstance . current . sigType === SIG_TYPE . BIP340 ) {
432+ const msg = Buffer . from ( "hello signer!" ) ;
433+ const keyTweak = ( ( ) => {
434+ const ec = new EC ( coreKitInstance . current . keyType ) ;
435+ return ec . genKeyPair ( ) . getPrivate ( ) ;
436+ } ) ( ) ;
437+ const sig = await coreKitInstance . current . sign ( msg , { keyTweak } ) ;
438+ uiConsole ( sig . toString ( "hex" ) ) ;
439+ }
440+ } ;
441+
426442 const signMessageWithPrecomputedTss = async ( ) : Promise < any > => {
427443 if ( coreKitInstance . current . keyType === "secp256k1" ) {
428444 const precomputedTssClient = await coreKitInstance . current . precompute_secp256k1 ( ) ;
429445 const msg = Buffer . from ( "hello signer!" ) ;
430- const sig = await coreKitInstance . current . sign ( msg , false , precomputedTssClient ) ;
431- uiConsole ( sig . toString ( "hex" ) ) ;
432- } else if ( coreKitInstance . current . keyType === "ed25519" ) {
433- const msg = Buffer . from ( "hello signer!" ) ;
434- const sig = await coreKitInstance . current . sign ( msg ) ;
446+ const sig = await coreKitInstance . current . sign ( msg , { secp256k1Precompute : precomputedTssClient } ) ;
435447 uiConsole ( sig . toString ( "hex" ) ) ;
448+ } else {
449+ throw new Error ( "Not supported for this key type" ) ;
436450 }
437451 } ;
438452
@@ -441,15 +455,13 @@ function App() {
441455 const [ precomputedTssClient , precomputedTssClient2 ] = await Promise . all ( [ coreKitInstance . current . precompute_secp256k1 ( ) , coreKitInstance . current . precompute_secp256k1 ( ) ] ) ;
442456
443457 const msg = Buffer . from ( "hello signer!" ) ;
444- const sig = await coreKitInstance . current . sign ( msg , false , precomputedTssClient ) ;
458+ const sig = await coreKitInstance . current . sign ( msg , { secp256k1Precompute : precomputedTssClient } ) ;
445459 const msg2 = Buffer . from ( "hello signer2!" ) ;
446460
447- const sig2 = await coreKitInstance . current . sign ( msg2 , false , precomputedTssClient2 ) ;
461+ const sig2 = await coreKitInstance . current . sign ( msg2 , { secp256k1Precompute : precomputedTssClient2 } ) ;
448462 uiConsole ( "Sig1: " , sig . toString ( "hex" ) , "Sig2: " , sig2 . toString ( "hex" ) ) ;
449- } else if ( coreKitInstance . current . keyType === "ed25519" ) {
450- const msg = Buffer . from ( "hello signer!" ) ;
451- const sig = await coreKitInstance . current . sign ( msg ) ;
452- uiConsole ( sig . toString ( "hex" ) ) ;
463+ } else {
464+ throw new Error ( "Not supported for this key type" ) ;
453465 }
454466 } ;
455467 const switchChainSepolia = async ( ) => {
@@ -864,8 +876,12 @@ function App() {
864876 Sign Message
865877 </ button >
866878
879+ < button onClick = { signWithKeyTweak } className = "card" >
880+ Sign with Key Tweak
881+ </ button >
882+
867883 < button onClick = { signMessageWithPrecomputedTss } className = "card" >
868- Sign Msgwith precomputed TSS
884+ Sign with precomputed TSS
869885 </ button >
870886
871887 < button onClick = { signMultipleMessagesWithPrecomputedTss } className = "card" >
0 commit comments