Skip to content

Commit cab7871

Browse files
committed
Fixing merge issues and recompiling test vectors
1 parent cfa240f commit cab7871

File tree

4 files changed

+34
-34
lines changed

4 files changed

+34
-34
lines changed

poc/opaque_ake.sage

+10-6
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class OPAQUE3DH(KeyExchange):
102102
def auth_client_start(self):
103103
self.client_nonce = self.rng.random_bytes(OPAQUE_NONCE_LENGTH)
104104
self.client_private_keyshare = self.config.group.random_scalar(self.rng)
105-
self.client_public_keyshare_bytes = self.config.group.scalar_mult(self.client_private_keyshare, self.config.group.generator())
105+
self.client_public_keyshare_bytes = self.config.group.serialize(self.config.group.scalar_mult(self.client_private_keyshare, self.config.group.generator()))
106106
return TripleDHMessageInit(self.client_nonce, self.client_public_keyshare_bytes)
107107

108108
def generate_ke1(self, password):
@@ -134,8 +134,8 @@ class OPAQUE3DH(KeyExchange):
134134

135135
def auth_server_respond(self, cred_request, cred_response, ke1, cleartext_credentials, server_private_key, client_public_key):
136136
self.server_nonce = self.rng.random_bytes(OPAQUE_NONCE_LENGTH)
137-
self.server_private_keyshare = ZZ(self.config.group.random_scalar(self.rng))
138-
self.server_public_keyshare = self.server_private_keyshare * self.config.group.generator()
137+
self.server_private_keyshare = self.config.group.random_scalar(self.rng)
138+
self.server_public_keyshare = self.config.group.scalar_mult(self.server_private_keyshare, self.config.group.generator())
139139
server_public_keyshare_bytes = self.config.group.serialize(self.server_public_keyshare)
140140
client_public_keyshare = self.config.group.deserialize(ke1.client_public_keyshare)
141141

@@ -200,11 +200,15 @@ class OPAQUE3DH(KeyExchange):
200200
cred_response, offset = deserialize_credential_response(self.config, msg)
201201
ake2 = deserialize_tripleDH_respond(self.config, msg[offset:])
202202
client_private_key_bytes, cleartext_credentials, export_key = self.core.recover_credentials(self.password, self.cred_metadata, cred_response, client_identity, server_identity)
203-
client_private_key = OS2IP(client_private_key_bytes)
204-
if "ristretto" in self.config.group.name or "decaf" in self.config.group.name:
203+
204+
if "curve25519" in self.config.group.name:
205+
client_private_key = client_private_key_bytes
206+
elif "ristretto" in self.config.group.name or "decaf" in self.config.group.name:
205207
client_private_key = OS2IP_le(client_private_key_bytes)
206-
self.export_key = export_key
208+
else:
209+
client_private_key = OS2IP(client_private_key_bytes)
207210

211+
self.export_key = export_key
208212
ke3 = self.auth_client_finalize(cred_response, ake2, cleartext_credentials, client_private_key, client_public_key)
209213

210214
return ke3.serialize()

poc/opaque_core.sage

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class OPAQUECore(object):
7373
client_identity = client_public_key_bytes
7474
return CleartextCredentials(server_public_key_bytes, client_identity, server_identity)
7575

76-
def create_envelope(self, randomized_password, server_public_key, client_identity, server_identity):
76+
def create_envelope(self, randomized_password, encoded_server_public_key, client_identity, server_identity):
7777
envelope_nonce = self.rng.random_bytes(OPAQUE_NONCE_LENGTH)
7878
Nh = self.config.hash().digest_size
7979
auth_key = self.config.kdf.expand(randomized_password, envelope_nonce + _as_bytes("AuthKey"), Nh)
@@ -85,7 +85,7 @@ class OPAQUECore(object):
8585
pk_bytes = self.config.group.serialize(client_public_key)
8686
encoded_client_public_key = self.config.group.serialize(client_public_key)
8787

88-
cleartext_credentials = self.create_cleartext_credentials(server_public_key, client_public_key, server_identity, client_identity)
88+
cleartext_credentials = self.create_cleartext_credentials(encoded_server_public_key, encoded_client_public_key, server_identity, client_identity)
8989
auth_tag = self.config.mac.mac(auth_key, envelope_nonce + cleartext_credentials.serialize())
9090
envelope = Envelope(envelope_nonce, auth_tag)
9191

poc/vectors/formatted.txt

+12-16
Original file line numberDiff line numberDiff line change
@@ -272,10 +272,8 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
272272
138e3d4a1
273273
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
274274
0cae6a6cc
275-
server_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25
276-
d477f7205026
277-
client_keyshare: 10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78a
278-
ffd80026c911
275+
server_public_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f
276+
4cb6c25d477f7205026
279277
server_private_keyshare: 00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b
280278
40a1e85ff80da12f986f
281279
client_private_keyshare: 80850a697b42a505f5b68fcdafce8c31f0af2b581f06
@@ -293,9 +291,9 @@ client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7
293291
e0cfe751142b48
294292
auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576
295293
4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c
296-
randomized_pwd: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844
297-
f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963
298-
fbb2e1
294+
randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa
295+
da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8
296+
f3963fbb2e1
299297
envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44
300298
d6e0b20c1e81fef28e92e897ca8287d49a55075b47c3988ff0fff367d79a3e350ccac
301299
150b4a3ff48b4770c8e84e437b3d4e68d2b95833f7788f7eb93fa6a8afb85ecb
@@ -391,10 +389,8 @@ server_nonce: 71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e
391389
138e3d4a1
392390
client_nonce: da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb38
393391
0cae6a6cc
394-
server_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25
395-
d477f7205026
396-
client_keyshare: 10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78a
397-
ffd80026c911
392+
server_public_keyshare: 41f55f0bef355cfb34ccd468fdacad75865ee7efef95f
393+
4cb6c25d477f7205026
398394
server_private_keyshare: 00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b
399395
40a1e85ff80da12f986f
400396
client_private_keyshare: 80850a697b42a505f5b68fcdafce8c31f0af2b581f06
@@ -412,9 +408,9 @@ client_public_key: 0936ea94ab030ec332e29050d266c520e916731a052d05ced7
412408
e0cfe751142b48
413409
auth_key: 7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d576
414410
4739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c
415-
randomized_pwd: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844
416-
f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963
417-
fbb2e1
411+
randomized_password: 3a602c295a9c323d9362fe286f104567ed6862b25dbe30fa
412+
da844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8
413+
f3963fbb2e1
418414
envelope: 40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44
419415
d6e0bb4c0eab6143959a650c5f6b32acf162b1fbe95bb36c5c4f99df53865c4d3537d
420416
69061d80522d772cd0efdbe91f817f6bf7259a56e20b4eb9cbe9443702f4b759
@@ -787,8 +783,8 @@ server_public_key: 78b3040047ff26572a7619617601a61b9c81899bee92f00cfc
787783
aa5eed96863555
788784
server_nonce: 1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813
789785
055ae2d12
790-
server_keyshare: 2d9055eb8f83e1b497370adad5cc2a417bf9be436a792def0c7b
791-
7ccb92b9e275
786+
server_public_keyshare: 2d9055eb8f83e1b497370adad5cc2a417bf9be436a792
787+
def0c7b7ccb92b9e275
792788
server_private_keyshare: 300b0937f47d45f6123a4d8f0d0c0814b6120d840ebb
793789
8bc5b4f6b62df07f7842
794790
masking_key: 79ad2621b0757a447dff7108a8ae20a068ce67872095620f415ea611

poc/vectors/vectors.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -136,19 +136,19 @@
136136
"inputs": {
137137
"blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308",
138138
"blind_registration": "c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee04baddb2034a70a",
139-
"client_keyshare": "10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911",
140139
"client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc",
141140
"client_private_keyshare": "80850a697b42a505f5b68fcdafce8c31f0af2b581f063cf1091933541936304b",
141+
"client_public_keyshare": "10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911",
142142
"credential_identifier": "31323334",
143143
"envelope_nonce": "40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44d6e0b",
144144
"masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d",
145145
"oprf_seed": "a78342ab84d3d30f08d5a9630c79bf311c31ed7f85d9d4959bf492ec67a0eec8a67dfbf4497248eebd49e878aab173e5e4ff76354288fdd53e949a5f7c9f7f1b",
146146
"password": "436f7272656374486f72736542617474657279537461706c65",
147-
"server_keyshare": "41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25d477f7205026",
148147
"server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1",
149148
"server_private_key": "c06139381df63bfc91c850db0b9cfbec7a62e86d80040a41aa7725bf0e79d564",
150149
"server_private_keyshare": "00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a1e85ff80da12f986f",
151-
"server_public_key": "a41e28269b4e97a66468cc00c5a57753e192e152766989770688aa90486ef031"
150+
"server_public_key": "a41e28269b4e97a66468cc00c5a57753e192e152766989770688aa90486ef031",
151+
"server_public_keyshare": "41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25d477f7205026"
152152
},
153153
"intermediates": {
154154
"auth_key": "7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d5764739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c",
@@ -158,7 +158,7 @@
158158
"handshake_secret": "6936d2b78f13d865997dd37c42c741dfe4c0297199e55d7f8891fa4771ed2357e990b44faec69733c607b7541442b5f27ea01513b4f0b84545e0ff7581ea7764",
159159
"masking_key": "6d23c6ed818882f9bdfdcf91389fcbc0b7a3faf92bd0bd6be4a1e7730277b694fc7c6ba327fbe786af18487688e0f7c148bbd54dc2fc80c28e7a976d9ef53c35",
160160
"oprf_key": "62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea146030a",
161-
"randomized_pwd": "3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963fbb2e1",
161+
"randomized_password": "3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963fbb2e1",
162162
"server_mac_key": "62a11be878ecfcbd7c8875e86a0f479befcb4b1742480c9ac2d2a5fa8d9e96c3bf60edb953ba15e32dc3e2cba60029c0c61481fdc7a80946f596b77fff6b18ee"
163163
},
164164
"outputs": {
@@ -194,20 +194,20 @@
194194
"blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308",
195195
"blind_registration": "c575731ffe1cb0ca5ba63b42c4699767b8b9ab78ba39316ee04baddb2034a70a",
196196
"client_identity": "616c696365",
197-
"client_keyshare": "10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911",
198197
"client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc",
199198
"client_private_keyshare": "80850a697b42a505f5b68fcdafce8c31f0af2b581f063cf1091933541936304b",
199+
"client_public_keyshare": "10a83b9117d3798cb2957fbdb0268a0d63dbf9d66bde5c00c78affd80026c911",
200200
"credential_identifier": "31323334",
201201
"envelope_nonce": "40d6b67fdd7da7c49894750754514dbd2070a407166bd2a5237cca9bf44d6e0b",
202202
"masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d",
203203
"oprf_seed": "a78342ab84d3d30f08d5a9630c79bf311c31ed7f85d9d4959bf492ec67a0eec8a67dfbf4497248eebd49e878aab173e5e4ff76354288fdd53e949a5f7c9f7f1b",
204204
"password": "436f7272656374486f72736542617474657279537461706c65",
205205
"server_identity": "626f62",
206-
"server_keyshare": "41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25d477f7205026",
207206
"server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1",
208207
"server_private_key": "c06139381df63bfc91c850db0b9cfbec7a62e86d80040a41aa7725bf0e79d564",
209208
"server_private_keyshare": "00a4f54206eef1ba2f615bc0aa285cb22f26d1153b5b40a1e85ff80da12f986f",
210-
"server_public_key": "a41e28269b4e97a66468cc00c5a57753e192e152766989770688aa90486ef031"
209+
"server_public_key": "a41e28269b4e97a66468cc00c5a57753e192e152766989770688aa90486ef031",
210+
"server_public_keyshare": "41f55f0bef355cfb34ccd468fdacad75865ee7efef95f4cb6c25d477f7205026"
211211
},
212212
"intermediates": {
213213
"auth_key": "7e880ab484f750e80e6f839d975aff476070ce65066d85ea62523d1d5764739d91307fac47186a4ab935e6a5c7f70cb47faa9473311947502c022cc67ae9440c",
@@ -217,7 +217,7 @@
217217
"handshake_secret": "f5b8fa77a67e638114899eca80c3549aa2c8e277a3412bccbe0a7e3943a5798d1e5ede2a847144759b17eb253f2f65efcccf82fe7b5f26e17175713dbe845786",
218218
"masking_key": "6d23c6ed818882f9bdfdcf91389fcbc0b7a3faf92bd0bd6be4a1e7730277b694fc7c6ba327fbe786af18487688e0f7c148bbd54dc2fc80c28e7a976d9ef53c35",
219219
"oprf_key": "62ef7f7d9506a14600c34f642aaf6ef8019cc82a6755db4fded5248ea146030a",
220-
"randomized_pwd": "3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963fbb2e1",
220+
"randomized_password": "3a602c295a9c323d9362fe286f104567ed6862b25dbe30fada844f19e41cf40047424b7118e15dc2c1a815a70fea5c8de6c30aa61440cd4b4b5e8f3963fbb2e1",
221221
"server_mac_key": "a8cdc5647342743be8ae6fc51e7105651b16bcb5fe4913834e7c2139dbc06d84c75215e7e84e1785f431c925844eb8c9c0d14959239422368166f41485e7847a"
222222
},
223223
"outputs": {
@@ -414,11 +414,11 @@
414414
"masking_nonce": "9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6",
415415
"oprf_seed": "66e650652a8266b2205f31fdd68adeb739a05b5e650b19e7edc75e734a1296d6088188ca46c31ae8ccbd42a52ed338c06e53645387a7efbc94b6a0449526155e",
416416
"server_identity": "626f62",
417-
"server_keyshare": "2d9055eb8f83e1b497370adad5cc2a417bf9be436a792def0c7b7ccb92b9e275",
418417
"server_nonce": "1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813055ae2d12",
419418
"server_private_key": "30fbe7e830be1fe8d2187c97414e3826040cbe49b893b64229bab5e85a588846",
420419
"server_private_keyshare": "300b0937f47d45f6123a4d8f0d0c0814b6120d840ebb8bc5b4f6b62df07f7842",
421-
"server_public_key": "78b3040047ff26572a7619617601a61b9c81899bee92f00cfcaa5eed96863555"
420+
"server_public_key": "78b3040047ff26572a7619617601a61b9c81899bee92f00cfcaa5eed96863555",
421+
"server_public_keyshare": "2d9055eb8f83e1b497370adad5cc2a417bf9be436a792def0c7b7ccb92b9e275"
422422
},
423423
"intermediates": {},
424424
"outputs": {

0 commit comments

Comments
 (0)