diff --git a/Substrate.NET.Schnorrkel/Keys/SecretKey.cs b/Substrate.NET.Schnorrkel/Keys/SecretKey.cs
index df716a3..73bf278 100644
--- a/Substrate.NET.Schnorrkel/Keys/SecretKey.cs
+++ b/Substrate.NET.Schnorrkel/Keys/SecretKey.cs
@@ -59,7 +59,8 @@ public struct SecretKey
/// 32 bytes being the seed for nonces.
///
///
- public byte[] ToBytes()
+ [Obsolete("Use ToEd25519Bytes instead")]
+ internal byte[] ToBytes()
{
var result = new byte[64];
key.ScalarBytes.CopyTo(result, 0);
@@ -85,7 +86,8 @@ public PublicKey ExpandToPublic()
///
///
///
- public static SecretKey FromBytes085(byte[] data)
+ [Obsolete("Use FromBytes011 instead")]
+ internal static SecretKey FromBytes085(byte[] data)
{
if (data.Length != Consts.SIGNATURE_LENGTH)
throw new SignatureException("SecretKey - SignatureError::BytesLengthError");
diff --git a/Substrate.NET.Schnorrkel/Sr25519v085.cs b/Substrate.NET.Schnorrkel/Sr25519v085.cs
index 0df132c..6cd060e 100644
--- a/Substrate.NET.Schnorrkel/Sr25519v085.cs
+++ b/Substrate.NET.Schnorrkel/Sr25519v085.cs
@@ -20,6 +20,7 @@
using Substrate.NET.Schnorrkel.Ristretto;
using Substrate.NET.Schnorrkel.Scalars;
using Substrate.NET.Schnorrkel.Signed;
+using System;
using System.Text;
namespace Substrate.NET.Schnorrkel
@@ -44,7 +45,8 @@ public Sr25519v085(SchnorrkelSettings settings) : base(settings)
///
///
///
- public static byte[] SignSimple(byte[] publicKey, byte[] secretKey, byte[] message)
+ [Obsolete("Use SignSimpleFromEd25519 instead")]
+ internal static byte[] SignSimple(byte[] publicKey, byte[] secretKey, byte[] message)
{
var sk = SecretKey.FromBytes085(secretKey);
var pk = new PublicKey(publicKey);
@@ -60,6 +62,26 @@ public static byte[] SignSimple(byte[] publicKey, byte[] secretKey, byte[] messa
return sig.ToBytes();
}
+ ///
+ /// Sign from Secret key from Ed25519 bytes (need to DivideScalarBytesByCofactor)
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static byte[] SignSimpleFromEd25519(byte[] publicKey, byte[] secretKey, byte[] message)
+ {
+ var sk = SecretKey.FromEd25519Bytes(secretKey);
+ var pk = new PublicKey(publicKey);
+ var signingContext = new SigningContext085(Encoding.UTF8.GetBytes("substrate"));
+ var st = new SigningTranscript(signingContext);
+ signingContext.ts = signingContext.Bytes(message);
+ var rng = new Simple();
+ var sig = Sign(st, sk, pk, rng);
+
+ return sig.ToBytes();
+ }
+
///
/// Sign a message with a given public and secret key.
///
diff --git a/Substrate.NET.Schnorrkel/Sr25519v091.cs b/Substrate.NET.Schnorrkel/Sr25519v091.cs
index 644ce6e..b66bfa0 100644
--- a/Substrate.NET.Schnorrkel/Sr25519v091.cs
+++ b/Substrate.NET.Schnorrkel/Sr25519v091.cs
@@ -21,6 +21,7 @@
using Substrate.NET.Schnorrkel.Ristretto;
using Substrate.NET.Schnorrkel.Scalars;
using Substrate.NET.Schnorrkel.Signed;
+using System;
using System.Text;
namespace Substrate.NET.Schnorrkel
@@ -65,7 +66,8 @@ public static byte[] SignSimple(KeyPair pair, byte[] message)
///
///
///
- public static byte[] SignSimple(byte[] publicKey, byte[] secretKey, byte[] message)
+ [Obsolete("Use SignSimpleFromEd25519 instead")]
+ internal static byte[] SignSimple(byte[] publicKey, byte[] secretKey, byte[] message)
{
var sk = SecretKey.FromBytes085(secretKey);
var pk = new PublicKey(publicKey);
@@ -98,6 +100,13 @@ public static byte[] SignSimpleFromEd25519(byte[] publicKey, byte[] secretKey, b
return sig.ToBytes();
}
+ ///
+ /// Verify a signature
+ ///
+ ///
+ ///
+ ///
+ ///
public static bool Verify(byte[] signature, PublicKey publicKey, byte[] message)
{
var s = new Signature();
@@ -109,6 +118,13 @@ public static bool Verify(byte[] signature, PublicKey publicKey, byte[] message)
return Verify(st, s, publicKey);
}
+ ///
+ /// Verify a signature
+ ///
+ ///
+ ///
+ ///
+ ///
public static bool Verify(byte[] signature, byte[] publicKey, byte[] message)
{
var s = new Signature();