Need to setup k3 and k4
This commit is contained in:
parent
1305ade002
commit
65d575849c
@ -109,7 +109,10 @@ var ntag = ctx.CreateNTag424();
|
||||
var keys = new BoltcardKeys(
|
||||
IssuerKey: new AESKey("00000000000000000000000000000001".HexToBytes()),
|
||||
EncryptionKey: new AESKey("00000000000000000000000000000002".HexToBytes()),
|
||||
AuthenticationKey: new AESKey("00000000000000000000000000000003".HexToBytes()));
|
||||
AuthenticationKey: new AESKey("00000000000000000000000000000003".HexToBytes()),
|
||||
K3: new AESKey("00000000000000000000000000000004".HexToBytes()),
|
||||
K4: new AESKey("00000000000000000000000000000005".HexToBytes()));
|
||||
|
||||
var lnurlwService = "lnurlw://test.com";
|
||||
|
||||
// Note `BoltcardKeys.Default` assumes the card hasn't been setup yet.
|
||||
|
||||
@ -1,10 +1,24 @@
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace BTCPayServer.NTag424;
|
||||
public record BoltcardKeys(AESKey IssuerKey, AESKey EncryptionKey, AESKey AuthenticationKey)
|
||||
|
||||
/// <summary>
|
||||
/// The keys saved into the BoltCard
|
||||
/// </summary>
|
||||
/// <param name="IssuerKey">The key of the issuer, used to change key settings</param>
|
||||
/// <param name="EncryptionKey">The key used to encrypt PICCData (p=)</param>
|
||||
/// <param name="AuthenticationKey">The key used to authenticated PICCData (c=)</param>
|
||||
/// <param name="K3">Unused, shouldn't be predictable</param>
|
||||
/// <param name="K4">Unused, shouldn't be predictable</param>
|
||||
public record BoltcardKeys(
|
||||
AESKey IssuerKey,
|
||||
AESKey EncryptionKey,
|
||||
AESKey AuthenticationKey,
|
||||
AESKey K3,
|
||||
AESKey K4)
|
||||
{
|
||||
public static BoltcardKeys Default = new BoltcardKeys(AESKey.Default, AESKey.Default, AESKey.Default);
|
||||
public BoltcardKeys() : this (AESKey.Default, AESKey.Default, AESKey.Default)
|
||||
public static BoltcardKeys Default = new BoltcardKeys(AESKey.Default, AESKey.Default, AESKey.Default, AESKey.Default, AESKey.Default);
|
||||
public BoltcardKeys() : this (AESKey.Default, AESKey.Default, AESKey.Default, AESKey.Default, AESKey.Default)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@ -387,6 +387,8 @@ public class Ntag424
|
||||
|
||||
await ChangeFileSettings(file: DataFile.NDEF, new FileSettings(DataFile.NDEF));
|
||||
|
||||
await ChangeKey(4, AESKey.Default, keys.K4);
|
||||
await ChangeKey(3, AESKey.Default, keys.K3);
|
||||
await ChangeKey(2, AESKey.Default, keys.AuthenticationKey);
|
||||
await ChangeKey(1, AESKey.Default, keys.EncryptionKey);
|
||||
await ChangeKey(0, AESKey.Default);
|
||||
@ -454,6 +456,12 @@ public class Ntag424
|
||||
if (newKeys.AuthenticationKey != oldKeys.AuthenticationKey)
|
||||
await ChangeKey(2, newKeys.AuthenticationKey, oldKeys.AuthenticationKey);
|
||||
|
||||
if (newKeys.K3 != oldKeys.K3)
|
||||
await ChangeKey(3, newKeys.K3, oldKeys.K3);
|
||||
|
||||
if (newKeys.K4 != oldKeys.K4)
|
||||
await ChangeKey(4, newKeys.K4, oldKeys.K4);
|
||||
|
||||
if (newKeys.IssuerKey != CurrentSession!.Key)
|
||||
{
|
||||
await ChangeKey(0, newKeys.IssuerKey); // No need of old key for 0
|
||||
|
||||
@ -176,7 +176,9 @@ public class UnitTest1
|
||||
var keys = new BoltcardKeys(
|
||||
IssuerKey: new AESKey("00000000000000000000000000000001".HexToBytes()),
|
||||
EncryptionKey: new AESKey("00000000000000000000000000000002".HexToBytes()),
|
||||
AuthenticationKey: new AESKey("00000000000000000000000000000003".HexToBytes()));
|
||||
AuthenticationKey: new AESKey("00000000000000000000000000000003".HexToBytes()),
|
||||
K3: new AESKey("00000000000000000000000000000004".HexToBytes()),
|
||||
K4: new AESKey("00000000000000000000000000000005".HexToBytes()));
|
||||
//await ntag.ResetCard(keys);
|
||||
await ntag.SetupBoltcard("http://test.com", BoltcardKeys.Default, keys);
|
||||
var message = await ntag.ReadNDef();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user