ECCTK (Elliptic Curve Cryptographic ToolKit): random.cpp

# 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);
        }
    }