Skip to content
Snippets Groups Projects
Select Git revision
  • a5b0a3c02165b5561c4bd9416dfd4d5fa4257ab5
  • master default
  • support_pre_UAL_arm_asm
  • skein
  • rsa-crt-hardening
  • chacha96
  • fat-library
  • versioned-symbols
  • curve25519
  • dsa-reorg
  • aead-api
  • set_key-changes
  • poly1305
  • aes-reorg
  • nettle-2.7-fixes
  • size_t-changes
  • ecc-support
  • experimental-20050201
  • lsh-1.4.2
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1.1_release_20150424
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
  • nettle_2.7.1_release_20130528
  • nettle_2.7_release_20130424
  • nettle_2.6_release_20130116
  • nettle_2.5_release_20120707
  • converted-master-branch-to-git
  • nettle_2.4_release_20110903
  • nettle_2.3_release_20110902
  • nettle_2.2_release_20110711
  • nettle_2.1_release_20100725
  • camellia_32bit_20100720
  • nettle_2.0_release_20090608
  • nettle_1.15_release_20061128
39 results

bignum-random-prime.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    bignum-random-prime.c 7.42 KiB
    /* bignum-random-prime.c
     *
     * Generation of random provable primes.
     */
    
    /* nettle, low-level cryptographics library
     *
     * Copyright (C) 2010 Niels Mller
     *  
     * The nettle library is free software; you can redistribute it and/or modify
     * it under the terms of the GNU Lesser General Public License as published by
     * the Free Software Foundation; either version 2.1 of the License, or (at your
     * option) any later version.
     * 
     * The nettle library is distributed in the hope that it will be useful, but
     * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
     * License for more details.
     * 
     * You should have received a copy of the GNU Lesser General Public License
     * along with the nettle library; see the file COPYING.LIB.  If not, write to
     * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
     * MA 02111-1307, USA.
     */
    
    #if HAVE_CONFIG_H
    # include "config.h"
    #endif
    
    #ifndef RANDOM_PRIME_VERBOSE
    #define RANDOM_PRIME_VERBOSE 0
    #endif
    
    #include <assert.h>
    #include <stdlib.h>
    
    #if RANDOM_PRIME_VERBOSE
    #include <stdio.h>
    #define VERBOSE(x) (fputs((x), stderr))
    #else
    #define VERBOSE(x)
    #endif
    
    #include "bignum.h"
    
    #include "macros.h"
    
    /* Use a table of p_2 = 3 to p_{172} = 1021, multiplied to 32-bit or
       64-bit size. */
    
    struct sieve_element {
      /* Product of some small primes. */
      unsigned long prod;
      /* Square of the smallest one. */
      unsigned long p2;
    };
    
    static const struct sieve_element
    sieve_table[] = {
      {111546435, 9}, /* 3 -- 23 */
      {58642669, 841}, /* 29 -- 43 */
      {600662303, 2209}, /* 47 -- 67 */
      {33984931, 5041}, /* 71 -- 83 */
      {89809099, 7921}, /* 89 -- 103 */
      {167375713, 11449}, /* 107 -- 127 */
      {371700317, 17161}, /* 131 -- 149 */
      {645328247, 22801}, /* 151 -- 167 */
      {1070560157, 29929}, /* 173 -- 191 */
      {1596463769, 37249}, /* 193 -- 211 */
      {11592209, 49729}, /* 223 -- 229 */