/// Init key pair using secret sequence of bytes
/// </summary>
/// <param name="secretBytes">Byte sequence</param>
+ /// <param name="Compressed">Compression flag</param>
public CKeyPair(IEnumerable<byte> secretBytes, bool Compressed=true)
{
// Deserialize secret value
}
}
+ /// <summary>
+ /// Init key pair using secret sequence of bytes
+ /// </summary>
+ /// <param name="secretBytes">Byte sequence</param>
+ public CKeyPair(IEnumerable<byte> secretBytes) :
+ this (secretBytes.Take(32), (secretBytes.Count() == 33 && secretBytes.Last() == 0x01))
+ {
+ }
+
public CKeyPair(string strBase58)
{
List<byte> rawBytes = AddressTools.Base58DecodeCheck(strBase58).ToList();
/// </summary>
public IEnumerable<byte> Secret
{
- get { return _Private.D.ToByteArray(); }
+ get
+ {
+ List<byte> secretBytes = new List<byte>(_Private.D.ToByteArray());
+
+ if (secretBytes[0] == 0x00)
+ {
+ // Remove sign
+ secretBytes.RemoveAt(0);
+ }
+
+ if (IsCompressed)
+ {
+ // Set compression flag
+ secretBytes.Add(0x01);
+ }
+
+ return secretBytes;
+ }
}
public string ToHex()
r.Add((byte)(128 + AddrType.PUBKEY_ADDRESS)); // Key version
r.AddRange(Secret); // Key data
- if (r[1] == 0x00)
- {
- // Remove sign
- r.RemoveAt(1);
- }
-
- if (IsCompressed)
- {
- // Set compression flag
- r.Add(0x01);
- }
-
return AddressTools.Base58EncodeCheck(r);
}
}
Console.WriteLine("Hard-Coded privkey address: {0}", keyPair4.GetKeyID().ToString());
Console.WriteLine("Hard-Coded privkey: {0}\n", keyPair4.ToString());
+ // Privkey hex deserialization test
+ CKeyPair keyPair5 = new CKeyPair(keyPair4.Secret.ToArray());
+ Console.WriteLine("Decoded privkey in Hex: {0}", keyPair5.ToHex());
+ Console.WriteLine("Decoded privkey address: {0}\n", keyPair5.GetKeyID().ToString());
/// ECDSA keypair signing test