summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbeck <>2025-05-19 07:40:17 +0000
committerbeck <>2025-05-19 07:40:17 +0000
commit574636afc34a257a07ceb9fe84b926fa3c45fd04 (patch)
tree715878fc48113b4751df3a59ad0a47125d6fb6db /src
parent5a25995ae14e36a5cea71734d202bac849f02727 (diff)
downloadopenbsd-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.c40
-rw-r--r--src/lib/libcrypto/mlkem/mlkem768.c40
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)))