pike.git / src / post_modules / Nettle / hogweed.cmod

version» Context lines:

pike.git/src/post_modules/Nettle/hogweed.cmod:65:    *! The value g, the generator.    *! @elem Gmp.mpz 3    *! The value y, the public value.    *! @elem Gmp.mpz 4    *! The value x, the private value.    *! @endarray    */   PIKEFUN array(object(Gmp.mpz))    dsa_generate_keypair(int p_bits, int q_bits, function(int(0..):string(0..255)) rnd)   { + #ifdef HAVE_NETTLE_DSA_COMPAT_H +  /* Nettle 3.0 or later. */ +  struct dsa_params params; +  mpz_t pub; +  mpz_t key; +  +  dsa_params_init(&params); +  +  if (!dsa_generate_params(&params, rnd, random_func_wrapper, +  NULL, NULL, p_bits, q_bits)) { +  Pike_error("Illegal parameter value.\n"); +  } +  +  mpz_init(pub); +  mpz_init(key); +  +  dsa_generate_keypair(&params, pub, key, rnd, random_func_wrapper); +  +  push_bignum((MP_INT *)&params.p); +  push_bignum((MP_INT *)&params.q); +  push_bignum((MP_INT *)&params.g); +  +  dsa_params_clear(&params); +  +  push_bignum((MP_INT *)pub); +  push_bignum((MP_INT *)key); +  +  mpz_clear(key); +  mpz_clear(pub); +  + #else    struct dsa_public_key pub;    struct dsa_private_key key;       dsa_public_key_init(&pub);    dsa_private_key_init(&key);       if( !nettle_dsa_generate_keypair(&pub, &key, rnd, random_func_wrapper,    NULL, NULL, p_bits   #ifdef HAVE_DSA_QBITS_KEYPAIR_ARG    , q_bits
pike.git/src/post_modules/Nettle/hogweed.cmod:92:    }       push_bignum((MP_INT *)&pub.p);    push_bignum((MP_INT *)&pub.q);    push_bignum((MP_INT *)&pub.g);    push_bignum((MP_INT *)&pub.y);    push_bignum((MP_INT *)&key.x);       dsa_private_key_clear(&key);    dsa_public_key_clear(&pub); + #endif       f_aggregate(5);    stack_pop_n_elems_keep_top(args); /* Remove p_bits, q_bits and rnd. */   }      /*! @decl array(object(Gmp.mpz)) @    *! rsa_generate_keypair(int bits, int e, @    *! function(int(0..):string(0..255)) rnd)    *!    *! Generates an RSA key pair with a @[bits] sized modulus (n), using