diff options
Diffstat (limited to '')
| -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 |
