diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2019-04-01 13:23:09 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2019-04-01 13:23:09 +0800 |
commit | a8d7610b6d6b864da8891783d5aae88847cdfec7 (patch) | |
tree | 3fda1db9444753387bcdbd1dcdd8961581ddf73f /ffi/cs/readme.md | |
parent | 20cfb8c0f35f5e74fcdb3522baf80b2edf734660 (diff) | |
download | dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar.gz dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar.bz2 dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar.lz dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar.xz dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.tar.zst dexon-bls-a8d7610b6d6b864da8891783d5aae88847cdfec7.zip |
[cs] add sample code to document
Diffstat (limited to 'ffi/cs/readme.md')
-rw-r--r-- | ffi/cs/readme.md | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ffi/cs/readme.md b/ffi/cs/readme.md index 456dc0c..db604c9 100644 --- a/ffi/cs/readme.md +++ b/ffi/cs/readme.md @@ -17,6 +17,7 @@ git clone https://github.com/herumi/bls cd bls mklib dll ``` +bls/bin/*.dll are created # How to build a sample @@ -122,6 +123,58 @@ Identifier class * `string GetHexStr();` * get a hexadecimal string +## How to use + +### A minimum sample + +``` +using static BLS; + +Init(BN254); // init library +SecretKey sec; +sec.SetByCSPRNG(); // init secret key +PublicKey pub = sec.GetPublicKey(); // get public key +string m = "abc"; +Signature sig = sec.Sign(m); // create signature +if (pub.Verify(sig, m))) { + // signature is verified +} +``` + +### Aggregate signature +``` +Init(BN254); // init library +const int n = 10; +const string m = "abc"; +SecretKey[] secVec = new SecretKey[n]; +PublicKey[] pubVec = new PublicKey[n]; +Signature[] popVec = new Signature[n]; +Signature[] sigVec = new Signature[n]; + +for (int i = 0; i < n; i++) { + secVec[i].SetByCSPRNG(); // init secret key + pubVec[i] = secVec[i].GetPublicKey(); // get public key + popVec[i] = secVec[i].GetPop(); // get a proof of Possesion (PoP) + sigVec[i] = secVec[i].Sign(m); // create signature +} + +SecretKey secAgg; +PublicKey pubAgg; +Signature sigAgg; +for (int i = 0; i < n; i++) { + // verify PoP + if (pubVec[i].VerifyPop(popVec[i]))) { + // error + return; + } + pubAgg.Add(pubVec[i]); // aggregate public key + sigAgg.Add(sigVec[i]); // aggregate signature +} +if (pubAgg.Verify(sigAgg, m)) { + // aggregated signature is verified +} +``` + # License modified new BSD License |