random.cpp

Voici un exemple de programme permettant de générer une valeur peudo-aléatoire. Ce code est générique et permet d'utiliser tous les algorithmes présent dans la librairie. Les éléments fixés ne le sont qu'à titre d'exemple.

/* -----------------------------------------------------------------------
 *
 * Copyright (c) 2002-2005 Mr Ludovic FLAMENT <ludovic.flament@free.fr>, LIEVIN, FRANCE
 *
 * Termes :
 *
 * L'utilisation et/ou la redistribution de ce code (avec ou sans modification),
 * ainsi que de tous les composants du produit (librairies, documentation, exemples, ...)
 * est soumise aux termes de la licence qui vous est attribuée par son auteur.
 *
 * -----------------------------------------------------------------------
 */

#include <stdlib.h>
#include <stdio.h>

#include <include/ecctk-prototype.h>
#include <include/ecctk-ecc.h>

#define MT_RAND         1
#define FIPS186_RAND    2
#define ANSIX9_RAND     3

void gen_random()
{
    /* set random size (in bits)
     */
    s4byte  random_size = 1024;

    /* buffer to get random value
     */
    u1byte  *random_val;

    /* choice of algorithm
     */
    u1byte  algo = ANSIX9_RAND;
    
    switch (algo)
    {
        case MT_RAND:
            random_val = GenerateRandom(random_size);
            break;
        case FIPS186_RAND:
            random_val = GenerateRandomFips186(random_size);
            break;
        case ANSIX9_RAND:
            random_val = GenerateRandomAnsiX9_17(random_size);
            break;
    }
    
    if (random_val == NULL)
        fprintf(stderr, "Generate random value failed\n");
    else
    {
        s4byte i, nb_byte;

        /* compute the number of byte to print
         */
        nb_byte = (random_size >> 3);
        if (random_size & 7)
            nb_byte++;
        
        /* print random value on stdout
         */
        fprintf(stdout, "Random value = ");
        for (i = 0; i < nb_byte; i++)
            fprintf(stdout, "%02x", random_val[i]);
        fprintf(stdout, "\n");

        /* free buffer
         */
        free(random_val);
    }
}

Généré pour ECCTK (Elliptic Curve Cryptographic ToolKit) avec  doxygen