Next: Tools, Previous: Application Programming Interface, Up: Top [Contents][Index]

The following examples explain most of the steps that are necessary to create
a secure and verifiable card game with LibTMCG. We consider an application with five
permanent players (denoted by *P_0*, *P_1*, *P_2*, *P_3*,
and *P_4*) and a regular deck of 52 different cards. For convenience
only the more efficient card encoding scheme of Barnett and Smart [BS03]
is described. Additionally, we complete our exposition with code fragments which
show the application of the fast shuffle verification protocol due to
Groth [Gr05, Gr10] with an interactive or even non-interactive instantiation
of the zero-knowledge proofs.
On modern computers this approach achieves good real world performance and
simultaneously keeps the cheating probability negligible.

Throughout the remaining pages we assume that all players are pairwise connected by
authenticated communication channels. These channels are organized in input resp.
output streams, where `input_stream[i]`

resp. `output_stream[i]`

denote
the corresponding `std::istream`

resp. `std::ostream`

instance for the
communication with player *P_i*.^{13}

• Library Initialization: | ||

• Setup Communication Channels: | ||

• Session Initialization and Key Generation: | ||

• Operations on Cards: | ||

• Operations on Stacks: | ||

• Quit a Session: |

We assume that the players are ordered in a natural way such that we can use an uniform nomenclature.