ziglet-okamoto 0.1.0

Okamoto (2008) Blind Signatures
Documentation
# Okamoto (2006) Blind Signatures
## Efficient Blind and Partially Blind Signatures Without Random Oracles

Implementations of blind and partially blind signatures over elliptic curves as described in [Efficient Blind and Partially Blind Signatures Without Random Oracles](https://link.springer.com/content/pdf/10.1007%2F11681878_5.pdf).

This library provides a usable implementation of the algorithm without regard to its eventual use. Uses such as in a "mint", are left to the implementor.

The key innovation of the paper and therefore of this library is in permitting *partially* blind signatures where the signer and the user share some component of the message (potentially the null string) openly. This would make it useful, for example, in a mint application where the mint (bank) executes out-of-band logic to verify the user's balance before signing an ATM-like withdrawal of an agreed denomination.

# Features

* `bls12_381_plain` (default): Plain implementation over the [BLS12-128]http://docs.rs/bls12_381 elliptic curve secure against constant-depth concurrent adversaries (not secure against fully concurrent adversaries).


# Sequence

```mermaid
sequenceDiagram
participant User
participant Signer
participant Verifier
alt Setup
Signer ->> Signer: Generate(KeyPair)
Signer ->> User: (KeyPair.PublicKey)
end

alt Negotiate Message
    User ->> Signer: m0
end

alt Sign
User ->> Signer: (X,W)
Signer ->> User: (eta)
User ->> Signer: (b1, b2, b3)
Signer ->> Signer: Verify(X,W,eta,b1,b2,b3)
Signer ->> User: (Y,R,l)
User ->> User: (sigma,alpha,beta)
end
alt Verify
User ->> Verifier: (m0,m1,sigma,alpha,beta)
end
```

# References

Using algorithms from:
* [Efficient Blind and Partially Blind Signatures Without Random Oracles]https://link.springer.com/content/pdf/10.1007%2F11681878_5.pdf.
* [bls12_381 Rust Crate]https://docs.rs/bls12_381/latest/bls12_381/
* [Efficient Implementation of Pairing-Based Cryptosystems]https://link.springer.com/content/pdf/10.1007/s00145-004-0311-z.pdf
* [Efficient Algorithms for Pairing-Based Cryptosystems]https://www.researchgate.net/profile/Hae-Kim-10/publication/40721105_Efficient_Algorithms_for_Pairing-Based_Cryptosystems/links/00463516819ba229e8000000/Efficient-Algorithms-for-Pairing-Based-Cryptosystems.pdf
* [Pairing Friendly Curves]https://www.ietf.org/archive/id/draft-irtf-cfrg-pairing-friendly-curves-10.html#name-for-128-bit-security

# Licensing

* [BUSL]./LICENSE.md

# Copyright

Copyright (c) Jeffrey Hohenstein <jeffrey.hohenstein@gmail.com>

### Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you shall be licensed as above, without any additional terms or
conditions.