Added extension for determine public key

This commit is contained in:
Thorsten Sommer 2020-01-03 20:25:34 +01:00
parent 6c6a50c395
commit 9278224f44

View File

@ -103,5 +103,22 @@ namespace Ed25519
{ {
return data[index / 8] >> (index % 8) & 1; return data[index / 8] >> (index % 8) & 1;
} }
public static ReadOnlySpan<byte> ExtractPublicKey(this ReadOnlySpan<byte> privateKey)
{
var hash = privateKey.ComputeHash();
var a = Constants.TWO_POW_BIT_LENGTH_MINUS_TWO;
for (var i = 3; i < Constants.BIT_LENGTH - 2; i++)
{
var bit = hash.GetBit(i);
if (bit != 0)
{
a += Constants.TWO_POW_CACHE[i];
}
}
var bigA = Constants.B.ScalarMul(a);
return bigA.EncodePoint();
}
} }
} }