This is a C# implementation of two linkable ring signature schemes from Liu et al.
A ring signature is a digital signature which proves that the message was signed by a holder of a private key, whose corresponding public key is in the provided list of public keys. However, it is impossible to know which public key from the list belongs to the signer.
A linkable ring signature in addition provides the means to check whether two signatures were generated by the same signer, still with no way to tell which one.
This idea has applications in privacy-sensitive settings, such as e-voting or e-cash.
The implemented schemes are described in the papers:
"Linkable Spontaneous Anonymous Group Signature for Ad Hoc Groups" by Joseph K. Liu, Victor K. Wei, and Duncan S. Wong - Information Security and Privacy, 2004 http://eprint.iacr.org/2004/027.pdf
"Linkable Ring Signatures: Security Models and New Schemes" by Joseph K. Liu and Duncan S. Wong - Computational Science and Its Applications–ICCSA 2005 http://link.springer.com/chapter/10.1007%2F11424826_65
Related work:
An implementation of the older method in C++: https://github.com/apuljain/Linkable-Ring-Signature
Bouncy castle C# crypto library: https://github.com/neoeinstein/bouncycastle