pike.git
/
lib
/
modules
/
Crypto.pmod
/
DSA.pmod
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/lib/modules/Crypto.pmod/DSA.pmod:165:
} } } } protected Gmp.mpz find_generator(Gmp.mpz p, Gmp.mpz q) { Gmp.mpz e = [object(Gmp.mpz)]((p - 1) / q); Gmp.mpz g;
-
do
-
{
+
do {
/* A random number in { 2, 3, ... p - 2 } */ g = ([object(Gmp.mpz)](random_number( [object(Gmp.mpz)](p-3) ) + 2)) /* Exponentiate to get an element of order 1 or q */ ->powm(e, p);
-
}
-
while (g == 1);
+
} while (g == 1);
return g; } // Generate key parameters (p, q and g) using the NIST DSA prime pair // generation algorithm. @[bits] must be multiple of 64. protected void generate_parameters(int bits) { if (!bits || bits % 64) error( "Unsupported key size.\n" );
pike.git/lib/modules/Crypto.pmod/DSA.pmod:336:
//! Makes a DSA hash of the messge @[msg]. Gmp.mpz hash(string(8bit) msg, .Hash h) { string(8bit) digest = h->hash(msg)[..q->size()/8-1]; return [object(Gmp.mpz)](Gmp.mpz(digest, 256) % q); } protected Gmp.mpz random_number(Gmp.mpz n) {
-
return [object(Gmp.mpz)](Gmp.mpz(random( [int(0..)](q->size() + 10 / 8)), 256) % n);
+
return [object(Gmp.mpz)](Gmp.mpz(random( [int(0..)](q->size() + 10 / 8)),
+
256) % n);
} protected Gmp.mpz random_exponent() { return [object(Gmp.mpz)](random_number([object(Gmp.mpz)](q - 1)) + 1); } //! Sign the message @[h]. Returns the signature as two @[Gmp.mpz] //! objects. array(Gmp.mpz) raw_sign(Gmp.mpz h, void|Gmp.mpz k)