diff options
author | jsing <> | 2019-09-06 17:59:25 +0000 |
---|---|---|
committer | jsing <> | 2019-09-06 17:59:25 +0000 |
commit | 11474dfb0e4a1fb55d042fbfb4e2c68602f61508 (patch) | |
tree | 41fcc6b250b4f518c93bc01711ee02ee90e03002 /src/lib/libcrypto/ec/ec.h | |
parent | ad62fd73e219aceeb5b13e772228acd3f93d6b23 (diff) | |
download | openbsd-11474dfb0e4a1fb55d042fbfb4e2c68602f61508.tar.gz openbsd-11474dfb0e4a1fb55d042fbfb4e2c68602f61508.tar.bz2 openbsd-11474dfb0e4a1fb55d042fbfb4e2c68602f61508.zip |
Add various macros and controls for EC_PKEY_CTX.
These are needed for the upcoming EC CMS support (nothing else appears
to use them). This largely syncs our ec_pmeth.c with OpenSSL 1.1.1b.
With input from inoguchi@ and tb@.
ok inoguchi@ tb@
Diffstat (limited to 'src/lib/libcrypto/ec/ec.h')
-rw-r--r-- | src/lib/libcrypto/ec/ec.h | 100 |
1 files changed, 95 insertions, 5 deletions
diff --git a/src/lib/libcrypto/ec/ec.h b/src/lib/libcrypto/ec/ec.h index 1c5641eca0..d0e3673675 100644 --- a/src/lib/libcrypto/ec/ec.h +++ b/src/lib/libcrypto/ec/ec.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ec.h,v 1.16 2019/01/19 01:17:41 tb Exp $ */ | 1 | /* $OpenBSD: ec.h,v 1.17 2019/09/06 17:59:25 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Originally written by Bodo Moeller for the OpenSSL project. | 3 | * Originally written by Bodo Moeller for the OpenSSL project. |
4 | */ | 4 | */ |
@@ -97,7 +97,7 @@ extern "C" { | |||
97 | 97 | ||
98 | 98 | ||
99 | #ifndef OPENSSL_ECC_MAX_FIELD_BITS | 99 | #ifndef OPENSSL_ECC_MAX_FIELD_BITS |
100 | # define OPENSSL_ECC_MAX_FIELD_BITS 661 | 100 | #define OPENSSL_ECC_MAX_FIELD_BITS 661 |
101 | #endif | 101 | #endif |
102 | 102 | ||
103 | /** Enum for the point conversion form as defined in X9.62 (ECDSA) | 103 | /** Enum for the point conversion form as defined in X9.62 (ECDSA) |
@@ -714,6 +714,7 @@ typedef struct ec_key_method_st EC_KEY_METHOD; | |||
714 | /* some values for the flags field */ | 714 | /* some values for the flags field */ |
715 | #define EC_FLAG_NON_FIPS_ALLOW 0x1 | 715 | #define EC_FLAG_NON_FIPS_ALLOW 0x1 |
716 | #define EC_FLAG_FIPS_CHECKED 0x2 | 716 | #define EC_FLAG_FIPS_CHECKED 0x2 |
717 | #define EC_FLAG_COFACTOR_ECDH 0x1000 | ||
717 | 718 | ||
718 | /** Creates a new EC_KEY object. | 719 | /** Creates a new EC_KEY object. |
719 | * \return EC_KEY object or NULL if an error occurred. | 720 | * \return EC_KEY object or NULL if an error occurred. |
@@ -995,11 +996,96 @@ EC_KEY *ECParameters_dup(EC_KEY *key); | |||
995 | #endif | 996 | #endif |
996 | 997 | ||
997 | #define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ | 998 | #define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ |
998 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, EVP_PKEY_OP_PARAMGEN, \ | 999 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ |
999 | EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) | 1000 | EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ |
1000 | 1001 | EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) | |
1002 | |||
1003 | #define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ | ||
1004 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1005 | EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ | ||
1006 | EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) | ||
1007 | |||
1008 | #define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ | ||
1009 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1010 | EVP_PKEY_OP_DERIVE, \ | ||
1011 | EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) | ||
1012 | |||
1013 | #define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ | ||
1014 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1015 | EVP_PKEY_OP_DERIVE, \ | ||
1016 | EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) | ||
1017 | |||
1018 | #define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ | ||
1019 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1020 | EVP_PKEY_OP_DERIVE, \ | ||
1021 | EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) | ||
1022 | |||
1023 | #define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ | ||
1024 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1025 | EVP_PKEY_OP_DERIVE, \ | ||
1026 | EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) | ||
1027 | |||
1028 | #define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ | ||
1029 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1030 | EVP_PKEY_OP_DERIVE, \ | ||
1031 | EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) | ||
1032 | |||
1033 | #define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ | ||
1034 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1035 | EVP_PKEY_OP_DERIVE, \ | ||
1036 | EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) | ||
1037 | |||
1038 | #define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ | ||
1039 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1040 | EVP_PKEY_OP_DERIVE, \ | ||
1041 | EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) | ||
1042 | |||
1043 | #define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ | ||
1044 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1045 | EVP_PKEY_OP_DERIVE, \ | ||
1046 | EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ | ||
1047 | (void *)(plen)) | ||
1048 | |||
1049 | #define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ | ||
1050 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1051 | EVP_PKEY_OP_DERIVE, \ | ||
1052 | EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) | ||
1053 | |||
1054 | #define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ | ||
1055 | EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ | ||
1056 | EVP_PKEY_OP_DERIVE, \ | ||
1057 | EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) | ||
1058 | |||
1059 | /* SM2 will skip the operation check so no need to pass operation here */ | ||
1060 | #define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ | ||
1061 | EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ | ||
1062 | EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) | ||
1063 | |||
1064 | #define EVP_PKEY_CTX_get1_id(ctx, id) \ | ||
1065 | EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ | ||
1066 | EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) | ||
1067 | |||
1068 | #define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ | ||
1069 | EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ | ||
1070 | EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) | ||
1001 | 1071 | ||
1002 | #define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) | 1072 | #define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) |
1073 | #define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) | ||
1074 | #define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) | ||
1075 | #define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) | ||
1076 | #define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) | ||
1077 | #define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) | ||
1078 | #define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) | ||
1079 | #define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) | ||
1080 | #define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) | ||
1081 | #define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) | ||
1082 | #define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) | ||
1083 | #define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) | ||
1084 | #define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) | ||
1085 | |||
1086 | /* KDF types */ | ||
1087 | #define EVP_PKEY_ECDH_KDF_NONE 1 | ||
1088 | #define EVP_PKEY_ECDH_KDF_X9_63 2 | ||
1003 | 1089 | ||
1004 | /* BEGIN ERROR CODES */ | 1090 | /* BEGIN ERROR CODES */ |
1005 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 1091 | /* The following lines are auto generated by the script mkerr.pl. Any changes |
@@ -1172,6 +1258,7 @@ void ERR_load_EC_strings(void); | |||
1172 | #define EC_R_INVALID_COMPRESSED_POINT 110 | 1258 | #define EC_R_INVALID_COMPRESSED_POINT 110 |
1173 | #define EC_R_INVALID_COMPRESSION_BIT 109 | 1259 | #define EC_R_INVALID_COMPRESSION_BIT 109 |
1174 | #define EC_R_INVALID_CURVE 141 | 1260 | #define EC_R_INVALID_CURVE 141 |
1261 | #define EC_R_INVALID_DIGEST 151 | ||
1175 | #define EC_R_INVALID_DIGEST_TYPE 138 | 1262 | #define EC_R_INVALID_DIGEST_TYPE 138 |
1176 | #define EC_R_INVALID_ENCODING 102 | 1263 | #define EC_R_INVALID_ENCODING 102 |
1177 | #define EC_R_INVALID_FIELD 103 | 1264 | #define EC_R_INVALID_FIELD 103 |
@@ -1180,6 +1267,7 @@ void ERR_load_EC_strings(void); | |||
1180 | #define EC_R_INVALID_PENTANOMIAL_BASIS 132 | 1267 | #define EC_R_INVALID_PENTANOMIAL_BASIS 132 |
1181 | #define EC_R_INVALID_PRIVATE_KEY 123 | 1268 | #define EC_R_INVALID_PRIVATE_KEY 123 |
1182 | #define EC_R_INVALID_TRINOMIAL_BASIS 137 | 1269 | #define EC_R_INVALID_TRINOMIAL_BASIS 137 |
1270 | #define EC_R_KDF_PARAMETER_ERROR 148 | ||
1183 | #define EC_R_KEYS_NOT_SET 140 | 1271 | #define EC_R_KEYS_NOT_SET 140 |
1184 | #define EC_R_MISSING_PARAMETERS 124 | 1272 | #define EC_R_MISSING_PARAMETERS 124 |
1185 | #define EC_R_MISSING_PRIVATE_KEY 125 | 1273 | #define EC_R_MISSING_PRIVATE_KEY 125 |
@@ -1190,9 +1278,11 @@ void ERR_load_EC_strings(void); | |||
1190 | #define EC_R_NO_FIELD_MOD 133 | 1278 | #define EC_R_NO_FIELD_MOD 133 |
1191 | #define EC_R_NO_PARAMETERS_SET 139 | 1279 | #define EC_R_NO_PARAMETERS_SET 139 |
1192 | #define EC_R_PASSED_NULL_PARAMETER 134 | 1280 | #define EC_R_PASSED_NULL_PARAMETER 134 |
1281 | #define EC_R_PEER_KEY_ERROR 149 | ||
1193 | #define EC_R_PKPARAMETERS2GROUP_FAILURE 127 | 1282 | #define EC_R_PKPARAMETERS2GROUP_FAILURE 127 |
1194 | #define EC_R_POINT_AT_INFINITY 106 | 1283 | #define EC_R_POINT_AT_INFINITY 106 |
1195 | #define EC_R_POINT_IS_NOT_ON_CURVE 107 | 1284 | #define EC_R_POINT_IS_NOT_ON_CURVE 107 |
1285 | #define EC_R_SHARED_INFO_ERROR 150 | ||
1196 | #define EC_R_SLOT_FULL 108 | 1286 | #define EC_R_SLOT_FULL 108 |
1197 | #define EC_R_UNDEFINED_GENERATOR 113 | 1287 | #define EC_R_UNDEFINED_GENERATOR 113 |
1198 | #define EC_R_UNDEFINED_ORDER 128 | 1288 | #define EC_R_UNDEFINED_ORDER 128 |