diff options
Diffstat (limited to 'vendor/github.com/byzantine-lab/bls/ffi/cs/readme-ja.md')
-rw-r--r-- | vendor/github.com/byzantine-lab/bls/ffi/cs/readme-ja.md | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/vendor/github.com/byzantine-lab/bls/ffi/cs/readme-ja.md b/vendor/github.com/byzantine-lab/bls/ffi/cs/readme-ja.md deleted file mode 100644 index 199135725..000000000 --- a/vendor/github.com/byzantine-lab/bls/ffi/cs/readme-ja.md +++ /dev/null @@ -1,188 +0,0 @@ -# BLS署名のC#バインディング - -# 必要環境 - -* Visual Studio 2017(x64) or later -* C# 7.2 or later -* .NET Framework 4.5.2 or later - -# DLLのビルド方法 - -Visual Studio 2017の64bit用コマンドプロンプトを開いて -``` -md work -cd work -git clone https://github.com/herumi/cybozulib_ext -git clone https://github.com/herumi/mcl -git clone https://github.com/herumi/bls -cd bls -mklib dll -``` -`bls/bin/*.dll`が作成される。 - -# サンプルのビルド方法 - -bls/ffi/cs/bls.slnを開いて実行する。 - -* 注意 bls256.slnは古いため使わないでください。 - -# クラスとAPI - -## API - -* `Init(int curveType = BN254);` - * ライブラリを曲線curveTypeで初期化する。 - * curveType = BN254 or BLS12_381 -* `SecretKey ShareSecretKey(in SecretKey[] msk, in Id id);` - * マスター秘密鍵の列mskに対するidの秘密鍵を生成(共有)する。 -* `SecretKey RecoverSecretKey(in SecretKey[] secVec, in Id[] idVec);` - * 秘密鍵secVecとID idVecのペアから秘密鍵を復元する。 -* `PublicKey SharePublicKey(in PublicKey[] mpk, in Id id);` - * マスター公開鍵の列mpkに対するidの公開鍵を生成(共有)する。 -* `PublicKey RecoverPublicKey(in PublicKey[] pubVec, in Id[] idVec);` - * 公開鍵pubVecとID idVecのペアから公開鍵を復元する。 -* `Signature RecoverSign(in Signature[] sigVec, in Id[] idVec);` - * 署名sigVecとID idVecのペアから署名を復元する。 - -## Id - -識別子クラス - -* `byte[] Serialize();` - * Idをシリアライズする。 -* `void Deserialize(byte[] buf);` - * バイト列bufからIdをデシリアライズする。 -* `bool IsEqual(in Id rhs);` - * 同値判定。 -* `void SetDecStr(string s);` - * 10進数文字列を設定する。 -* `void SetHexStr(string s);` - * 16進数文字列を設定する。 -* `void SetInt(int x);` - * 整数xを設定する。 -* `string GetDecStr();` - * 10進数表記を取得する。 -* `string GetHexStr();` - * 16進数表記を取得する。 - -## SecretKey - -* `byte[] Serialize();` - * Idをシリアライズする。 -* `void Deserialize(byte[] buf);` - * バイト列bufからSecretKeyをデシリアライズする。 -* `bool IsEqual(in SecretKey rhs);` - * 同値判定。 -* `void SetHexStr(string s);` - * 16進数文字列を設定する。 -* `string GetHexStr();` - * 16進数表記を取得する。 -* `void Add(in SecretKey rhs);` - * 秘密鍵rhsを加算する。 -* `void SetByCSPRNG();` - * 暗号学的乱数で設定する。 -* `void SetHashOf(string s);` - * 文字列sのハッシュ値を設定する。 -* `PublicKey GetPublicKey();` - * 対応する公開鍵を取得する。 -* `Signature Sign(string m);` - * 文字列mの署名を生成する。 -* `Signature GetPop();` - * 自身の秘密鍵による署名(Proof Of Posession)を生成する。 - -## PublicKey - -* `byte[] Serialize();` - * PublicKeyをシリアライズする。 -* `void Deserialize(byte[] buf);` - * バイト列bufからPublicKeyをデシリアライズする。 -* `bool IsEqual(in PublicKey rhs);` - * 同値判定。 -* `void Add(in PublicKey rhs);` - * 公開鍵rhsを加算する。 -* `void SetHexStr(string s);` - * 16進数文字列を設定する。 -* `string GetHexStr();` - * 16進数表記を取得する。 -* `bool Verify(in Signature sig, string m);` - * 文字列mに対する署名sigの正当性を確認する。 -* `bool VerifyPop(in Signature pop);` - * PoPの正当性を確認する。 - -## Signature - -* `byte[] Serialize();` - * Signatureをシリアライズする。 -* `void Deserialize(byte[] buf);` - * バイト列bufからSignatureをデシリアライズする。 -* `bool IsEqual(in Signature rhs);` - * 同値判定。 -* `void Add(in Signature rhs);` - * 署名rhsを加算する。 -* `void SetHexStr(string s);` - * 16進数文字列を設定する。 -* `string GetHexStr();` - * 16進数表記を取得する。 - -## 使い方 - -### 最小サンプル - -``` -using static BLS; - -Init(BN254); // ライブラリ初期化 -SecretKey sec; -sec.SetByCSPRNG(); // 秘密鍵の初期化 -PublicKey pub = sec.GetPublicKey(); // 公開鍵の取得 -string m = "abc"; -Signature sig = sec.Sign(m); // 署名の作成 -if (pub.Verify(sig, m))) { - // 署名の確認 -} -``` - -### 集約署名 -``` -Init(BN254); // ライブラリ初期化 -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(); // 秘密鍵の初期化 - pubVec[i] = secVec[i].GetPublicKey(); // 公開鍵の取得 - popVec[i] = secVec[i].GetPop(); // 所有(PoP)の証明 - sigVec[i] = secVec[i].Sign(m); // 署名 -} - -SecretKey secAgg; -PublicKey pubAgg; -Signature sigAgg; -for (int i = 0; i < n; i++) { - // PoPの確認 - if (pubVec[i].VerifyPop(popVec[i]))) { - // エラー - return; - } - pubAgg.Add(pubVec[i]); // 公開鍵の集約 - sigAgg.Add(sigVec[i]); // 署名の集約 -} -if (pubAgg.Verify(sigAgg, m)) { - // 署名の確認 -} -``` - -# ライセンス - -modified new BSD License -http://opensource.org/licenses/BSD-3-Clause - -# 著者 - -(C)2019 光成滋生 MITSUNARI Shigeo(herumi@nifty.com) All rights reserved. -本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、 -サービスなどはそれぞれ、各権利保有者に帰属します |