@@ -312,7 +312,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
312312 {.account = alice,
313313 .amt = 10 ,
314314 .holderPubKey = mptAlice.getPubKey (bob),
315- .blindingFactor = Buffer (10 ),
315+ .blindingFactor = makeZeroBuffer (10 ),
316316 .err = temMALFORMED});
317317
318318 // Holder encrypted amount is empty (length 0)
@@ -336,7 +336,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
336336 {.account = bob,
337337 .amt = 10 ,
338338 .holderPubKey = mptAlice.getPubKey (bob),
339- .auditorEncryptedAmt = Buffer (10 ),
339+ .auditorEncryptedAmt = makeZeroBuffer (10 ),
340340 .err = temBAD_CIPHERTEXT});
341341
342342 // Auditor encrypted amount has correct length but invalid data
@@ -375,7 +375,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
375375 mptAlice.convert ({.account = bob, .amt = 10 , .holderPubKey = Buffer{}, .err = temMALFORMED});
376376
377377 // Holder public key has correct length but invalid EC point data
378- mptAlice.convert ({.account = bob, .amt = 10 , .holderPubKey = Buffer (ecPubKeyLength), .err = temMALFORMED});
378+ mptAlice.convert (
379+ {.account = bob, .amt = 10 , .holderPubKey = makeZeroBuffer (ecPubKeyLength), .err = temMALFORMED});
379380 }
380381
381382 // when registering holder pub key, the transaction must include a
@@ -492,20 +493,20 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
492493 mptAlice.set ({.account = alice, .issuerPubKey = Buffer{}, .err = temMALFORMED});
493494
494495 // Issuer pub key has correct length but invalid EC point data
495- mptAlice.set ({.account = alice, .issuerPubKey = Buffer (ecPubKeyLength), .err = temMALFORMED});
496+ mptAlice.set ({.account = alice, .issuerPubKey = makeZeroBuffer (ecPubKeyLength), .err = temMALFORMED});
496497
497498 // Auditor key is invalid length
498499 mptAlice.set (
499500 {.account = alice,
500501 .issuerPubKey = mptAlice.getPubKey (alice),
501- .auditorPubKey = Buffer (10 ),
502+ .auditorPubKey = makeZeroBuffer (10 ),
502503 .err = temMALFORMED});
503504
504505 // Auditor key has correct length but invalid EC point data
505506 mptAlice.set (
506507 {.account = alice,
507508 .issuerPubKey = mptAlice.getPubKey (alice),
508- .auditorPubKey = Buffer (ecPubKeyLength),
509+ .auditorPubKey = makeZeroBuffer (ecPubKeyLength),
509510 .err = temMALFORMED});
510511
511512 // Cannot set auditor key without issuer key
@@ -1185,9 +1186,9 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
11851186 {.account = bob,
11861187 .dest = carol,
11871188 .amt = 10 ,
1188- .senderEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1189- .destEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1190- .issuerEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1189+ .senderEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
1190+ .destEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
1191+ .issuerEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
11911192 .err = temDISABLED});
11921193 }
11931194
@@ -1230,21 +1231,33 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
12301231
12311232 // sender encrypted amount wrong length
12321233 mptAlice.send (
1233- {.account = bob, .dest = carol, .amt = 10 , .senderEncryptedAmt = Buffer (10 ), .err = temBAD_CIPHERTEXT});
1234+ {.account = bob,
1235+ .dest = carol,
1236+ .amt = 10 ,
1237+ .senderEncryptedAmt = makeZeroBuffer (10 ),
1238+ .err = temBAD_CIPHERTEXT});
12341239 // dest encrypted amount wrong length
12351240 mptAlice.send (
1236- {.account = bob, .dest = carol, .amt = 10 , .destEncryptedAmt = Buffer (10 ), .err = temBAD_CIPHERTEXT});
1241+ {.account = bob,
1242+ .dest = carol,
1243+ .amt = 10 ,
1244+ .destEncryptedAmt = makeZeroBuffer (10 ),
1245+ .err = temBAD_CIPHERTEXT});
12371246 // issuer encrypted amount wrong length
12381247 mptAlice.send (
1239- {.account = bob, .dest = carol, .amt = 10 , .issuerEncryptedAmt = Buffer (10 ), .err = temBAD_CIPHERTEXT});
1248+ {.account = bob,
1249+ .dest = carol,
1250+ .amt = 10 ,
1251+ .issuerEncryptedAmt = makeZeroBuffer (10 ),
1252+ .err = temBAD_CIPHERTEXT});
12401253
12411254 // sender encrypted amount malformed
12421255 mptAlice.send (
12431256 {.account = bob,
12441257 .dest = carol,
12451258 .amt = 10 ,
12461259 .proof = getTrivialSendProofHex (3 ),
1247- .senderEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1260+ .senderEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
12481261 .amountCommitment = getTrivialCommitment (),
12491262 .balanceCommitment = getTrivialCommitment (),
12501263 .err = temBAD_CIPHERTEXT});
@@ -1254,7 +1267,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
12541267 .dest = carol,
12551268 .amt = 10 ,
12561269 .proof = getTrivialSendProofHex (3 ),
1257- .destEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1270+ .destEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
12581271 .amountCommitment = getTrivialCommitment (),
12591272 .balanceCommitment = getTrivialCommitment (),
12601273 .err = temBAD_CIPHERTEXT});
@@ -1264,7 +1277,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
12641277 .dest = carol,
12651278 .amt = 10 ,
12661279 .proof = getTrivialSendProofHex (3 ),
1267- .issuerEncryptedAmt = Buffer (ecGamalEncryptedTotalLength),
1280+ .issuerEncryptedAmt = makeZeroBuffer (ecGamalEncryptedTotalLength),
12681281 .amountCommitment = getTrivialCommitment (),
12691282 .balanceCommitment = getTrivialCommitment (),
12701283 .err = temBAD_CIPHERTEXT});
@@ -1285,7 +1298,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
12851298 .dest = carol,
12861299 .amt = 10 ,
12871300 .proof = getTrivialSendProofHex (3 ),
1288- .amountCommitment = Buffer (100 ),
1301+ .amountCommitment = makeZeroBuffer (100 ),
12891302 .balanceCommitment = getTrivialCommitment (),
12901303 .err = temMALFORMED});
12911304
@@ -1296,7 +1309,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
12961309 .amt = 10 ,
12971310 .proof = getTrivialSendProofHex (3 ),
12981311 .amountCommitment = getTrivialCommitment (),
1299- .balanceCommitment = Buffer (100 ),
1312+ .balanceCommitment = makeZeroBuffer (100 ),
13001313 .err = temMALFORMED});
13011314
13021315 // amount Pedersen commitment has correct length but invalid EC point data
@@ -1305,7 +1318,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
13051318 .dest = carol,
13061319 .amt = 10 ,
13071320 .proof = getTrivialSendProofHex (3 ),
1308- .amountCommitment = Buffer (ecPedersenCommitmentLength),
1321+ .amountCommitment = makeZeroBuffer (ecPedersenCommitmentLength),
13091322 .balanceCommitment = getTrivialCommitment (),
13101323 .err = temMALFORMED});
13111324
@@ -1316,7 +1329,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
13161329 .amt = 10 ,
13171330 .proof = getTrivialSendProofHex (3 ),
13181331 .amountCommitment = getTrivialCommitment (),
1319- .balanceCommitment = Buffer (ecPedersenCommitmentLength),
1332+ .balanceCommitment = makeZeroBuffer (ecPedersenCommitmentLength),
13201333 .err = temMALFORMED});
13211334 }
13221335
@@ -1363,7 +1376,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
13631376 .dest = carol,
13641377 .amt = 10 ,
13651378 .proof = getTrivialSendProofHex (4 ),
1366- .auditorEncryptedAmt = Buffer (10 ),
1379+ .auditorEncryptedAmt = makeZeroBuffer (10 ),
13671380 .amountCommitment = getTrivialCommitment (),
13681381 .balanceCommitment = getTrivialCommitment (),
13691382 .err = temBAD_CIPHERTEXT});
@@ -1914,7 +1927,43 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
19141927 .flags = tfMPTUnauthorize,
19151928 });
19161929 }
1917- // todo: test with convert back and delete
1930+ // test with convert back and delete
1931+ // can delete mptoken if converted back (COA returns to zero)
1932+ {
1933+ Env env{*this , features};
1934+ Account const alice (" alice" );
1935+ Account const bob (" bob" );
1936+ MPTTester mptAlice (env, alice, {.holders = {bob}});
1937+
1938+ mptAlice.create ({.ownerCount = 1 , .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy});
1939+
1940+ mptAlice.authorize ({.account = bob});
1941+ mptAlice.pay (alice, bob, 100 );
1942+
1943+ mptAlice.generateKeyPair (alice);
1944+ mptAlice.set ({.account = alice, .issuerPubKey = mptAlice.getPubKey (alice)});
1945+ mptAlice.generateKeyPair (bob);
1946+
1947+ mptAlice.convert ({
1948+ .account = bob,
1949+ .amt = 100 ,
1950+ .holderPubKey = mptAlice.getPubKey (bob),
1951+ });
1952+
1953+ mptAlice.mergeInbox ({
1954+ .account = bob,
1955+ });
1956+
1957+ mptAlice.convertBack ({.account = bob, .amt = 100 });
1958+
1959+ mptAlice.pay (bob, alice, 100 );
1960+
1961+ // Should be able to delete as Confidential Outstanding amount is 0
1962+ mptAlice.authorize ({
1963+ .account = bob,
1964+ .flags = tfMPTUnauthorize,
1965+ });
1966+ }
19181967 }
19191968
19201969 void
@@ -2211,7 +2260,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
22112260 mptAlice.convertBack (
22122261 {.account = bob,
22132262 .amt = 30 ,
2214- .pedersenCommitment = Buffer (ecPedersenCommitmentLength),
2263+ .pedersenCommitment = makeZeroBuffer (ecPedersenCommitmentLength),
22152264 .err = temMALFORMED});
22162265
22172266 mptAlice.convertBack ({.account = bob, .amt = 30 , .holderEncryptedAmt = Buffer{}, .err = temBAD_CIPHERTEXT});
@@ -2225,15 +2274,15 @@ class ConfidentialTransfer_test : public beast::unit_test::suite
22252274 {.account = bob, .amt = 30 , .issuerEncryptedAmt = getBadCiphertext (), .err = temBAD_CIPHERTEXT});
22262275
22272276 mptAlice.convertBack (
2228- {.account = bob, .amt = 30 , .auditorEncryptedAmt = Buffer (10 ), .err = temBAD_CIPHERTEXT});
2277+ {.account = bob, .amt = 30 , .auditorEncryptedAmt = makeZeroBuffer (10 ), .err = temBAD_CIPHERTEXT});
22292278
22302279 mptAlice.convertBack (
22312280 {.account = bob, .amt = 30 , .auditorEncryptedAmt = getBadCiphertext (), .err = temBAD_CIPHERTEXT});
22322281
22332282 // invalid proof length
22342283 mptAlice.convertBack ({.account = bob, .amt = 30 , .proof = Buffer{}, .err = temMALFORMED});
22352284
2236- mptAlice.convertBack ({.account = bob, .amt = 30 , .proof = Buffer (100 ), .err = temMALFORMED});
2285+ mptAlice.convertBack ({.account = bob, .amt = 30 , .proof = makeZeroBuffer (100 ), .err = temMALFORMED});
22372286 }
22382287 }
22392288
0 commit comments