Skip to content

Commit b39c46f

Browse files
committed
re-order code a bit
... so only relevant parts are executed Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
1 parent 11590de commit b39c46f

1 file changed

Lines changed: 36 additions & 35 deletions

File tree

src/pk/ecc/ecc_export_openssl.c

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,41 +34,6 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
3434

3535
if (key->type != PK_PRIVATE && flag_pri) return CRYPT_PK_TYPE_MISMATCH;
3636

37-
prime = key->dp.prime;
38-
order = key->dp.order;
39-
b = key->dp.B;
40-
a = key->dp.A;
41-
gx = key->dp.base.x;
42-
gy = key->dp.base.y;
43-
44-
/* curve param a */
45-
len_a = mp_unsigned_bin_size(a);
46-
if (len_a > sizeof(bin_a)) { err = CRYPT_BUFFER_OVERFLOW; goto error; }
47-
if ((err = mp_to_unsigned_bin(a, bin_a)) != CRYPT_OK) { goto error; }
48-
if (len_a == 0) { len_a = 1; bin_a[0] = 0; } /* handle case a == 0 */
49-
50-
/* curve param b */
51-
len_b = mp_unsigned_bin_size(b);
52-
if (len_b > sizeof(bin_b)) { err = CRYPT_BUFFER_OVERFLOW; goto error; }
53-
if ((err = mp_to_unsigned_bin(b, bin_b)) != CRYPT_OK) { goto error; }
54-
if (len_b == 0) { len_b = 1; bin_b[0] = 0; } /* handle case b == 0 */
55-
56-
/* base point - (un)compressed based on flag_com */
57-
len_g = sizeof(bin_g);
58-
err = ltc_ecc_export_point(bin_g, &len_g, gx, gy, key->dp.size, flag_com);
59-
if (err != CRYPT_OK) { goto error; }
60-
61-
/* public key - (un)compressed based on flag_com */
62-
len_xy = sizeof(bin_xy);
63-
err = ltc_ecc_export_point(bin_xy, &len_xy, key->pubkey.x, key->pubkey.y, key->dp.size, flag_com);
64-
if (err != CRYPT_OK) { goto error; }
65-
66-
/* co-factor */
67-
cofactor = key->dp.cofactor;
68-
69-
/* we support only prime-field EC */
70-
if ((err = pk_get_oid(PKA_EC_PRIMEF, &OID)) != CRYPT_OK) { goto error; }
71-
7237
if (flag_oid) {
7338
/* http://tools.ietf.org/html/rfc5912
7439
ECParameters ::= CHOICE {
@@ -79,6 +44,34 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
7944
LTC_SET_ASN1(&ecparams, 0, LTC_ASN1_OBJECT_IDENTIFIER, key->dp.oid, key->dp.oidlen);
8045
}
8146
else {
47+
prime = key->dp.prime;
48+
order = key->dp.order;
49+
a = key->dp.A;
50+
b = key->dp.B;
51+
gx = key->dp.base.x;
52+
gy = key->dp.base.y;
53+
cofactor = key->dp.cofactor;
54+
55+
/* curve param a */
56+
len_a = mp_unsigned_bin_size(a);
57+
if (len_a > sizeof(bin_a)) { err = CRYPT_BUFFER_OVERFLOW; goto error; }
58+
if ((err = mp_to_unsigned_bin(a, bin_a)) != CRYPT_OK) { goto error; }
59+
if (len_a == 0) { len_a = 1; bin_a[0] = 0; } /* handle case a == 0 */
60+
61+
/* curve param b */
62+
len_b = mp_unsigned_bin_size(b);
63+
if (len_b > sizeof(bin_b)) { err = CRYPT_BUFFER_OVERFLOW; goto error; }
64+
if ((err = mp_to_unsigned_bin(b, bin_b)) != CRYPT_OK) { goto error; }
65+
if (len_b == 0) { len_b = 1; bin_b[0] = 0; } /* handle case b == 0 */
66+
67+
/* base point - (un)compressed based on flag_com */
68+
len_g = sizeof(bin_g);
69+
err = ltc_ecc_export_point(bin_g, &len_g, gx, gy, key->dp.size, flag_com);
70+
if (err != CRYPT_OK) { goto error; }
71+
72+
/* we support only prime-field EC */
73+
if ((err = pk_get_oid(PKA_EC_PRIMEF, &OID)) != CRYPT_OK) { goto error; }
74+
8275
/* http://tools.ietf.org/html/rfc3279
8376
ECParameters ::= SEQUENCE { # SEQUENCE
8477
version INTEGER { ecpVer1(1) } (ecpVer1) # INTEGER :01
@@ -122,7 +115,15 @@ int ecc_export_openssl(unsigned char *out, unsigned long *outlen, int type, cons
122115
LTC_SET_ASN1(&ecparams, 0, LTC_ASN1_SEQUENCE, seq_ecparams, 6UL);
123116
}
124117

118+
/* public key - (un)compressed based on flag_com */
119+
len_xy = sizeof(bin_xy);
120+
err = ltc_ecc_export_point(bin_xy, &len_xy, key->pubkey.x, key->pubkey.y, key->dp.size, flag_com);
121+
if (err != CRYPT_OK) {
122+
goto error;
123+
}
124+
125125
if (flag_pri) {
126+
126127
/* http://tools.ietf.org/html/rfc5915
127128
ECPrivateKey ::= SEQUENCE { # SEQUENCE
128129
version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1) # INTEGER :01

0 commit comments

Comments
 (0)