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

Method Sign

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

Source from the content-addressed store, hash-verified

166
167
168word32 DSA_Signer::Sign(const byte* sha_digest, byte* sig,
169 RandomNumberGenerator& rng)
170{
171 const Integer& p = key_.GetModulus();
172 const Integer& q = key_.GetSubGroupOrder();
173 const Integer& g = key_.GetSubGroupGenerator();
174 const Integer& x = key_.GetPrivatePart();
175
176 Integer k(rng, 1, q - 1);
177
178 r_ = a_exp_b_mod_c(g, k, p);
179 r_ %= q;
180
181 Integer H(sha_digest, SHA::DIGEST_SIZE); // sha Hash(m)
182
183 Integer kInv = k.InverseMod(q);
184 s_ = (kInv * (H + x*r_)) % q;
185
186 if (!(!!r_ && !!s_))
187 return -1;
188
189 int rSz = r_.ByteCount();
190
191 if (rSz == 19) {
192 sig[0] = 0;
193 sig++;
194 }
195
196 r_.Encode(sig, rSz);
197
198 int sSz = s_.ByteCount();
199
200 if (sSz == 19) {
201 sig[rSz] = 0;
202 sig++;
203 }
204
205 s_.Encode(sig + rSz, sSz);
206
207 return 40;
208}
209
210
211DSA_Verifier::DSA_Verifier(const DSA_PublicKey& key)

Callers 3

bench_dsaFunction · 0.80
dsa_testFunction · 0.80
signMethod · 0.80

Calls 1

EncodeMethod · 0.80

Tested by 1

dsa_testFunction · 0.64