MCPcopy Create free account
hub / github.com/Meituan-Dianping/SQLAdvisor / Verify

Method Verify

extra/yassl/taocrypt/src/dsa.cpp:216–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214
215
216bool DSA_Verifier::Verify(const byte* sha_digest, const byte* sig)
217{
218 const Integer& p = key_.GetModulus();
219 const Integer& q = key_.GetSubGroupOrder();
220 const Integer& g = key_.GetSubGroupGenerator();
221 const Integer& y = key_.GetPublicPart();
222
223 int sz = q.ByteCount();
224
225 r_.Decode(sig, sz);
226 s_.Decode(sig + sz, sz);
227
228 if (r_ >= q || r_ < 1 || s_ >= q || s_ < 1)
229 return false;
230
231 Integer H(sha_digest, SHA::DIGEST_SIZE); // sha Hash(m)
232
233 Integer w = s_.InverseMod(q);
234 Integer u1 = (H * w) % q;
235 Integer u2 = (r_ * w) % q;
236
237 // verify r == ((g^u1 * y^u2) mod p) mod q
238 ModularArithmetic ma(p);
239 Integer v = ma.CascadeExponentiate(g, u1, y, u2);
240 v %= q;
241
242 return r_ == v;
243}
244
245
246

Callers 4

bench_dsaFunction · 0.80
dsa_testFunction · 0.80
asn.cppFile · 0.80
verifyMethod · 0.80

Calls 2

DecodeMethod · 0.45
CascadeExponentiateMethod · 0.45

Tested by 1

dsa_testFunction · 0.64