From 54b9ee088b89c23607fa90c546b8bd0a94efc8e0 Mon Sep 17 00:00:00 2001
From: Bogdan Opanchuk <bogdan@opanchuk.net>
Date: Sun, 18 Apr 2021 22:35:09 -0700
Subject: [PATCH] Change the order of parameters in CapsuleFrag.verify() to
 match that of KeyFrag.verify()

---
 docs/examples/umbral_simple_api.py       |  3 +-
 docs/notebooks/pyUmbral Simple API.ipynb |  4 +--
 docs/source/using_pyumbral.rst           |  4 +--
 tests/test_capsule_frag.py               | 46 ++++++++++++++----------
 tests/test_compatibility.py              |  6 +++-
 tests/test_pre.py                        |  3 +-
 umbral/capsule_frag.py                   |  2 +-
 7 files changed, 42 insertions(+), 26 deletions(-)

diff --git a/docs/examples/umbral_simple_api.py b/docs/examples/umbral_simple_api.py
index 23c499a..55dfdda 100644
--- a/docs/examples/umbral_simple_api.py
+++ b/docs/examples/umbral_simple_api.py
@@ -90,9 +90,10 @@ assert len(cfrags) == 10
 # using Alice's public keys.
 
 assert all(cfrag.verify(capsule,
+                        verifying_pk=alices_verifying_key,
                         delegating_pk=alices_public_key,
                         receiving_pk=bobs_public_key,
-                        verifying_pk=alices_verifying_key)
+                        )
            for cfrag in cfrags)
 
 # Bob opens the capsule
diff --git a/docs/notebooks/pyUmbral Simple API.ipynb b/docs/notebooks/pyUmbral Simple API.ipynb
index fd16c85..6c361be 100644
--- a/docs/notebooks/pyUmbral Simple API.ipynb	
+++ b/docs/notebooks/pyUmbral Simple API.ipynb	
@@ -231,9 +231,9 @@
    "outputs": [],
    "source": [
     "assert all(cfrag.verify(capsule,\n",
+    "                        verifying_pk=alices_verifying_key,\n",
     "                        delegating_pk=alices_public_key,\n",
-    "                        receiving_pk=bobs_public_key,\n",
-    "                        verifying_pk=alices_verifying_key)\n",
+    "                        receiving_pk=bobs_public_key)\n",
     "           for cfrag in cfrags)"
    ]
   },
diff --git a/docs/source/using_pyumbral.rst b/docs/source/using_pyumbral.rst
index a00b899..4bb865c 100644
--- a/docs/source/using_pyumbral.rst
+++ b/docs/source/using_pyumbral.rst
@@ -179,9 +179,9 @@ using Alice's public keys.
 .. doctest:: capsule_story
 
     >>> all(cfrag.verify(capsule,
+    ...                  verifying_pk=alices_verifying_key,
     ...                  delegating_pk=alices_public_key,
-    ...                  receiving_pk=bobs_public_key,
-    ...                  verifying_pk=alices_verifying_key)
+    ...                  receiving_pk=bobs_public_key)
     ...     for cfrag in cfrags)
     True
 
diff --git a/tests/test_capsule_frag.py b/tests/test_capsule_frag.py
index 103df8b..ed79a0f 100644
--- a/tests/test_capsule_frag.py
+++ b/tests/test_capsule_frag.py
@@ -19,44 +19,50 @@ def test_cfrag_serialization(alices_keys, bobs_keys, capsule, kfrags):
         assert new_cfrag == cfrag
 
         assert new_cfrag.verify(capsule,
+                                verifying_pk=verifying_pk,
                                 delegating_pk=delegating_pk,
                                 receiving_pk=receiving_pk,
-                                verifying_pk=verifying_pk,
-                                metadata=metadata)
+                                metadata=metadata,
+                                )
 
         # No metadata
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=verifying_pk,
                                     delegating_pk=delegating_pk,
                                     receiving_pk=receiving_pk,
-                                    verifying_pk=verifying_pk)
+                                    )
 
         # Wrong metadata
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=verifying_pk,
                                     delegating_pk=delegating_pk,
                                     receiving_pk=receiving_pk,
-                                    verifying_pk=verifying_pk,
-                                    metadata=b'Not the same metadata')
+                                    metadata=b'Not the same metadata',
+                                    )
 
         # Wrong delegating key
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=verifying_pk,
                                     delegating_pk=receiving_pk,
                                     receiving_pk=receiving_pk,
-                                    verifying_pk=verifying_pk,
-                                    metadata=metadata)
+                                    metadata=metadata,
+                                    )
 
         # Wrong receiving key
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=verifying_pk,
                                     delegating_pk=delegating_pk,
                                     receiving_pk=delegating_pk,
-                                    verifying_pk=verifying_pk,
-                                    metadata=metadata)
+                                    metadata=metadata,
+                                    )
 
         # Wrong signing key
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=receiving_pk,
                                     delegating_pk=delegating_pk,
                                     receiving_pk=receiving_pk,
-                                    verifying_pk=receiving_pk,
-                                    metadata=metadata)
+                                    metadata=metadata,
+                                    )
 
 
 def test_cfrag_serialization_no_metadata(alices_keys, bobs_keys, capsule, kfrags):
@@ -75,15 +81,17 @@ def test_cfrag_serialization_no_metadata(alices_keys, bobs_keys, capsule, kfrags
         new_cfrag = CapsuleFrag.from_bytes(cfrag_bytes)
 
         assert new_cfrag.verify(capsule,
+                                verifying_pk=verifying_pk,
                                 delegating_pk=delegating_pk,
                                 receiving_pk=receiving_pk,
-                                verifying_pk=verifying_pk)
+                                )
 
         assert not new_cfrag.verify(capsule,
+                                    verifying_pk=verifying_pk,
                                     delegating_pk=delegating_pk,
                                     receiving_pk=receiving_pk,
-                                    verifying_pk=verifying_pk,
-                                    metadata=b'some metadata')
+                                    metadata=b'some metadata',
+                                    )
 
 
 def test_cfrag_with_wrong_capsule(alices_keys, bobs_keys,
@@ -103,10 +111,11 @@ def test_cfrag_with_wrong_capsule(alices_keys, bobs_keys,
     cfrag = reencrypt(capsule_alice2, kfrags[0], metadata=metadata)
 
     assert not cfrag.verify(capsule_alice1,
+                            verifying_pk=PublicKey.from_secret_key(signing_sk),
                             delegating_pk=delegating_pk,
                             receiving_pk=receiving_pk,
-                            verifying_pk=PublicKey.from_secret_key(signing_sk),
-                            metadata=metadata)
+                            metadata=metadata,
+                            )
 
 
 def test_cfrag_with_wrong_data(kfrags, alices_keys, bobs_keys, capsule_and_ciphertext, message):
@@ -126,10 +135,11 @@ def test_cfrag_with_wrong_data(kfrags, alices_keys, bobs_keys, capsule_and_ciphe
     cfrag.point_v1 = CurvePoint.random()
 
     assert not cfrag.verify(capsule,
+                            verifying_pk=PublicKey.from_secret_key(signing_sk),
                             delegating_pk=delegating_pk,
                             receiving_pk=receiving_pk,
-                            verifying_pk=PublicKey.from_secret_key(signing_sk),
-                            metadata=metadata)
+                            metadata=metadata,
+                            )
 
 
 def test_cfrag_is_hashable(capsule, kfrags):
diff --git a/tests/test_compatibility.py b/tests/test_compatibility.py
index c3a03be..befdb97 100644
--- a/tests/test_compatibility.py
+++ b/tests/test_compatibility.py
@@ -160,7 +160,11 @@ def _decrypt_reencrypted(umbral, receiving_sk_bytes, delegating_pk_bytes, verify
     capsule = umbral.Capsule.from_bytes(bytes(capsule_bytes))
     cfrags = [umbral.CapsuleFrag.from_bytes(cfrag_bytes) for cfrag_bytes in cfrags_bytes]
 
-    assert all(cfrag.verify(capsule, delegating_pk, receiving_pk, verifying_pk, metadata=metadata)
+    assert all(cfrag.verify(capsule,
+                            verifying_pk=verifying_pk,
+                            delegating_pk=delegating_pk,
+                            receiving_pk=receiving_pk,
+                            metadata=metadata)
                for cfrag in cfrags)
 
     # Decryption by Bob
diff --git a/tests/test_pre.py b/tests/test_pre.py
index 6306cd1..1524f18 100644
--- a/tests/test_pre.py
+++ b/tests/test_pre.py
@@ -91,9 +91,10 @@ def test_simple_api(num_kfrags, threshold):
 
     # Bob checks that the received cfrags are valid
     assert all(cfrag.verify(capsule=capsule,
+                            verifying_pk=verifying_pk,
                             delegating_pk=delegating_pk,
                             receiving_pk=receiving_pk,
-                            verifying_pk=verifying_pk) for cfrag in cfrags)
+                            ) for cfrag in cfrags)
 
     # Decryption by Bob
     plaintext_reenc = decrypt_reencrypted(receiving_sk,
diff --git a/umbral/capsule_frag.py b/umbral/capsule_frag.py
index ffee0ef..a41bf9b 100644
--- a/umbral/capsule_frag.py
+++ b/umbral/capsule_frag.py
@@ -159,9 +159,9 @@ class CapsuleFrag(Serializable):
 
     def verify(self,
                capsule: Capsule,
+               verifying_pk: PublicKey,
                delegating_pk: PublicKey,
                receiving_pk: PublicKey,
-               verifying_pk: PublicKey,
                metadata: Optional[bytes] = None,
                ) -> bool:
         """