diff --git a/Generator/ClassGenerator.cs b/Generator/ClassGenerator.cs index 676f4f5..13f745a 100644 --- a/Generator/ClassGenerator.cs +++ b/Generator/ClassGenerator.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/ClusterGenerator.cs b/Generator/ClusterGenerator.cs index 64a1a5e..a9d459e 100644 --- a/Generator/ClusterGenerator.cs +++ b/Generator/ClusterGenerator.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/DataType.cs b/Generator/DataType.cs index 4037fd1..1a43bcf 100644 --- a/Generator/DataType.cs +++ b/Generator/DataType.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/Generator.cs b/Generator/Generator.cs index 1a96371..2c47650 100644 --- a/Generator/Generator.cs +++ b/Generator/Generator.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/GeneratorUtil.cs b/Generator/GeneratorUtil.cs index 3bc2cf2..6b9d9ce 100644 --- a/Generator/GeneratorUtil.cs +++ b/Generator/GeneratorUtil.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/StructParser.cs b/Generator/StructParser.cs index 6340079..904e8fa 100644 --- a/Generator/StructParser.cs +++ b/Generator/StructParser.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Generator/Tag.cs b/Generator/Tag.cs index 083281f..47cc1f6 100644 --- a/Generator/Tag.cs +++ b/Generator/Tag.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Clusters/ClusterBase.cs b/MatterDotNet/Clusters/ClusterBase.cs index ddb95da..c13a8e9 100644 --- a/MatterDotNet/Clusters/ClusterBase.cs +++ b/MatterDotNet/Clusters/ClusterBase.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Clusters/UnknownCluster.cs b/MatterDotNet/Clusters/UnknownCluster.cs index d9afe81..72d87c2 100644 --- a/MatterDotNet/Clusters/UnknownCluster.cs +++ b/MatterDotNet/Clusters/UnknownCluster.cs @@ -22,7 +22,7 @@ public UnknownCluster(uint cluster, ushort endPoint) : base(cluster, endPoint) public override string ToString() { - return $"Unknown Cluster: 0x{cluster:X2}"; + return $"Unknown Cluster: 0x{cluster:X4}"; } } } diff --git a/MatterDotNet/Constants.cs b/MatterDotNet/Constants.cs index 3c3b5cc..6ce1051 100644 --- a/MatterDotNet/Constants.cs +++ b/MatterDotNet/Constants.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Messages/MCSP/MessageCounterSyncRequest.cs b/MatterDotNet/Messages/MCSP/MessageCounterSyncRequest.cs index 5c9e289..6a70fcf 100644 --- a/MatterDotNet/Messages/MCSP/MessageCounterSyncRequest.cs +++ b/MatterDotNet/Messages/MCSP/MessageCounterSyncRequest.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Messages/MCSP/MessageCounterSyncResponse.cs b/MatterDotNet/Messages/MCSP/MessageCounterSyncResponse.cs index 2f42e71..652c4b6 100644 --- a/MatterDotNet/Messages/MCSP/MessageCounterSyncResponse.cs +++ b/MatterDotNet/Messages/MCSP/MessageCounterSyncResponse.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/PKI/Fabric.cs b/MatterDotNet/PKI/Fabric.cs index 5b86c78..334bc1c 100644 --- a/MatterDotNet/PKI/Fabric.cs +++ b/MatterDotNet/PKI/Fabric.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by @@ -13,7 +13,6 @@ using MatterDotNet.Protocol.Cryptography; using System.Buffers.Binary; using System.Formats.Asn1; -using System.Globalization; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -30,6 +29,8 @@ public Fabric(ulong rcac, ulong fabricId, byte[] ipk) : base() { if (fabricId == 0) throw new ArgumentException("Invalid Fabric ID"); + if (ipk.Length != 16) + throw new ArgumentException("Epoch Key must be 16 bytes"); this.RCAC = rcac; this.FabricID = fabricId; EpochKey = ipk; @@ -54,20 +55,7 @@ protected Fabric(X509Certificate2 cert, byte[] ipk) { this.cert = cert; EpochKey = ipk; - foreach (X500RelativeDistinguishedName dn in cert.SubjectName.EnumerateRelativeDistinguishedNames(false)) - { - switch (dn.GetSingleElementType().Value) - { - case OID_RCAC: - if (ulong.TryParse(dn.GetSingleElementValue()!, NumberStyles.HexNumber, null, out ulong rcac)) - RCAC = rcac; - break; - case OID_FabricID: - if (ulong.TryParse(dn.GetSingleElementValue()!, NumberStyles.HexNumber, null, out ulong fabric)) - FabricID = fabric; - break; - } - } + ParseCert(); byte[] fabricIDBytes = new byte[8]; BinaryPrimitives.WriteUInt64BigEndian(fabricIDBytes, FabricID); CompressedFabricID = Crypto.KDF(PublicKey.AsSpan(1), fabricIDBytes, COMPRESSED_FABRIC_INFO, 64); @@ -172,6 +160,15 @@ public bool ContainsNOC(ulong nodeId) return null; } + public IEnumerable GetNodes() + { + foreach (OperationalCertificate node in nodes.Values) + { + if (node != Commissioner) + yield return node; + } + } + public byte[] ComputeDestinationID(byte[] random, ulong nodeId) { byte[] message = new byte[113]; diff --git a/MatterDotNet/PKI/OperationalCertificate.cs b/MatterDotNet/PKI/OperationalCertificate.cs index 81a0f2b..70dfa49 100644 --- a/MatterDotNet/PKI/OperationalCertificate.cs +++ b/MatterDotNet/PKI/OperationalCertificate.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by @@ -55,7 +55,7 @@ internal OperationalCertificate(X509Certificate2 cert) ParseCert(); } - private void ParseCert() + protected void ParseCert() { foreach (X500RelativeDistinguishedName dn in cert.SubjectName.EnumerateRelativeDistinguishedNames(false)) { @@ -243,6 +243,10 @@ private static List GetDNs(X500DistinguishedName subject) return attrs; } + /// + /// Convert an operational certificate into a matter certificate + /// + /// public MatterCertificate ToMatterCertificate() { List extensions = new List(); @@ -280,6 +284,10 @@ public MatterCertificate ToMatterCertificate() }; } + /// + /// Convert an operational certificate into a matter certificate (in byte[] form) + /// + /// public byte[] GetMatterCertBytes() { PayloadWriter payload = new PayloadWriter(600); @@ -292,13 +300,11 @@ internal X509Certificate2 GetRaw() return cert; } - public byte[]? GetPrivateKey() - { - if (!cert.HasPrivateKey) - return null; - return cert.GetECDsaPrivateKey()?.ExportParameters(true).D; - } - + /// + /// Compute an ECDsa Signature + /// + /// + /// public byte[]? SignData(byte[] message) { if (!cert.HasPrivateKey) @@ -306,31 +312,46 @@ internal X509Certificate2 GetRaw() return cert.GetECDsaPrivateKey()?.SignData(message, HashAlgorithmName.SHA256); } + /// + /// Verify an ECDsa Signature + /// + /// + /// + /// public bool VerifyData(byte[] message, byte[] signature) { return cert.GetECDsaPublicKey()?.VerifyData(message, signature, HashAlgorithmName.SHA256) ?? false; } - public string IssuerName { get; set; } = string.Empty; + public string IssuerName { get; private set; } = string.Empty; - public string CommonName { get; set; } = string.Empty; + public string CommonName { get; private set; } = string.Empty; - public ulong NodeID { get; set; } + public ulong NodeID { get; private set; } - public ulong FirmwareSigningID { get; set; } + public ulong FirmwareSigningID { get; private set; } - public ulong ICAC { get; set; } + public ulong ICAC { get; private set; } - public ulong RCAC { get; set; } + public ulong RCAC { get; protected set; } - public ulong FabricID { get; set; } + public ulong FabricID { get; protected set; } - public List Cats { get; set; } = []; + public List Cats { get; private set; } = []; - public uint VendorID { get; set; } + /// + /// Node Vendor ID + /// + public uint VendorID { get; private set; } - public uint ProductID { get; set; } + /// + /// Node Product ID + /// + public uint ProductID { get; private set; } + /// + /// Public ECDsa Key + /// public byte[] PublicKey { get { return cert.GetPublicKey(); } } } } diff --git a/MatterDotNet/PayloadParser.cs b/MatterDotNet/PayloadParser.cs index d019f25..390eda6 100644 --- a/MatterDotNet/PayloadParser.cs +++ b/MatterDotNet/PayloadParser.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Connection/IConnection.cs b/MatterDotNet/Protocol/Connection/IConnection.cs index 5763576..f56c585 100644 --- a/MatterDotNet/Protocol/Connection/IConnection.cs +++ b/MatterDotNet/Protocol/Connection/IConnection.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Connection/MRPConnection.cs b/MatterDotNet/Protocol/Connection/MRPConnection.cs index 41e61a1..1199ab0 100644 --- a/MatterDotNet/Protocol/Connection/MRPConnection.cs +++ b/MatterDotNet/Protocol/Connection/MRPConnection.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by @@ -106,8 +106,8 @@ public async Task SendFrame(Exchange exchange, Frame frame, bool reliable) public async Task SendAck(SessionContext? session, ushort exchange, uint counter, bool initiator) { Frame ack = new Frame(null, (byte)SecureOpCodes.MRPStandaloneAcknowledgement); - ack.SessionID = session?.RemoteSessionID ?? 0; - ack.Counter = session!.GetSessionCounter(); + ack.SessionID = session!.RemoteSessionID; + ack.Counter = session.GetSessionCounter(); ack.Message.ExchangeID = exchange; ack.Message.Flags = ExchangeFlags.Acknowledgement; if (initiator) diff --git a/MatterDotNet/Protocol/Connection/Retransmission.cs b/MatterDotNet/Protocol/Connection/Retransmission.cs index d975f5c..6abdacd 100644 --- a/MatterDotNet/Protocol/Connection/Retransmission.cs +++ b/MatterDotNet/Protocol/Connection/Retransmission.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Connection/TCPConnection.cs b/MatterDotNet/Protocol/Connection/TCPConnection.cs index 2c8ecae..e09e3a1 100644 --- a/MatterDotNet/Protocol/Connection/TCPConnection.cs +++ b/MatterDotNet/Protocol/Connection/TCPConnection.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/AesCtr.cs b/MatterDotNet/Protocol/Cryptography/AesCtr.cs index 7b68a64..cbf2a5e 100644 --- a/MatterDotNet/Protocol/Cryptography/AesCtr.cs +++ b/MatterDotNet/Protocol/Cryptography/AesCtr.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/BigIntegerPoint.cs b/MatterDotNet/Protocol/Cryptography/BigIntegerPoint.cs index c05bdf4..18294bb 100644 --- a/MatterDotNet/Protocol/Cryptography/BigIntegerPoint.cs +++ b/MatterDotNet/Protocol/Cryptography/BigIntegerPoint.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/CTR_DRBG.cs b/MatterDotNet/Protocol/Cryptography/CTR_DRBG.cs index 77131ff..86038d1 100644 --- a/MatterDotNet/Protocol/Cryptography/CTR_DRBG.cs +++ b/MatterDotNet/Protocol/Cryptography/CTR_DRBG.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/Crypto.cs b/MatterDotNet/Protocol/Cryptography/Crypto.cs index 046479b..e1fa7c6 100644 --- a/MatterDotNet/Protocol/Cryptography/Crypto.cs +++ b/MatterDotNet/Protocol/Cryptography/Crypto.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/SPAKE2Plus.cs b/MatterDotNet/Protocol/Cryptography/SPAKE2Plus.cs index 9533586..66a666a 100644 --- a/MatterDotNet/Protocol/Cryptography/SPAKE2Plus.cs +++ b/MatterDotNet/Protocol/Cryptography/SPAKE2Plus.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Cryptography/SecP256.cs b/MatterDotNet/Protocol/Cryptography/SecP256.cs index 561c5ce..4045c58 100644 --- a/MatterDotNet/Protocol/Cryptography/SecP256.cs +++ b/MatterDotNet/Protocol/Cryptography/SecP256.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Flags/ExchangeFlags.cs b/MatterDotNet/Protocol/Payloads/Flags/ExchangeFlags.cs index 8c95638..6c2be79 100644 --- a/MatterDotNet/Protocol/Payloads/Flags/ExchangeFlags.cs +++ b/MatterDotNet/Protocol/Payloads/Flags/ExchangeFlags.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Flags/MessageFlags.cs b/MatterDotNet/Protocol/Payloads/Flags/MessageFlags.cs index 2030046..4039af1 100644 --- a/MatterDotNet/Protocol/Payloads/Flags/MessageFlags.cs +++ b/MatterDotNet/Protocol/Payloads/Flags/MessageFlags.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Flags/SecurityFlags.cs b/MatterDotNet/Protocol/Payloads/Flags/SecurityFlags.cs index 84d0082..6238ee5 100644 --- a/MatterDotNet/Protocol/Payloads/Flags/SecurityFlags.cs +++ b/MatterDotNet/Protocol/Payloads/Flags/SecurityFlags.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Frame.cs b/MatterDotNet/Protocol/Payloads/Frame.cs index 89e2545..ae25a10 100644 --- a/MatterDotNet/Protocol/Payloads/Frame.cs +++ b/MatterDotNet/Protocol/Payloads/Frame.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/IPayload.cs b/MatterDotNet/Protocol/Payloads/IPayload.cs index 58aa4da..aec271d 100644 --- a/MatterDotNet/Protocol/Payloads/IPayload.cs +++ b/MatterDotNet/Protocol/Payloads/IPayload.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/OpCodes/BDXOpCodes.cs b/MatterDotNet/Protocol/Payloads/OpCodes/BDXOpCodes.cs index dd4b493..fbbcb98 100644 --- a/MatterDotNet/Protocol/Payloads/OpCodes/BDXOpCodes.cs +++ b/MatterDotNet/Protocol/Payloads/OpCodes/BDXOpCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/OpCodes/IMOpCodes.cs b/MatterDotNet/Protocol/Payloads/OpCodes/IMOpCodes.cs index f13ae5b..a27259f 100644 --- a/MatterDotNet/Protocol/Payloads/OpCodes/IMOpCodes.cs +++ b/MatterDotNet/Protocol/Payloads/OpCodes/IMOpCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/OpCodes/SecureOpCodes.cs b/MatterDotNet/Protocol/Payloads/OpCodes/SecureOpCodes.cs index 745b62a..e53178b 100644 --- a/MatterDotNet/Protocol/Payloads/OpCodes/SecureOpCodes.cs +++ b/MatterDotNet/Protocol/Payloads/OpCodes/SecureOpCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/OpCodes/UDCOpCodes.cs b/MatterDotNet/Protocol/Payloads/OpCodes/UDCOpCodes.cs index 721fa5e..a7a2b71 100644 --- a/MatterDotNet/Protocol/Payloads/OpCodes/UDCOpCodes.cs +++ b/MatterDotNet/Protocol/Payloads/OpCodes/UDCOpCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/PayloadWriter.cs b/MatterDotNet/Protocol/Payloads/PayloadWriter.cs index 0ee6f29..91b53ca 100644 --- a/MatterDotNet/Protocol/Payloads/PayloadWriter.cs +++ b/MatterDotNet/Protocol/Payloads/PayloadWriter.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/ProtocolType.cs b/MatterDotNet/Protocol/Payloads/ProtocolType.cs index a03b160..ab4b05d 100644 --- a/MatterDotNet/Protocol/Payloads/ProtocolType.cs +++ b/MatterDotNet/Protocol/Payloads/ProtocolType.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Status/BDXStatusCodes.cs b/MatterDotNet/Protocol/Payloads/Status/BDXStatusCodes.cs index 4f74a22..ece8582 100644 --- a/MatterDotNet/Protocol/Payloads/Status/BDXStatusCodes.cs +++ b/MatterDotNet/Protocol/Payloads/Status/BDXStatusCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Status/GeneralCode.cs b/MatterDotNet/Protocol/Payloads/Status/GeneralCode.cs index 33893f7..75ab4fc 100644 --- a/MatterDotNet/Protocol/Payloads/Status/GeneralCode.cs +++ b/MatterDotNet/Protocol/Payloads/Status/GeneralCode.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Status/IMStatusCode.cs b/MatterDotNet/Protocol/Payloads/Status/IMStatusCode.cs index e884380..d6c01bf 100644 --- a/MatterDotNet/Protocol/Payloads/Status/IMStatusCode.cs +++ b/MatterDotNet/Protocol/Payloads/Status/IMStatusCode.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Status/SecureStatusCodes.cs b/MatterDotNet/Protocol/Payloads/Status/SecureStatusCodes.cs index 2af6d53..4af9318 100644 --- a/MatterDotNet/Protocol/Payloads/Status/SecureStatusCodes.cs +++ b/MatterDotNet/Protocol/Payloads/Status/SecureStatusCodes.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/StatusPayload.cs b/MatterDotNet/Protocol/Payloads/StatusPayload.cs index 7aae79d..e2ce370 100644 --- a/MatterDotNet/Protocol/Payloads/StatusPayload.cs +++ b/MatterDotNet/Protocol/Payloads/StatusPayload.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/TLVPayload.cs b/MatterDotNet/Protocol/Payloads/TLVPayload.cs index 8f42331..77b9afe 100644 --- a/MatterDotNet/Protocol/Payloads/TLVPayload.cs +++ b/MatterDotNet/Protocol/Payloads/TLVPayload.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Payloads/Version1Payload.cs b/MatterDotNet/Protocol/Payloads/Version1Payload.cs index 0a316d3..9a82862 100644 --- a/MatterDotNet/Protocol/Payloads/Version1Payload.cs +++ b/MatterDotNet/Protocol/Payloads/Version1Payload.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Sessions/Exchange.cs b/MatterDotNet/Protocol/Sessions/Exchange.cs index 19e7668..9ee8822 100644 --- a/MatterDotNet/Protocol/Sessions/Exchange.cs +++ b/MatterDotNet/Protocol/Sessions/Exchange.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Sessions/MessageState.cs b/MatterDotNet/Protocol/Sessions/MessageState.cs index 9986cfa..dda71dd 100644 --- a/MatterDotNet/Protocol/Sessions/MessageState.cs +++ b/MatterDotNet/Protocol/Sessions/MessageState.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Sessions/SecureSession.cs b/MatterDotNet/Protocol/Sessions/SecureSession.cs index dafb511..8c99f7e 100644 --- a/MatterDotNet/Protocol/Sessions/SecureSession.cs +++ b/MatterDotNet/Protocol/Sessions/SecureSession.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Sessions/SessionContext.cs b/MatterDotNet/Protocol/Sessions/SessionContext.cs index 6b75b89..735274f 100644 --- a/MatterDotNet/Protocol/Sessions/SessionContext.cs +++ b/MatterDotNet/Protocol/Sessions/SessionContext.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Sessions/SessionManager.cs b/MatterDotNet/Protocol/Sessions/SessionManager.cs index 10bd6e8..2821f96 100644 --- a/MatterDotNet/Protocol/Sessions/SessionManager.cs +++ b/MatterDotNet/Protocol/Sessions/SessionManager.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Subprotocols/CASE.cs b/MatterDotNet/Protocol/Subprotocols/CASE.cs index 7d11f67..7377fec 100644 --- a/MatterDotNet/Protocol/Subprotocols/CASE.cs +++ b/MatterDotNet/Protocol/Subprotocols/CASE.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Subprotocols/InteractionManager.cs b/MatterDotNet/Protocol/Subprotocols/InteractionManager.cs index 833b8f5..4513df6 100644 --- a/MatterDotNet/Protocol/Subprotocols/InteractionManager.cs +++ b/MatterDotNet/Protocol/Subprotocols/InteractionManager.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/Subprotocols/PASE.cs b/MatterDotNet/Protocol/Subprotocols/PASE.cs index 00fc542..77073dd 100644 --- a/MatterDotNet/Protocol/Subprotocols/PASE.cs +++ b/MatterDotNet/Protocol/Subprotocols/PASE.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/TLV/ElementType.cs b/MatterDotNet/Protocol/TLV/ElementType.cs index 1281d05..3c9f16e 100644 --- a/MatterDotNet/Protocol/TLV/ElementType.cs +++ b/MatterDotNet/Protocol/TLV/ElementType.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/TLV/FieldReader.cs b/MatterDotNet/Protocol/TLV/FieldReader.cs index 7b8c201..2cb38e2 100644 --- a/MatterDotNet/Protocol/TLV/FieldReader.cs +++ b/MatterDotNet/Protocol/TLV/FieldReader.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/TLV/TLVControl.cs b/MatterDotNet/Protocol/TLV/TLVControl.cs index ced1132..95d1a41 100644 --- a/MatterDotNet/Protocol/TLV/TLVControl.cs +++ b/MatterDotNet/Protocol/TLV/TLVControl.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/TLV/TLVReader.cs b/MatterDotNet/Protocol/TLV/TLVReader.cs index b6cc501..fead07f 100644 --- a/MatterDotNet/Protocol/TLV/TLVReader.cs +++ b/MatterDotNet/Protocol/TLV/TLVReader.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Protocol/TLV/TLVWriter.cs b/MatterDotNet/Protocol/TLV/TLVWriter.cs index f5030cb..be1c16a 100644 --- a/MatterDotNet/Protocol/TLV/TLVWriter.cs +++ b/MatterDotNet/Protocol/TLV/TLVWriter.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Util/Checksum.cs b/MatterDotNet/Util/Checksum.cs index b79a6c0..f89a622 100644 --- a/MatterDotNet/Util/Checksum.cs +++ b/MatterDotNet/Util/Checksum.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/MatterDotNet/Util/SpanUtil.cs b/MatterDotNet/Util/SpanUtil.cs index 05740c5..094be99 100644 --- a/MatterDotNet/Util/SpanUtil.cs +++ b/MatterDotNet/Util/SpanUtil.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Test/ECTests.cs b/Test/ECTests.cs index 4c68c88..3e950dd 100644 --- a/Test/ECTests.cs +++ b/Test/ECTests.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Test/MatterCertTests.cs b/Test/MatterCertTests.cs index 3c5ae55..55e71ca 100644 --- a/Test/MatterCertTests.cs +++ b/Test/MatterCertTests.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Test/PayloadParsingTests.cs b/Test/PayloadParsingTests.cs index 6ab413e..737969e 100644 --- a/Test/PayloadParsingTests.cs +++ b/Test/PayloadParsingTests.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by diff --git a/Test/SpakeTests.cs b/Test/SpakeTests.cs index d90f8a6..487beaf 100644 --- a/Test/SpakeTests.cs +++ b/Test/SpakeTests.cs @@ -1,4 +1,4 @@ -// MatterDotNet Copyright (C) 2024 +// MatterDotNet Copyright (C) 2025 // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by