summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2018-09-18 03:05:51 +0300
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2018-09-18 16:24:21 +0300
commit7339f222c9ea52cd6c1177f7d749cd0dba278203 (patch)
tree5589384e5b97b716539e3dc97062a956bc68c417
parent4d8c98b2493d2880c536beb71984e487a71143ee (diff)
downloadgnutls-7339f222c9ea52cd6c1177f7d749cd0dba278203.tar.gz
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 <dbaryshkov@gmail.com>
-rw-r--r--src/certtool-common.c15
1 files changed, 15 insertions, 0 deletions
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);