Skip to content

Commit

Permalink
add SchnorrUtil PsecretKeyToCurveScala
Browse files Browse the repository at this point in the history
SecretKey(Ed25519) to Scalar(X25519)
  • Loading branch information
Hyeonyeob Kim committed Dec 27, 2019
1 parent 5652d55 commit 1279806
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
35 changes: 35 additions & 0 deletions source/agora/common/crypto/ECC.d
Expand Up @@ -17,6 +17,8 @@

module agora.common.crypto.ECC;

import agora.common.crypto.Key;
import agora.common.crypto.Schnorr;
import agora.common.Deserializer;
import agora.common.Hash;
import agora.common.Serializer;
Expand Down Expand Up @@ -340,3 +342,36 @@ unittest
assert(points[0] == Point.fromString(
"0x37e8a197247dd01cc27c178dc0465ce826b4f6e312f3ee4c1df0623ef38c51c5"));
}

/// SecretKey(Ed25519) to Scalar(X25519)
public static Scalar secretKeyToCurveScalar (SecretKey secret) nothrow @nogc
{
Scalar x25519_sk;
if (crypto_sign_ed25519_sk_to_curve25519(x25519_sk.data[].ptr, secret[].ptr) != 0)
assert(0);
return x25519_sk;
}

///
unittest
{
import agora.common.crypto.Schnorr;

KeyPair kp = KeyPair.fromSeed(
Seed.fromString(
"SCT4KKJNYLTQO4TVDPVJQZEONTVVW66YLRWAINWI3FZDY7U4JS4JJEI4"));

Scalar scalar = secretKeyToCurveScalar(kp.secret);
assert(scalar ==
Scalar(`0x44245dd23bd7453bf5fe07ec27a29be3dfe8e18d35bba28c7b222b71a4802db8`));

Pair pair;
pair.v = scalar;
pair.V = pair.v.toPoint();

assert(pair.V.data == kp.address.data);
Signature enroll_sig = sign(pair, "BOSAGORA");

Point point_Address = Point(kp.address);
assert(verify(point_Address, enroll_sig, "BOSAGORA"));
}
2 changes: 1 addition & 1 deletion source/agora/common/crypto/Schnorr.d
Expand Up @@ -48,11 +48,11 @@ module agora.common.crypto.Schnorr;
import agora.common.Types;
import agora.common.Hash;
import agora.common.crypto.ECC;
import agora.common.crypto.Key;

import std.algorithm;
import std.range;


/// Single signature example
nothrow @nogc unittest
{
Expand Down

0 comments on commit 1279806

Please sign in to comment.