diff options
author | beck <> | 2025-05-19 07:40:17 +0000 |
---|---|---|
committer | beck <> | 2025-05-19 07:40:17 +0000 |
commit | 574636afc34a257a07ceb9fe84b926fa3c45fd04 (patch) | |
tree | 715878fc48113b4751df3a59ad0a47125d6fb6db /src | |
parent | 5a25995ae14e36a5cea71734d202bac849f02727 (diff) | |
download | openbsd-574636afc34a257a07ceb9fe84b926fa3c45fd04.tar.gz openbsd-574636afc34a257a07ceb9fe84b926fa3c45fd04.tar.bz2 openbsd-574636afc34a257a07ceb9fe84b926fa3c45fd04.zip |
Remove the boringssl if || ideom from mlkem
ok jsing@, joshua@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/mlkem/mlkem1024.c | 40 | ||||
-rw-r--r-- | src/lib/libcrypto/mlkem/mlkem768.c | 40 |
2 files changed, 46 insertions, 34 deletions
diff --git a/src/lib/libcrypto/mlkem/mlkem1024.c b/src/lib/libcrypto/mlkem/mlkem1024.c index 04e106299a..27e34898d1 100644 --- a/src/lib/libcrypto/mlkem/mlkem1024.c +++ b/src/lib/libcrypto/mlkem/mlkem1024.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: mlkem1024.c,v 1.8 2025/05/19 06:47:40 beck Exp $ */ | 1 | /* $OpenBSD: mlkem1024.c,v 1.9 2025/05/19 07:40:17 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2024, Google Inc. | 3 | * Copyright (c) 2024, Google Inc. |
4 | * Copyright (c) 2024, Bob Beck <beck@obtuse.com> | 4 | * Copyright (c) 2024, Bob Beck <beck@obtuse.com> |
@@ -1088,10 +1088,11 @@ mlkem_parse_public_key_no_hash(struct public_key *pub, CBS *in) | |||
1088 | { | 1088 | { |
1089 | CBS t_bytes; | 1089 | CBS t_bytes; |
1090 | 1090 | ||
1091 | if (!CBS_get_bytes(in, &t_bytes, kEncodedVectorSize) || | 1091 | if (!CBS_get_bytes(in, &t_bytes, kEncodedVectorSize)) |
1092 | !vector_decode(&pub->t, CBS_data(&t_bytes), kLog2Prime)) { | ||
1093 | return 0; | 1092 | return 0; |
1094 | } | 1093 | if (!vector_decode(&pub->t, CBS_data(&t_bytes), kLog2Prime)) |
1094 | return 0; | ||
1095 | |||
1095 | memcpy(pub->rho, CBS_data(in), sizeof(pub->rho)); | 1096 | memcpy(pub->rho, CBS_data(in), sizeof(pub->rho)); |
1096 | if (!CBS_skip(in, sizeof(pub->rho))) | 1097 | if (!CBS_skip(in, sizeof(pub->rho))) |
1097 | return 0; | 1098 | return 0; |
@@ -1107,10 +1108,11 @@ MLKEM1024_parse_public_key(struct MLKEM1024_public_key *public_key, | |||
1107 | CBS cbs; | 1108 | CBS cbs; |
1108 | 1109 | ||
1109 | CBS_init(&cbs, input, input_len); | 1110 | CBS_init(&cbs, input, input_len); |
1110 | if (!mlkem_parse_public_key_no_hash(pub, &cbs) || | 1111 | if (!mlkem_parse_public_key_no_hash(pub, &cbs)) |
1111 | CBS_len(&cbs) != 0) { | ||
1112 | return 0; | 1112 | return 0; |
1113 | } | 1113 | if (CBS_len(&cbs) != 0) |
1114 | return 0; | ||
1115 | |||
1114 | hash_h(pub->public_key_hash, input, input_len); | 1116 | hash_h(pub->public_key_hash, input, input_len); |
1115 | 1117 | ||
1116 | return 1; | 1118 | return 1; |
@@ -1129,13 +1131,15 @@ MLKEM1024_marshal_private_key(CBB *out, | |||
1129 | return 0; | 1131 | return 0; |
1130 | } | 1132 | } |
1131 | vector_encode(s_output, &priv->s, kLog2Prime); | 1133 | vector_encode(s_output, &priv->s, kLog2Prime); |
1132 | if (!mlkem_marshal_public_key(out, &priv->pub) || | 1134 | if (!mlkem_marshal_public_key(out, &priv->pub)) |
1133 | !CBB_add_bytes(out, priv->pub.public_key_hash, | ||
1134 | sizeof(priv->pub.public_key_hash)) || | ||
1135 | !CBB_add_bytes(out, priv->fo_failure_secret, | ||
1136 | sizeof(priv->fo_failure_secret))) { | ||
1137 | return 0; | 1135 | return 0; |
1138 | } | 1136 | if (!CBB_add_bytes(out, priv->pub.public_key_hash, |
1137 | sizeof(priv->pub.public_key_hash))) | ||
1138 | return 0; | ||
1139 | if (!CBB_add_bytes(out, priv->fo_failure_secret, | ||
1140 | sizeof(priv->fo_failure_secret))) | ||
1141 | return 0; | ||
1142 | |||
1139 | return 1; | 1143 | return 1; |
1140 | } | 1144 | } |
1141 | 1145 | ||
@@ -1149,11 +1153,13 @@ MLKEM1024_parse_private_key(struct MLKEM1024_private_key *out_private_key, | |||
1149 | 1153 | ||
1150 | CBS_init(&cbs, input, input_len); | 1154 | CBS_init(&cbs, input, input_len); |
1151 | 1155 | ||
1152 | if (!CBS_get_bytes(&cbs, &s_bytes, kEncodedVectorSize) || | 1156 | if (!CBS_get_bytes(&cbs, &s_bytes, kEncodedVectorSize)) |
1153 | !vector_decode(&priv->s, CBS_data(&s_bytes), kLog2Prime) || | ||
1154 | !mlkem_parse_public_key_no_hash(&priv->pub, &cbs)) { | ||
1155 | return 0; | 1157 | return 0; |
1156 | } | 1158 | if (!vector_decode(&priv->s, CBS_data(&s_bytes), kLog2Prime)) |
1159 | return 0; | ||
1160 | if (!mlkem_parse_public_key_no_hash(&priv->pub, &cbs)) | ||
1161 | return 0; | ||
1162 | |||
1157 | memcpy(priv->pub.public_key_hash, CBS_data(&cbs), | 1163 | memcpy(priv->pub.public_key_hash, CBS_data(&cbs), |
1158 | sizeof(priv->pub.public_key_hash)); | 1164 | sizeof(priv->pub.public_key_hash)); |
1159 | if (!CBS_skip(&cbs, sizeof(priv->pub.public_key_hash))) | 1165 | if (!CBS_skip(&cbs, sizeof(priv->pub.public_key_hash))) |
diff --git a/src/lib/libcrypto/mlkem/mlkem768.c b/src/lib/libcrypto/mlkem/mlkem768.c index a76971778c..b20545defc 100644 --- a/src/lib/libcrypto/mlkem/mlkem768.c +++ b/src/lib/libcrypto/mlkem/mlkem768.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: mlkem768.c,v 1.9 2025/05/19 06:47:40 beck Exp $ */ | 1 | /* $OpenBSD: mlkem768.c,v 1.10 2025/05/19 07:40:17 beck Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2024, Google Inc. | 3 | * Copyright (c) 2024, Google Inc. |
4 | * Copyright (c) 2024, Bob Beck <beck@obtuse.com> | 4 | * Copyright (c) 2024, Bob Beck <beck@obtuse.com> |
@@ -1085,10 +1085,11 @@ mlkem_parse_public_key_no_hash(struct public_key *pub, CBS *in) | |||
1085 | { | 1085 | { |
1086 | CBS t_bytes; | 1086 | CBS t_bytes; |
1087 | 1087 | ||
1088 | if (!CBS_get_bytes(in, &t_bytes, kEncodedVectorSize) || | 1088 | if (!CBS_get_bytes(in, &t_bytes, kEncodedVectorSize)) |
1089 | !vector_decode(&pub->t, CBS_data(&t_bytes), kLog2Prime)) { | ||
1090 | return 0; | 1089 | return 0; |
1091 | } | 1090 | if (!vector_decode(&pub->t, CBS_data(&t_bytes), kLog2Prime)) |
1091 | return 0; | ||
1092 | |||
1092 | memcpy(pub->rho, CBS_data(in), sizeof(pub->rho)); | 1093 | memcpy(pub->rho, CBS_data(in), sizeof(pub->rho)); |
1093 | if (!CBS_skip(in, sizeof(pub->rho))) | 1094 | if (!CBS_skip(in, sizeof(pub->rho))) |
1094 | return 0; | 1095 | return 0; |
@@ -1104,10 +1105,11 @@ MLKEM768_parse_public_key(struct MLKEM768_public_key *public_key, | |||
1104 | CBS cbs; | 1105 | CBS cbs; |
1105 | 1106 | ||
1106 | CBS_init(&cbs, input, input_len); | 1107 | CBS_init(&cbs, input, input_len); |
1107 | if (!mlkem_parse_public_key_no_hash(pub, &cbs) || | 1108 | if (!mlkem_parse_public_key_no_hash(pub, &cbs)) |
1108 | CBS_len(&cbs) != 0) { | ||
1109 | return 0; | 1109 | return 0; |
1110 | } | 1110 | if (CBS_len(&cbs) != 0) |
1111 | return 0; | ||
1112 | |||
1111 | hash_h(pub->public_key_hash, input, input_len); | 1113 | hash_h(pub->public_key_hash, input, input_len); |
1112 | 1114 | ||
1113 | return 1; | 1115 | return 1; |
@@ -1126,13 +1128,15 @@ MLKEM768_marshal_private_key(CBB *out, | |||
1126 | return 0; | 1128 | return 0; |
1127 | } | 1129 | } |
1128 | vector_encode(s_output, &priv->s, kLog2Prime); | 1130 | vector_encode(s_output, &priv->s, kLog2Prime); |
1129 | if (!mlkem_marshal_public_key(out, &priv->pub) || | 1131 | if (!mlkem_marshal_public_key(out, &priv->pub)) |
1130 | !CBB_add_bytes(out, priv->pub.public_key_hash, | ||
1131 | sizeof(priv->pub.public_key_hash)) || | ||
1132 | !CBB_add_bytes(out, priv->fo_failure_secret, | ||
1133 | sizeof(priv->fo_failure_secret))) { | ||
1134 | return 0; | 1132 | return 0; |
1135 | } | 1133 | if (!CBB_add_bytes(out, priv->pub.public_key_hash, |
1134 | sizeof(priv->pub.public_key_hash))) | ||
1135 | return 0; | ||
1136 | if (!CBB_add_bytes(out, priv->fo_failure_secret, | ||
1137 | sizeof(priv->fo_failure_secret))) | ||
1138 | return 0; | ||
1139 | |||
1136 | return 1; | 1140 | return 1; |
1137 | } | 1141 | } |
1138 | 1142 | ||
@@ -1146,11 +1150,13 @@ MLKEM768_parse_private_key(struct MLKEM768_private_key *out_private_key, | |||
1146 | 1150 | ||
1147 | CBS_init(&cbs, input, input_len); | 1151 | CBS_init(&cbs, input, input_len); |
1148 | 1152 | ||
1149 | if (!CBS_get_bytes(&cbs, &s_bytes, kEncodedVectorSize) || | 1153 | if (!CBS_get_bytes(&cbs, &s_bytes, kEncodedVectorSize)) |
1150 | !vector_decode(&priv->s, CBS_data(&s_bytes), kLog2Prime) || | ||
1151 | !mlkem_parse_public_key_no_hash(&priv->pub, &cbs)) { | ||
1152 | return 0; | 1154 | return 0; |
1153 | } | 1155 | if (!vector_decode(&priv->s, CBS_data(&s_bytes), kLog2Prime)) |
1156 | return 0; | ||
1157 | if (!mlkem_parse_public_key_no_hash(&priv->pub, &cbs)) | ||
1158 | return 0; | ||
1159 | |||
1154 | memcpy(priv->pub.public_key_hash, CBS_data(&cbs), | 1160 | memcpy(priv->pub.public_key_hash, CBS_data(&cbs), |
1155 | sizeof(priv->pub.public_key_hash)); | 1161 | sizeof(priv->pub.public_key_hash)); |
1156 | if (!CBS_skip(&cbs, sizeof(priv->pub.public_key_hash))) | 1162 | if (!CBS_skip(&cbs, sizeof(priv->pub.public_key_hash))) |