commit 0d490e46b9c35d850e7aef76bbbbcfd10cc99976
parent 1d77ece1388a859b39cde44ace057e9024723238
Author: Mikolai Gütschow <mikolai.guetschow@tu-dresden.de>
Date: Tue, 7 Apr 2026 16:51:24 +0200
protocol: minor fixups
Diffstat:
2 files changed, 180 insertions(+), 184 deletions(-)
diff --git a/draft-guetschow-taler-protocol.md b/draft-guetschow-taler-protocol.md
@@ -601,6 +601,7 @@ msg = Sign-Msg(MERCHANT_CONTRACT, h_contract)
check EdDSA-Verify(merchant.pub, msg, sig)
check contract.nonce == nonce
// TODO: double-check extra hash check?
+// todo: maybe get rid of CoinSelection altogether by claiming we already know coinᵢ and contributionᵢ
⟨selectionᵢ⟩ = CoinSelection(contract.{exchange,price}) TODO: include MarkDirty here
for i in 0..n:
(coinᵢ, denomᵢ, contributionᵢ) = selectionᵢ
@@ -772,8 +773,6 @@ where (for RSA, without age-restriction)
// todo: document ECDH-EdDSA(priv, pub) (returns hash512)
-// todo: double-check incompatibility between h_denom and hash of denom used below
-
{::comment}
// see TALER_EXCHANGE_get_melt_data
⟨batch_seedₖ⟩ // see TALER_refresh_expand_seed_to_kappa_batch_seeds
@@ -890,7 +889,6 @@ for k in 0..kappa and k != ɣ:
(E2) commitment validation (exchange)
(ɣ, ⟨blind_sigᵢ⟩, h_planchetsᵧ) = lookup refresh-record(commitment)
-// verify_commitment, for k != ɣ
for k in 0..kappa and k != ɣ:
⟨transferₖᵢ.priv⟩ = HKDF("refresh-transfer-private-keys", batch_seedₖ, "", n*32)
for i in 0..n:
@@ -903,7 +901,7 @@ for k in 0..kappa and k != ɣ:
planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub)
h_planchetₖᵢ = SHA-512( SHA-512( denomᵢ.pub ) | uint32(0x1) | planchetₖᵢ )
h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ )
-value = coin.denom.fee_refresh + sum( denomᵢ.value ) + sum( denomᵢ.fee_withdraw )
+value = coin.denom.fee_refresh + sum( ⟨denomᵢ.value⟩ ) + sum( ⟨denomᵢ.fee_withdraw⟩ )
commitment' = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value
| SHA-512( ⟨h_planchetsₖ⟩ ) )
check commitment == commitment'
diff --git a/draft-guetschow-taler-protocol.xml b/draft-guetschow-taler-protocol.xml
@@ -573,6 +573,7 @@ msg = Sign-Msg(MERCHANT_CONTRACT, h_contract)
check EdDSA-Verify(merchant.pub, msg, sig)
check contract.nonce == nonce
// TODO: double-check extra hash check?
+// todo: maybe get rid of CoinSelection altogether by claiming we already know coinᵢ and contributionᵢ
⟨selectionᵢ⟩ = CoinSelection(contract.{exchange,price}) TODO: include MarkDirty here
for i in 0..n:
(coinᵢ, denomᵢ, contributionᵢ) = selectionᵢ
@@ -729,7 +730,6 @@ knows coin |
]]></artwork>
<t>where (for RSA, without age-restriction)</t>
<t>// todo: document ECDH-EdDSA(priv, pub) (returns hash512)</t>
- <t>// todo: double-check incompatibility between h_denom and hash of denom used below</t>
<artwork><![CDATA[
(W1) coin melting (wallet)
@@ -809,7 +809,6 @@ for k in 0..kappa and k != ɣ:
(E2) commitment validation (exchange)
(ɣ, ⟨blind_sigᵢ⟩, h_planchetsᵧ) = lookup refresh-record(commitment)
-// verify_commitment, for k != ɣ
for k in 0..kappa and k != ɣ:
⟨transferₖᵢ.priv⟩ = HKDF("refresh-transfer-private-keys", batch_seedₖ, "", n*32)
for i in 0..n:
@@ -822,7 +821,7 @@ for k in 0..kappa and k != ɣ:
planchetₖᵢ = RSA-FDH-Blind(SHA-512(coinₖᵢ.pub), blind_secretₖᵢ, denomᵢ.pub)
h_planchetₖᵢ = SHA-512( SHA-512( denomᵢ.pub ) | uint32(0x1) | planchetₖᵢ )
h_planchetsₖ = SHA-512( ⟨h_planchetₖᵢ⟩ )
-value = coin.denom.fee_refresh + sum( denomᵢ.value ) + sum( denomᵢ.fee_withdraw )
+value = coin.denom.fee_refresh + sum( ⟨denomᵢ.value⟩ ) + sum( ⟨denomᵢ.fee_withdraw⟩ )
commitment' = SHA-512( refresh_seed | uint256(0x0) | coin.pub | value
| SHA-512( ⟨h_planchetsₖ⟩ ) )
check commitment == commitment'
@@ -943,7 +942,7 @@ for i in 0..n:
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent>
</reference>
</references>
- <?line 956?>
+ <?line 954?>
<section anchor="change-log">
<name>Change log</name>
@@ -956,182 +955,181 @@ Education and Research (BMBF) within the project Concrete Contracts.</t>
</section>
</back>
<!-- ##markdown-source:
-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
-t9oM5gRzgRkZUHpvzNnu84OT7tHur7p7Lw6PT8VaLCKer9bZniDm3qlDOyZE
-SdEYELRFEEVkxyyGSXjAjSmhuffoVMiyWa+UArLyo2hpkViyInsWN5uDbmBm
-AU1KZVNQmzU/761vnGWfb5a0fM/s15s1zUAMTaVmIHkXo3CTMT99nuUbxoDM
-7rvhOQTFbpgM0aIZz36oGNNOsv5vwRm31dwbEKqqeKUtS+63i2013HI6Ot+s
-2c17ZS2ZXZiQitc+LzYV+K0QmMViI4R0q0bW0pRO2qGj0uIqRG4y5qfPs3yj
-OBprKtvIig+qhBQ+RW6C/QzBGaYJpa21O8C2Gm4lHdcXU/tgU7LST5LMxfDc
-DfOQ8LNjVIHjXMvvDf7Z806/VmTlTdixYFqLzaluiUqyLSmbhUv14tbGLN9Y
-1SJvSdGgSGps9MQnp7t18tMYVUJ8CtE3rhCKnFL46GWOyhZOGyAVQIcdePun
-u84zPgM4u2aVzaMyjfnyiXT8HlWlEhWcmUZG1N0SiHNoM6pYmqaAz1Wh0MTF
-MF5V6DBaMUIyHbjUrTQacYigYpk75SVUCmwxuIPQm3YHIxWCGWZ27jkNC7AY
-zE900u5xyLcCmetSClxAwsf9rFgMwFwPQm9aDHLDGYsIAaxwyMrDxB+NKQiU
-EajICvRouIyqtrcEMzOykwpB4zWRcBTUmNDG9k5MHim0O/jV3tPd4ycHXcgT
-0q6iU5fyrCYkqYAZ7xIb6hAVZv2Ay7SaaCbY5UDsDDI0jaO+24dhqkmDgqbF
-aJUryYVJ0FHOC6vsYgPr1oOdXJ4KMBbKso8zbDUatE8LR4KH3ANToVaIZYLk
-1+rF1nW2IQ445CLjYHvH0/uUNuq07YIVKC66Nkd6s73VfitHVyFmGaS9vVUA
-yfpaaZ7w9GXWt83WOOa4q2JWY5ednEzLyPw28ToPb7M+NlauS7Quriqpvgxc
-cJW8OMX6XJfjbrFT1U1+YbZgBoatS8LRbA4cVc4V65Rg5fPpgo2vY8huwKPZ
-tzA97zBdA3i9+/z5wVn35OD04OSXB93Xh2dP9092X9fJTtqYt9qFwJ8MECYL
-iMvcU8jftE4QkCVsrJ4coVhESc8R94O2LluFKc99q9XkkofgOi0F6XADeC6K
-GcJAkuosd922yohAc9aiH4ysaT6vOYas7eOl8zyKzrOpnXeLFBEGQcNidiXU
-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
-vUga1v8DGlTYQrZ8AAA=
+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
-->