diff --git a/crypto/paillier/paillier.go b/crypto/paillier/paillier.go index c0a4e04..ce1416a 100644 --- a/crypto/paillier/paillier.go +++ b/crypto/paillier/paillier.go @@ -21,8 +21,6 @@ type ( PublicKey Lambda *big.Int // lcm(p-1, q-1) Phi *big.Int // (p-1) * (q-1) - P *big.Int - Q *big.Int } ) @@ -64,7 +62,7 @@ func NewKeyPair(concurrency ...int) (*PrivateKey, *PublicKey, error) { lambda := new(big.Int).Div(phi, gcd) publicKey := &PublicKey{N: n} - privateKey := &PrivateKey{PublicKey: *publicKey, Lambda: lambda, Phi: phi, P: p, Q: q} + privateKey := &PrivateKey{PublicKey: *publicKey, Lambda: lambda, Phi: phi} return privateKey, publicKey, nil } diff --git a/crypto/zkp/aff_g_proof_test.go b/crypto/zkp/aff_g_proof_test.go index eae5165..50ab30c 100644 --- a/crypto/zkp/aff_g_proof_test.go +++ b/crypto/zkp/aff_g_proof_test.go @@ -14,8 +14,8 @@ func TestAffGProof(t *testing.T) { // -----------------------GeneratePreParams------------------------------- fmt.Println("----------------------- TestAffGProof ---------------------------------") pesersen, _ := pedersen.NewPedersenParameters(8) - const bits = 512 - // const bits = 1024 + // const bits = 512 + const bits = 1024 concurrency := 4 var values = make(chan *big.Int, concurrency) diff --git a/tss/ecdsa/keygen/keygen_test.go b/tss/ecdsa/keygen/keygen_test.go index 1b84554..b364c58 100644 --- a/tss/ecdsa/keygen/keygen_test.go +++ b/tss/ecdsa/keygen/keygen_test.go @@ -7,14 +7,12 @@ import ( "github.com/okx/threshold-lib/crypto/curves" "github.com/okx/threshold-lib/crypto/paillier" - "github.com/okx/threshold-lib/crypto/pedersen" "github.com/okx/threshold-lib/tss" "github.com/okx/threshold-lib/tss/key/bip32" "github.com/okx/threshold-lib/tss/key/dkg" ) const ( - pedParamsStr = "{\"S\":13817395213773423665748976106069887563215400031989903034408049429189159623246888881612592317674727022888953512054385819429092977115403239906258157202244097241485415363298451415160695747089414269924804324563172126254731208935288395176853289248153163224344837947195551794352714372170241862006229745350720206100529568569903326706522465071953160407559249327843406829943397877417499624472421566341035438108378118335635756026876702727809585543003644182652106484868612447592410485489825417344886519578261106535281338786314136945870688227272056742451068061150072357667594255200825455371193294242284424803170897668949426555425,\"T\":12646452867496863933920518693245448076945324934065007179150675937842809462143388041137327217366863480604024164454053181476261134056508042173677396619091621046697295845899271429173694327241538528083559862042799634332752900457929032597135516603322969801330022552710943053979389903574351073197184678971851077867038477328389498837083801534992728001111781813986801825092859612842444546665472308805440478879962403831545378204083199782379489048179968109465785715883325834618148037339660146296886384179431949544922529706581349706257973164686615951349082129935811005980537931685280584875211268792796177935510214118753649879253,\"Ntilde\":31203981932332851330684971902204167683279436670222650769704368232932597705714815213178259489761831567249732027535018308556325009159384987976366013997949424098969119874421206142006896077007148702247620090092698015141805616903301830015820714685345412225561073461417430194324516227295135698439299870481751523667676431358649281499087889608995507141224753283985619068058187485838992611877407102364133884863015657088284949501806199503611081229593950592540379747602331347045247394118938229140216860250432071881042897379699134249065339561622661666095475238856269226548968314840715169536541404692806522202600968606674667098881}" preParamsStr = "{\"NTildei\":24471520908795186059871345359891817090375082425235011162673163562293216820664510789828605476260176115517411842055396836257208343639030995277175322263758084624457414755788632175712521955658505919013279743494979368113272203677789463548602565981118301653800716121189384752156994925287997166225339564621441206438778955740393180221057367383300037154792187952963218391388563468946645409334612971210896085905056280930519856946112538908255424632924121317632150416586598586793214306932742138260070923446615537142905564533718729288946652140359207920360574975200706166078989291834969251532287540567858173716968846357015270138349,\"H1i\":20525427855544097812900242461323906064694844566721127908596308189362139634932796351990338037155331859755165166468225804820912268858944197770981804143947455994501442981149428098822310447470928457374682794682110850354710456200518000366554808847135225010507970105885978332438055746828580641608638198174105260354736906195605319753574667723013578689012516753815219539851516961366236404521980593518182365012603240654581994925529765101249024754689309931635963810794661571475581905272286571260842205785767159676205901368018463391470835581427837444426656612683690455228541028875229228051625995552836658561731443995968771287788,\"H2i\":14561886462801513025229647032463855918071292086106088637653093122443632316900764053418831163999153989988643257167279826735804838683222492162945450354760976026539895948631486301719383942423900097939116970423123551167467739873293443276733568908835651175478613657226786889798591766941448274568403953774018961350069278513251708000024532723935518612136374339804631761356041438752219980855367614912814730211618900394962484968025879140621313034875912024520604802101951780131868299628079385785798916363779339123951610598183476830672767548597981792629985786029649395570390192737424564998427393536184577476205531938017713907537,\"Alpha\":15562395633401930119640319530685053105534487592669191131770549017020512836227813395433398013401899672808149896260415156005395650961577495248684112199870239290842042560405884222603358515341370868923091465869971181089036403932954215982530133253275808649915955629978395955053483946662714544209903814385313430160541625128661561277888916430771363680920637690494652922130604979659273437231654682379800477479474793339467647687163077730878952413184314085561763375724610716711310748898159971608300807004602791622905928075714005483877645756072135214117404734704436395780584072358660771347598146098721453405712285848600410929912,\"Beta\":2395165474635562375328345168197470419270712853015774984255058066914332835031654638443038211809208885507287294824752534870350008496826826350516586118916243850537128710018544377070657961787021005710261809699685606781195081429046500235631252686233860824641938201591401143177392380699803128257310699979970380819582013645704325217394895352558949906568690971372208643798583918394057857288004538171668501365327120899644543818081629047710813539155106955681360755489819630513934947888711688521552671506732141320287584388268958167835966566882566177748042701818683114194170779163415799948893004383756208873564628601506303306733,\"P\":78946358809465488657785646401276462719477605320468420301685497279392498318081224458347091460869018078980790500414678741720386595780837578599171293477368521302224467006469988809257162522761685335900641074366451195515153523873921985410903393962006195879192213513994867756111011843999943944429711391222186861091,\"Q\":77494140571626675280459642381974308521056398681316094978062801680359479201622037388948094745850542427491783310684134503735540058334580018731497272439023435198860202702815565075741003080812047756218005315134111060182393701088010552028153733171070602610292439056776957470549025846108495103549355647541809857301}" ) @@ -54,23 +52,17 @@ func TestKeyGen(t *testing.T) { fmt.Println("preParams Unmarshal error, ", err) } - ped := &pedersen.PedersenParameters{} - err = json.Unmarshal([]byte(pedParamsStr), ped) - if err != nil { - fmt.Println("pedersen parameters Unmarshal error, ", err) - } - // 1-->2 1--->3 paiPriKey, _, _ := paillier.NewKeyPair(8) - p1Data, _ := P1(p1SaveData.ShareI, paiPriKey, setUp1.DeviceNumber, setUp2.DeviceNumber, preParams, ped) + p1Data, _ := P1(p1SaveData.ShareI, paiPriKey, setUp1.DeviceNumber, setUp2.DeviceNumber, preParams) fmt.Println("p1Data", p1Data) publicKey, _ := curves.NewECPoint(curve, p2SaveData.PublicKey.X, p2SaveData.PublicKey.Y) - p2Data, _ := P2(p2SaveData.ShareI, publicKey, p1Data, setUp1.DeviceNumber, setUp2.DeviceNumber, ped) + p2Data, _ := P2(p2SaveData.ShareI, publicKey, p1Data, setUp1.DeviceNumber, setUp2.DeviceNumber) fmt.Println("p2Data", p2Data) - p1Data, _ = P1(p1SaveData.ShareI, paiPriKey, setUp1.DeviceNumber, setUp3.DeviceNumber, preParams, ped) + p1Data, _ = P1(p1SaveData.ShareI, paiPriKey, setUp1.DeviceNumber, setUp3.DeviceNumber, preParams) fmt.Println("p1Data", p1Data) - p2Data, _ = P2(p3SaveData.ShareI, publicKey, p1Data, setUp1.DeviceNumber, setUp3.DeviceNumber, ped) + p2Data, _ = P2(p3SaveData.ShareI, publicKey, p1Data, setUp1.DeviceNumber, setUp3.DeviceNumber) fmt.Println("p2Data", p2Data) fmt.Println("=========bip32==========") diff --git a/tss/ecdsa/keygen/party1.go b/tss/ecdsa/keygen/party1.go index 743d757..cbda939 100644 --- a/tss/ecdsa/keygen/party1.go +++ b/tss/ecdsa/keygen/party1.go @@ -9,7 +9,6 @@ import ( "github.com/okx/threshold-lib/crypto" "github.com/okx/threshold-lib/crypto/curves" "github.com/okx/threshold-lib/crypto/paillier" - "github.com/okx/threshold-lib/crypto/pedersen" "github.com/okx/threshold-lib/crypto/schnorr" "github.com/okx/threshold-lib/crypto/vss" "github.com/okx/threshold-lib/crypto/zkp" @@ -74,18 +73,16 @@ type P1Data struct { PaiPubKey *paillier.PublicKey // paillier public key X1 *curves.ECPoint - NIZKProof []string - DlnProof1 *zkp.DlnProof - DlnProof2 *zkp.DlnProof - PDLwSlackProof *zkp.PDLwSlackProof - StatementParams *zkp.StatementParams - PaillierBlumProof *zkp.PaillierBlumProof - NSFProof *zkp.NoSmallFactorProof + NIZKProof []string + DlnProof1 *zkp.DlnProof + DlnProof2 *zkp.DlnProof + PDLwSlackProof *zkp.PDLwSlackProof + StatementParams *zkp.StatementParams } // P1 after dkg, prepare for 2-party signature, P1 send encrypt x1 to P2 // paillier key pair generation is time-consuming, generated in advance, encrypted storage? -func P1(share1 *big.Int, paiPriKey *paillier.PrivateKey, from, to int, preParams *PreParams, ped *pedersen.PedersenParameters) (*tss.Message, error) { +func P1(share1 *big.Int, paiPriKey *paillier.PrivateKey, from, to int, preParams *PreParams) (*tss.Message, error) { // lagrangian interpolation x1 x1 := vss.CalLagrangian(curve, big.NewInt(int64(from)), share1, []*big.Int{big.NewInt(int64(from)), big.NewInt(int64(to))}) paiPubKey := &paiPriKey.PublicKey @@ -139,24 +136,16 @@ func P1(share1 *big.Int, paiPriKey *paillier.PrivateKey, from, to int, preParams return nil, fmt.Errorf("PDLwSlack proof fail") } - // PaillierBlumProof - paillierBlumPf := zkp.PaillierBlumProve(paiPubKey.N, paiPriKey.P, paiPriKey.Q) - - // No Small Factor Proof - nsfProof := zkp.NoSmallFactorProve(paiPubKey.N, paiPriKey.P, paiPriKey.Q, ped) - p1Data := P1Data{ - E_x1: E_x1, - Proof: proof, - PaiPubKey: paiPubKey, - X1: X1, - NIZKProof: nizkProof, - DlnProof1: dlnProof1, - DlnProof2: dlnProof2, - PDLwSlackProof: pdlWSlackPf, - StatementParams: statementParams, - PaillierBlumProof: paillierBlumPf, - NSFProof: nsfProof, + E_x1: E_x1, + Proof: proof, + PaiPubKey: paiPubKey, + X1: X1, + NIZKProof: nizkProof, + DlnProof1: dlnProof1, + DlnProof2: dlnProof2, + PDLwSlackProof: pdlWSlackPf, + StatementParams: statementParams, } bytes, err := json.Marshal(p1Data) if err != nil { diff --git a/tss/ecdsa/keygen/party2.go b/tss/ecdsa/keygen/party2.go index fa863a0..88f0862 100644 --- a/tss/ecdsa/keygen/party2.go +++ b/tss/ecdsa/keygen/party2.go @@ -7,7 +7,6 @@ import ( "github.com/okx/threshold-lib/crypto/curves" "github.com/okx/threshold-lib/crypto/paillier" - "github.com/okx/threshold-lib/crypto/pedersen" "github.com/okx/threshold-lib/crypto/schnorr" "github.com/okx/threshold-lib/crypto/vss" "github.com/okx/threshold-lib/crypto/zkp" @@ -23,7 +22,7 @@ type P2SaveData struct { } // P2 after dkg, prepare for 2-party signature, P2 receives encrypt x1 and paillier public key from P1 -func P2(share2 *big.Int, publicKey *curves.ECPoint, msg *tss.Message, from, to int, ped *pedersen.PedersenParameters) (*P2SaveData, error) { +func P2(share2 *big.Int, publicKey *curves.ECPoint, msg *tss.Message, from, to int) (*P2SaveData, error) { if msg.From != from || msg.To != to { return nil, fmt.Errorf("message mismatch") } @@ -82,18 +81,6 @@ func P2(share2 *big.Int, publicKey *curves.ECPoint, msg *tss.Message, from, to i return nil, fmt.Errorf("PDLwSlackVerify fail") } - // paillier blum verify - paillierBlumVerify := zkp.PaillierBlumVerify(p1Data.PaiPubKey.N, p1Data.PaillierBlumProof) - if !paillierBlumVerify { - return nil, fmt.Errorf("PaillierBlumVerify fail") - } - - // no small factor verify - nsfVerify := zkp.NoSmallFactorVerify(p1Data.PaiPubKey.N, p1Data.NSFProof, ped) - if !nsfVerify { - return nil, fmt.Errorf("NoSmallFactorVerify fail") - } - // P2 additional save key information p2SaveData := &P2SaveData{ From: from, diff --git a/tss/ecdsa/sign/sign_test.go b/tss/ecdsa/sign/sign_test.go index 1f44895..46cf67c 100644 --- a/tss/ecdsa/sign/sign_test.go +++ b/tss/ecdsa/sign/sign_test.go @@ -77,9 +77,9 @@ func TestEcdsaSign(t *testing.T) { } paiPrivate, _, _ := paillier.NewKeyPair(8) - p1Dto, _ := keygen.P1(p1Data.ShareI, paiPrivate, p1Data.Id, p2Data.Id, preParams, ped) + p1Dto, _ := keygen.P1(p1Data.ShareI, paiPrivate, p1Data.Id, p2Data.Id, preParams) publicKey, _ := curves.NewECPoint(curve, p2Data.PublicKey.X, p2Data.PublicKey.Y) - p2SaveData, err := keygen.P2(p2Data.ShareI, publicKey, p1Dto, p1Data.Id, p2Data.Id, ped) + p2SaveData, err := keygen.P2(p2Data.ShareI, publicKey, p1Dto, p1Data.Id, p2Data.Id) fmt.Println(p2SaveData, err) fmt.Println("=========bip32==========")