From 7339f222c9ea52cd6c1177f7d749cd0dba278203 Mon Sep 17 00:00:00 2001 From: Dmitry Eremin-Solenikov Date: Tue, 18 Sep 2018 03:05:51 +0300 Subject: certtool: print GOST public key with MSB first OpenSSL and other libraries print MSB first, when printing GOST public keys. Let's return to this convention. Signed-off-by: Dmitry Eremin-Solenikov --- src/certtool-common.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/certtool-common.c b/src/certtool-common.c index e44ed5d5aa..acd314a0ac 100644 --- a/src/certtool-common.c +++ b/src/certtool-common.c @@ -913,6 +913,18 @@ print_ecc_pkey(FILE * outfile, gnutls_ecc_curve_t curve, } } +static void reverse_datum(gnutls_datum_t *d) +{ + unsigned int i; + unsigned char c; + + for (i = 0; i < d->size / 2; i++) { + c = d->data[i]; + d->data[i] = d->data[d->size - i - 1]; + d->data[d->size - i - 1] = c; + } +} + void print_gost_pkey(FILE * outfile, gnutls_ecc_curve_t curve, gnutls_digest_algorithm_t digest, gnutls_gost_paramset_t paramset, @@ -941,9 +953,12 @@ print_gost_pkey(FILE * outfile, gnutls_ecc_curve_t curve, gnutls_gost_paramset_get_name(paramset)); if (k) { + reverse_datum(k); print_head(outfile, "private key", k->size, cprint); print_hex_datum(outfile, k, cprint); } + reverse_datum(x); + reverse_datum(y); print_head(outfile, "x", x->size, cprint); print_hex_datum(outfile, x, cprint); print_head(outfile, "y", y->size, cprint); -- cgit v1.2.1