1*f0865ec9SKyle Evans /* 2*f0865ec9SKyle Evans * Copyright (C) 2017 - This file is part of libecc project 3*f0865ec9SKyle Evans * 4*f0865ec9SKyle Evans * Authors: 5*f0865ec9SKyle Evans * Ryad BENADJILA <ryadbenadjila@gmail.com> 6*f0865ec9SKyle Evans * Arnaud EBALARD <arnaud.ebalard@ssi.gouv.fr> 7*f0865ec9SKyle Evans * Jean-Pierre FLORI <jean-pierre.flori@ssi.gouv.fr> 8*f0865ec9SKyle Evans * 9*f0865ec9SKyle Evans * Contributors: 10*f0865ec9SKyle Evans * Nicolas VIVET <nicolas.vivet@ssi.gouv.fr> 11*f0865ec9SKyle Evans * Karim KHALFALLAH <karim.khalfallah@ssi.gouv.fr> 12*f0865ec9SKyle Evans * 13*f0865ec9SKyle Evans * This software is licensed under a dual BSD and GPL v2 license. 14*f0865ec9SKyle Evans * See LICENSE file at the root folder of the project. 15*f0865ec9SKyle Evans */ 16*f0865ec9SKyle Evans 17*f0865ec9SKyle Evans #include <libecc/fp/fp_rand.h> 18*f0865ec9SKyle Evans #include <libecc/nn/nn_rand.h> 19*f0865ec9SKyle Evans 20*f0865ec9SKyle Evans /* 21*f0865ec9SKyle Evans * Initialize given Fp element in 'out' storage space to a Fp value chosen 22*f0865ec9SKyle Evans * uniformly at random in [1, p-1] where p is provided by 'ctx'. The function 23*f0865ec9SKyle Evans * returns 0 on success, -1 on error. 24*f0865ec9SKyle Evans */ fp_get_random(fp_t out,fp_ctx_src_t ctx)25*f0865ec9SKyle Evansint fp_get_random(fp_t out, fp_ctx_src_t ctx) 26*f0865ec9SKyle Evans { 27*f0865ec9SKyle Evans int ret; 28*f0865ec9SKyle Evans 29*f0865ec9SKyle Evans ret = fp_init(out, ctx); EG(ret, err); 30*f0865ec9SKyle Evans ret = nn_get_random_mod(&(out->fp_val), &(ctx->p)); 31*f0865ec9SKyle Evans 32*f0865ec9SKyle Evans err: 33*f0865ec9SKyle Evans return ret; 34*f0865ec9SKyle Evans } 35