POLY->ASCII: improve modularity
This commit is contained in:
parent
2503fdcfa4
commit
81b570d9a9
@ -213,35 +213,7 @@ poly_to_ascii(const fmpz_poly_t poly,
|
|||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
string *
|
string *
|
||||||
poly_to_base64(const fmpz_poly_t poly,
|
poly_arr_to_ascii(fmpz_poly_t **poly_array,
|
||||||
const ntru_context *ctx)
|
|
||||||
{
|
|
||||||
string *result_string = ntru_malloc(sizeof(*result_string));
|
|
||||||
string *string_rep = NULL;
|
|
||||||
gchar *base64_string = NULL,
|
|
||||||
*tmp = NULL;
|
|
||||||
|
|
||||||
string_rep = poly_to_ascii(poly, ctx);
|
|
||||||
|
|
||||||
tmp = g_base64_encode((const guchar *)string_rep->ptr,
|
|
||||||
string_rep->len);
|
|
||||||
|
|
||||||
base64_string = g_base64_encode((const guchar *)tmp,
|
|
||||||
strlen(tmp));
|
|
||||||
|
|
||||||
result_string->ptr = base64_string;
|
|
||||||
result_string->len = strlen(base64_string);
|
|
||||||
|
|
||||||
string_delete(string_rep);
|
|
||||||
free(tmp);
|
|
||||||
|
|
||||||
return result_string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
string *
|
|
||||||
poly_arr_to_base64(fmpz_poly_t **poly_array,
|
|
||||||
const ntru_context *ctx)
|
const ntru_context *ctx)
|
||||||
{
|
{
|
||||||
fmpz_poly_t *ascii_poly;
|
fmpz_poly_t *ascii_poly;
|
||||||
@ -250,8 +222,6 @@ poly_arr_to_base64(fmpz_poly_t **poly_array,
|
|||||||
string *result_string = ntru_malloc(sizeof(*result_string));
|
string *result_string = ntru_malloc(sizeof(*result_string));
|
||||||
size_t old_length = 0,
|
size_t old_length = 0,
|
||||||
new_length;
|
new_length;
|
||||||
gchar *base64_string = NULL,
|
|
||||||
*tmp = NULL;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* parse the polynomial coefficients into a string
|
* parse the polynomial coefficients into a string
|
||||||
@ -276,14 +246,61 @@ poly_arr_to_base64(fmpz_poly_t **poly_array,
|
|||||||
string_delete(poly_str);
|
string_delete(poly_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = g_base64_encode((const guchar *)string_rep, string_len);
|
result_string->ptr = string_rep;
|
||||||
|
result_string->len = string_len;
|
||||||
|
|
||||||
|
return result_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
string *
|
||||||
|
poly_to_base64(const fmpz_poly_t poly,
|
||||||
|
const ntru_context *ctx)
|
||||||
|
{
|
||||||
|
string *result_string = ntru_malloc(sizeof(*result_string));
|
||||||
|
string *string_rep = NULL;
|
||||||
|
gchar *base64_string = NULL,
|
||||||
|
*tmp = NULL;
|
||||||
|
|
||||||
|
string_rep = poly_to_ascii(poly, ctx);
|
||||||
|
|
||||||
|
tmp = g_base64_encode((const guchar *)string_rep->ptr,
|
||||||
|
string_rep->len);
|
||||||
base64_string = g_base64_encode((const guchar *)tmp,
|
base64_string = g_base64_encode((const guchar *)tmp,
|
||||||
strlen(tmp));
|
strlen(tmp));
|
||||||
|
|
||||||
result_string->ptr = base64_string;
|
result_string->ptr = base64_string;
|
||||||
result_string->len = strlen(base64_string);
|
result_string->len = strlen(base64_string);
|
||||||
|
|
||||||
free(string_rep);
|
string_delete(string_rep);
|
||||||
|
free(tmp);
|
||||||
|
|
||||||
|
return result_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
string *
|
||||||
|
poly_arr_to_base64(fmpz_poly_t **poly_array,
|
||||||
|
const ntru_context *ctx)
|
||||||
|
{
|
||||||
|
string *string_rep;
|
||||||
|
string *result_string = ntru_malloc(sizeof(*result_string));
|
||||||
|
|
||||||
|
gchar *base64_string = NULL,
|
||||||
|
*tmp = NULL;
|
||||||
|
|
||||||
|
string_rep = poly_arr_to_ascii(poly_array, ctx);
|
||||||
|
|
||||||
|
tmp = g_base64_encode((const guchar *)string_rep->ptr, string_rep->len);
|
||||||
|
base64_string = g_base64_encode((const guchar *)tmp,
|
||||||
|
strlen(tmp));
|
||||||
|
|
||||||
|
result_string->ptr = base64_string;
|
||||||
|
result_string->len = strlen(base64_string);
|
||||||
|
|
||||||
|
string_delete(string_rep);
|
||||||
free(tmp);
|
free(tmp);
|
||||||
|
|
||||||
return result_string;
|
return result_string;
|
||||||
|
|||||||
@ -100,6 +100,22 @@ string *
|
|||||||
poly_to_ascii(const fmpz_poly_t poly,
|
poly_to_ascii(const fmpz_poly_t poly,
|
||||||
const ntru_context *ctx);
|
const ntru_context *ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an array of polynomials back to a real string.
|
||||||
|
* The polynomial coefficients are expected to be in the range
|
||||||
|
* [0, q-1] and will be casted back to chars without any mapping.
|
||||||
|
*
|
||||||
|
* Trailing q coefficients are only used for filling up the rest of
|
||||||
|
* a polynomial with '\0', so they will not confuse the result.
|
||||||
|
*
|
||||||
|
* @param poly_arr the array of polynomials
|
||||||
|
* @param ctx the NTRUEncrypt context
|
||||||
|
* @return the real string, newly allocated
|
||||||
|
*/
|
||||||
|
string *
|
||||||
|
poly_arr_to_ascii(fmpz_poly_t **poly_array,
|
||||||
|
const ntru_context *ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a single polynom back to a real string which is
|
* Convert a single polynom back to a real string which is
|
||||||
* base64 encoded.
|
* base64 encoded.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user