Skip to content

Commit

Permalink
Added 2nd ecdsa test case that generates v val of 0
Browse files Browse the repository at this point in the history
  • Loading branch information
zhenghaven committed May 29, 2024
1 parent a6a3050 commit 10b0bb0
Showing 1 changed file with 226 additions and 8 deletions.
234 changes: 226 additions & 8 deletions test/src/TestEthTxnEcdsa.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,17 @@ GTEST_TEST(TestEthTxnEcdsa, JacobianInv)

EXPECT_EQ(out, expOut);
}

{
mbedTLScpp::BigNum a("4755893456204814032994661987161704419906856408563089114860023487200879314920");
mbedTLScpp::BigNum n("115792089237316195423570985008687907852837564279074904382605163141518161494337");

mbedTLScpp::BigNum expOut("8366362605996906969732918924814779820613675455983702332239682356052933443685");

mbedTLScpp::BigNum out = Transaction::JacobianInv(a, n);

EXPECT_EQ(out, expOut);
}
}


Expand Down Expand Up @@ -131,6 +142,42 @@ GTEST_TEST(TestEthTxnEcdsa, JacobianDouble)
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}

{
std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> p = std::make_tuple(
mbedTLScpp::BigNum("14861663377811509140551858067315276845464282493407987296353092997784687167314"),
mbedTLScpp::BigNum("39137420299569502647765350355455095302255521025456411443562043337254407045840"),
mbedTLScpp::BigNum("40099571553575564002937172146104371577379850074239136598504885595987528294846")
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> expOut = std::make_tuple(
mbedTLScpp::BigNum("63575194886187257535938157704972707470722922421800391784521628407589249322769"),
mbedTLScpp::BigNum("40161198225766027124270551863076939477305469833559547838035156868151083466459"),
mbedTLScpp::BigNum("87891979409671700349269413343649637404628212098163418479237423976283077679673")
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> out = Transaction::JacobianDouble(
p,
sk_secp256k1.BorrowA(),
sk_secp256k1.BorrowP()
);

EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}
}


Expand Down Expand Up @@ -181,6 +228,52 @@ GTEST_TEST(TestEthTxnEcdsa, JacobianAdd)
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}

{
std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> p = std::make_tuple(
mbedTLScpp::BigNum("81852845867168905301505054245430925093078919361432342426470976391340413601139"),
mbedTLScpp::BigNum("44338445320234977458987797881500440713217305413439258886338627240901591305666"),
mbedTLScpp::BigNum("47594349659260652877357148834108997596577843090446296597453723945805718117563")
);
std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> q = std::make_tuple(
mbedTLScpp::BigNum("55066263022277343669578718895168534326250603453777594175500187360389116729240"),
mbedTLScpp::BigNum("32670510020758816978083085130507043184471273380659243275938904335757337482424"),
mbedTLScpp::BigNum(1)
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> expOut = std::make_tuple(
mbedTLScpp::BigNum("40448055496287309044869980056118293952322637777137096262082128484131334177985"),
mbedTLScpp::BigNum("103296625191508965494948037293515077505697237578720143244847055492794393537747"),
mbedTLScpp::BigNum("63820715475438429361341171002329409693455152442280053906972735224332669284210")
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> out = Transaction::JacobianAdd(
p,
q,
sk_secp256k1.BorrowA(),
sk_secp256k1.BorrowP()
);

EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}
}


Expand Down Expand Up @@ -227,6 +320,48 @@ GTEST_TEST(TestEthTxnEcdsa, JacobianMultiply)
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}

{
std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> a = std::make_tuple(
mbedTLScpp::BigNum("55066263022277343669578718895168534326250603453777594175500187360389116729240"),
mbedTLScpp::BigNum("32670510020758816978083085130507043184471273380659243275938904335757337482424"),
mbedTLScpp::BigNum(1)
);

mbedTLScpp::BigNum num("4755893456204814032994661987161704419906856408563089114860023487200879314920");

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> expOut = std::make_tuple(
mbedTLScpp::BigNum("63575194886187257535938157704972707470722922421800391784521628407589249322769"),
mbedTLScpp::BigNum("40161198225766027124270551863076939477305469833559547838035156868151083466459"),
mbedTLScpp::BigNum("87891979409671700349269413343649637404628212098163418479237423976283077679673")
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> out = Transaction::JacobianMultiply(
std::get<0>(a),
std::get<1>(a),
std::get<2>(a),
num,
sk_secp256k1.BorrowA(),
sk_secp256k1.BorrowN(),
sk_secp256k1.BorrowP()
);

EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}
}


Expand Down Expand Up @@ -266,16 +401,52 @@ GTEST_TEST(TestEthTxnEcdsa, JacobianFastMultiply)
EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
}

{
std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> a = std::make_tuple(
mbedTLScpp::BigNum("55066263022277343669578718895168534326250603453777594175500187360389116729240"),
mbedTLScpp::BigNum("32670510020758816978083085130507043184471273380659243275938904335757337482424")
);

mbedTLScpp::BigNum num("4755893456204814032994661987161704419906856408563089114860023487200879314920");

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> expOut = std::make_tuple(
mbedTLScpp::BigNum("57531915739949951657140584335392702729792194311398064976436476590597615371172"),
mbedTLScpp::BigNum("74532461135409732490675357031953695959767481587610106665841628494200677277931")
);

std::tuple<
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> out = Transaction::JacobianFastMultiply(
std::get<0>(a),
std::get<1>(a),
num,
sk_secp256k1.BorrowA(),
sk_secp256k1.BorrowN(),
sk_secp256k1.BorrowP()
);

EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
}
}


GTEST_TEST(TestEthTxnEcdsa, DeterministicGenerateK)
{
std::vector<uint8_t> hash = {
0x7b, 0xf0, 0x42, 0x15, 0xd5, 0xbc, 0x74, 0x80, 0x96, 0x40, 0xa0, 0xec, 0xd1, 0x11, 0xc5, 0x5e,
0x7d, 0x07, 0xed, 0x14, 0xe4, 0xdb, 0x4c, 0x6e, 0x82, 0x03, 0x6d, 0x2c, 0xe8, 0x90, 0x54, 0x2e,
};

{
std::vector<uint8_t> hash = {
0x7b, 0xf0, 0x42, 0x15, 0xd5, 0xbc, 0x74, 0x80, 0x96, 0x40, 0xa0, 0xec, 0xd1, 0x11, 0xc5, 0x5e,
0x7d, 0x07, 0xed, 0x14, 0xe4, 0xdb, 0x4c, 0x6e, 0x82, 0x03, 0x6d, 0x2c, 0xe8, 0x90, 0x54, 0x2e,
};
mbedTLScpp::BigNum key("34390819888240390953029010971248455142986221947941601700148038000926730363672");
auto keyBytes = key.Bytes</*littleEndian=*/false>();

Expand All @@ -288,16 +459,31 @@ GTEST_TEST(TestEthTxnEcdsa, DeterministicGenerateK)

EXPECT_EQ(out, expOut);
}

{
mbedTLScpp::BigNum key("62878277211082814447969588726438965043493409034528277085854515572569382032315");
auto keyBytes = key.Bytes</*littleEndian=*/false>();

mbedTLScpp::BigNum expOut("4755893456204814032994661987161704419906856408563089114860023487200879314920");

mbedTLScpp::BigNum out = Transaction::DeterministicGenerateK(
mbedTLScpp::CtnFullR(hash),
mbedTLScpp::CtnFullR(keyBytes)
);

EXPECT_EQ(out, expOut);
}
}


GTEST_TEST(TestEthTxnEcdsa, EcdsaRawSign)
{
std::vector<uint8_t> hash = {
0x7b, 0xf0, 0x42, 0x15, 0xd5, 0xbc, 0x74, 0x80, 0x96, 0x40, 0xa0, 0xec, 0xd1, 0x11, 0xc5, 0x5e,
0x7d, 0x07, 0xed, 0x14, 0xe4, 0xdb, 0x4c, 0x6e, 0x82, 0x03, 0x6d, 0x2c, 0xe8, 0x90, 0x54, 0x2e,
};

{
std::vector<uint8_t> hash = {
0x7b, 0xf0, 0x42, 0x15, 0xd5, 0xbc, 0x74, 0x80, 0x96, 0x40, 0xa0, 0xec, 0xd1, 0x11, 0xc5, 0x5e,
0x7d, 0x07, 0xed, 0x14, 0xe4, 0xdb, 0x4c, 0x6e, 0x82, 0x03, 0x6d, 0x2c, 0xe8, 0x90, 0x54, 0x2e,
};
mbedTLScpp::BigNum key("34390819888240390953029010971248455142986221947941601700148038000926730363672");

std::tuple<
Expand Down Expand Up @@ -328,5 +514,37 @@ GTEST_TEST(TestEthTxnEcdsa, EcdsaRawSign)
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}

{
mbedTLScpp::BigNum key("62878277211082814447969588726438965043493409034528277085854515572569382032315");

std::tuple<
uint8_t,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> expOut = std::make_tuple(
0,
mbedTLScpp::BigNum("57531915739949951657140584335392702729792194311398064976436476590597615371172"),
mbedTLScpp::BigNum("52996200849355888973535696918874003680055380398586210701928882732133694725751")
);

std::tuple<
uint8_t,
mbedTLScpp::BigNum,
mbedTLScpp::BigNum
> out = Transaction::EcdsaRawSign(
mbedTLScpp::CtnFullR(hash),
key,
sk_secp256k1.BorrowA(),
sk_secp256k1.BorrowGx(),
sk_secp256k1.BorrowGy(),
sk_secp256k1.BorrowN(),
sk_secp256k1.BorrowP()
);

EXPECT_EQ(std::get<0>(out), std::get<0>(expOut));
EXPECT_EQ(std::get<1>(out), std::get<1>(expOut));
EXPECT_EQ(std::get<2>(out), std::get<2>(expOut));
}
}

0 comments on commit 10b0bb0

Please sign in to comment.