Previous: Masking and Re-masking of a Card, Up: Operations on Cards [Contents][Index]
Suppose that P_1 would like to know the type of the masked card ccc
.
Of course, P_0 could simply reveal it, but that isn’t verifiable. Anyway,
if all players cooperate, then P_1 can compute the type in a verifiable
way. First, every player (except P_1) will execute the following code.
tmcg->TMCG_ProveCardSecret(ccc, vtmf, in_stream[1], out_stream[1]); |
This sends the necessary data to P_1 and proves their correctness.
On the other hand, P_1 will execute the following commands exactly
in the given order. Finally, he obtain the card type in the variable type
.
Note that the corresponding function TMCG_VerifyCardSecret
is not
called for his own index 1
.
tmcg->TMCG_SelfCardSecret(ccc, vtmf); for (size_t i = 0; i < 5; i++) { if (i == 1) continue; if (!tmcg->TMCG_VerifyCardSecret(ccc, vtmf, in_stream[i], out_stream[i])) std::cerr << "Verification failed!" << std::endl; } type = tmcg->TMCG_TypeOfCard(ccc, vtmf); |
Please notice that first TMCG_SelfCardSecret
is called, then
TMCG_VerifyCardSecret
, and finally TMCG_TypeOfCard
.