diff --git a/LICENSE b/LICENSE
index ce93b57a..f0de4de5 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2018-2021 Simone Curzi
+Copyright (c) 2018-2024 Simone Curzi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Samples/SampleExtensions/ExtensionLibrary.cs b/Samples/SampleExtensions/ExtensionLibrary.cs
index 05047a00..293b0cd2 100644
--- a/Samples/SampleExtensions/ExtensionLibrary.cs
+++ b/Samples/SampleExtensions/ExtensionLibrary.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Samples/SampleExtensions/Reporting/EntitiesSheetProvider.cs b/Samples/SampleExtensions/Reporting/EntitiesSheetProvider.cs
new file mode 100644
index 00000000..7f31329e
--- /dev/null
+++ b/Samples/SampleExtensions/Reporting/EntitiesSheetProvider.cs
@@ -0,0 +1,56 @@
+using System.Collections.Generic;
+using System.Linq;
+using ThreatsManager.Extensions.Reporting;
+using ThreatsManager.Interfaces;
+using ThreatsManager.Interfaces.ObjectModel;
+using ThreatsManager.Utilities;
+
+namespace SampleExtensions.Reporting
+{
+ ///
+ /// Summmary Sheet Providers add sheets to the Excel Summary.
+ /// This example is designed to add a table with the list of all entities defined in the threat model.
+ ///
+ [Extension("14BF4591-C8C6-4971-A324-AC966ECFB389", "Entities Sheet Provider", 100, ExecutionMode.Business)]
+ public class EntitiesSheetProvider : ISummarySheetProvider
+ {
+ ///
+ /// The name of the sheet to be created in Excel.
+ ///
+ public string Name => "Entities";
+
+ ///
+ /// Method called to get the rows of the table.
+ ///
+ /// Threat Model containing the information used to generate the sheet.
+ /// The data to be used to create the sheet.
+ /// TMS checks that every row has the same number of items. If not, it does not create the sheet.
+ /// The first row contains the header.
+ public IEnumerable> GetRows(IThreatModel model)
+ {
+ IEnumerable> result = null;
+
+ // Let's first get the list of items to be created.
+ // This list could be sorted as required.
+ var entities = model?.Entities?.ToArray();
+
+ if (entities?.Any() ?? false)
+ {
+ var table = new List>();
+
+ // The first row contains the header.
+ table.Add(new[] { "Name", "Entity Type", "Description" });
+
+ // Enumeration of the entities.
+ foreach ( var entity in entities)
+ {
+ table.Add(new[] { entity.Name, entity.GetEntityType().GetEnumLabel(), entity.Description });
+ }
+
+ result = table;
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/Samples/SampleExtensions/SampleExtensions.csproj b/Samples/SampleExtensions/SampleExtensions.csproj
index 19e59841..475fc823 100644
--- a/Samples/SampleExtensions/SampleExtensions.csproj
+++ b/Samples/SampleExtensions/SampleExtensions.csproj
@@ -43,31 +43,31 @@
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
-
- ..\packages\System.Drawing.Common.7.0.0\lib\net462\System.Drawing.Common.dll
+
+ ..\packages\System.Drawing.Common.8.0.3\lib\net462\System.Drawing.Common.dll
-
- ..\packages\System.IO.Packaging.7.0.0\lib\net462\System.IO.Packaging.dll
+
+ ..\packages\System.IO.Packaging.8.0.0\lib\net462\System.IO.Packaging.dll
@@ -75,20 +75,23 @@
-
- ..\packages\ThreatsManager.AutoGenRules.2.1.4\lib\net481\ThreatsManager.AutoGenRules.dll
+
+ ..\packages\ThreatsManager.AutoGenRules.2.1.5\lib\net481\ThreatsManager.AutoGenRules.dll
-
- ..\packages\ThreatsManager.AutoThreatGeneration.2.1.4\lib\net481\ThreatsManager.AutoThreatGeneration.dll
+
+ ..\packages\ThreatsManager.AutoThreatGeneration.2.1.5\lib\net481\ThreatsManager.AutoThreatGeneration.dll
+
+
+ ..\packages\ThreatsManager.Extensions.Client.2.1.5\lib\net481\ThreatsManager.Extensions.Client.dll
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Icons.dll
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Icons.dll
-
- ..\packages\ThreatsManager.Interfaces.2.1.4\lib\net481\ThreatsManager.Interfaces.dll
+
+ ..\packages\ThreatsManager.Interfaces.2.1.5\lib\net481\ThreatsManager.Interfaces.dll
-
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Utilities.dll
+
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Utilities.dll
@@ -101,6 +104,7 @@
True
Resources.resx
+
diff --git a/Samples/SampleExtensions/packages.config b/Samples/SampleExtensions/packages.config
index 60fd4bec..dd155aa4 100644
--- a/Samples/SampleExtensions/packages.config
+++ b/Samples/SampleExtensions/packages.config
@@ -1,17 +1,18 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/Samples/SampleWinFormExtensions/ExtensionLibrary.cs b/Samples/SampleWinFormExtensions/ExtensionLibrary.cs
index 05047a00..293b0cd2 100644
--- a/Samples/SampleWinFormExtensions/ExtensionLibrary.cs
+++ b/Samples/SampleWinFormExtensions/ExtensionLibrary.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj b/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
index ffba97de..019df4a1 100644
--- a/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
+++ b/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -40,36 +40,36 @@
4
-
- ..\packages\ExCSS.4.2.1\lib\net48\ExCSS.dll
+
+ ..\packages\ExCSS.4.2.5\lib\net48\ExCSS.dll
..\packages\Fizzler.1.3.0\lib\netstandard2.0\Fizzler.dll
- ..\packages\ThreatsManager.Utilities.WinForms.2.1.4\lib\net481\Keyoti.RapidSpell.NET4.dll
+ ..\packages\ThreatsManager.Utilities.WinForms.2.1.5\lib\net481\Keyoti.RapidSpell.NET4.dll
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
- ..\packages\Svg.3.4.4\lib\net462\Svg.dll
+ ..\packages\Svg.3.4.7\lib\net481\Svg.dll
@@ -79,11 +79,11 @@
-
- ..\packages\System.Drawing.Common.7.0.0\lib\net462\System.Drawing.Common.dll
+
+ ..\packages\System.Drawing.Common.8.0.3\lib\net462\System.Drawing.Common.dll
-
- ..\packages\System.IO.Packaging.7.0.0\lib\net462\System.IO.Packaging.dll
+
+ ..\packages\System.IO.Packaging.8.0.0\lib\net462\System.IO.Packaging.dll
..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
@@ -106,23 +106,23 @@
-
- ..\packages\ThreatsManager.Utilities.WinForms.2.1.4\lib\net481\ThreatsManager.AutoGenRules.dll
+
+ ..\packages\ThreatsManager.Utilities.WinForms.2.1.5\lib\net481\ThreatsManager.AutoGenRules.dll
-
- ..\packages\ThreatsManager.Extensions.Client.2.1.4\lib\net481\ThreatsManager.Extensions.Client.dll
+
+ ..\packages\ThreatsManager.Extensions.Client.2.1.5\lib\net481\ThreatsManager.Extensions.Client.dll
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Icons.dll
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Icons.dll
-
- ..\packages\ThreatsManager.Interfaces.2.1.4\lib\net481\ThreatsManager.Interfaces.dll
+
+ ..\packages\ThreatsManager.Interfaces.2.1.5\lib\net481\ThreatsManager.Interfaces.dll
-
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Utilities.dll
+
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Utilities.dll
-
- ..\packages\ThreatsManager.Utilities.WinForms.2.1.4\lib\net481\ThreatsManager.Utilities.WinForms.dll
+
+ ..\packages\ThreatsManager.Utilities.WinForms.2.1.5\lib\net481\ThreatsManager.Utilities.WinForms.dll
@@ -231,8 +231,8 @@
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Samples/SampleWinFormExtensions/app.config b/Samples/SampleWinFormExtensions/app.config
index 59bbc3b0..2399b5b3 100644
--- a/Samples/SampleWinFormExtensions/app.config
+++ b/Samples/SampleWinFormExtensions/app.config
@@ -48,7 +48,7 @@
-
+
diff --git a/Samples/SampleWinFormExtensions/packages.config b/Samples/SampleWinFormExtensions/packages.config
index 2cfaf807..097d4a1f 100644
--- a/Samples/SampleWinFormExtensions/packages.config
+++ b/Samples/SampleWinFormExtensions/packages.config
@@ -1,25 +1,25 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/Samples/SimpleThreatModelAnalyzer/ExtensionLibrary.cs b/Samples/SimpleThreatModelAnalyzer/ExtensionLibrary.cs
index 05047a00..293b0cd2 100644
--- a/Samples/SimpleThreatModelAnalyzer/ExtensionLibrary.cs
+++ b/Samples/SimpleThreatModelAnalyzer/ExtensionLibrary.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj b/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
index 736b5570..6363c489 100644
--- a/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
+++ b/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
@@ -41,46 +41,47 @@
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
-
- ..\packages\System.Configuration.ConfigurationManager.7.0.0\lib\net462\System.Configuration.ConfigurationManager.dll
+
+ ..\packages\System.Configuration.ConfigurationManager.8.0.0\lib\net462\System.Configuration.ConfigurationManager.dll
+
-
- ..\packages\System.Drawing.Common.7.0.0\lib\net462\System.Drawing.Common.dll
+
+ ..\packages\System.Drawing.Common.8.0.3\lib\net462\System.Drawing.Common.dll
-
- ..\packages\System.IO.Packaging.7.0.0\lib\net462\System.IO.Packaging.dll
+
+ ..\packages\System.IO.Packaging.8.0.0\lib\net462\System.IO.Packaging.dll
..\packages\System.Security.AccessControl.6.0.0\lib\net461\System.Security.AccessControl.dll
-
- ..\packages\System.Security.Cryptography.ProtectedData.7.0.1\lib\net462\System.Security.Cryptography.ProtectedData.dll
+
+ ..\packages\System.Security.Cryptography.ProtectedData.8.0.0\lib\net462\System.Security.Cryptography.ProtectedData.dll
-
- ..\packages\System.Security.Permissions.7.0.0\lib\net462\System.Security.Permissions.dll
+
+ ..\packages\System.Security.Permissions.8.0.0\lib\net462\System.Security.Permissions.dll
..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll
@@ -93,17 +94,17 @@
-
- ..\packages\ThreatsManager.Engine.2.1.4\lib\net481\ThreatsManager.Engine.dll
+
+ ..\packages\ThreatsManager.Engine.2.1.5\lib\net481\ThreatsManager.Engine.dll
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Icons.dll
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Icons.dll
-
- ..\packages\ThreatsManager.Interfaces.2.1.4\lib\net481\ThreatsManager.Interfaces.dll
+
+ ..\packages\ThreatsManager.Interfaces.2.1.5\lib\net481\ThreatsManager.Interfaces.dll
-
- ..\packages\ThreatsManager.Utilities.2.1.4\lib\net481\ThreatsManager.Utilities.dll
+
+ ..\packages\ThreatsManager.Utilities.2.1.5\lib\net481\ThreatsManager.Utilities.dll
diff --git a/Samples/SimpleThreatModelAnalyzer/packages.config b/Samples/SimpleThreatModelAnalyzer/packages.config
index b5795c7b..e6ae380b 100644
--- a/Samples/SimpleThreatModelAnalyzer/packages.config
+++ b/Samples/SimpleThreatModelAnalyzer/packages.config
@@ -1,21 +1,21 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/Sources/Extensions/Extensions.sln b/Sources/Extensions/Extensions.sln
index 10762705..d354c6e2 100644
--- a/Sources/Extensions/Extensions.sln
+++ b/Sources/Extensions/Extensions.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30413.136
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34309.116
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThreatsManager.AutoThreatGeneration", "ThreatsManager.AutoThreatGeneration\ThreatsManager.AutoThreatGeneration.csproj", "{C96D95AE-1081-4BD8-9004-0D34574FDC9B}"
EndProject
@@ -25,7 +25,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThreatsManager.Extensions.C
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThreatsManager.Mitre", "ThreatsManager.Mitre\ThreatsManager.Mitre.csproj", "{07906AC4-4A74-4778-8D3E-103A146A6656}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreatsManager.QuantitativeRisk", "ThreatsManager.QuantitativeRisk\ThreatsManager.QuantitativeRisk.csproj", "{4E741278-7437-4A5E-850B-BB08AD5569A6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThreatsManager.QuantitativeRisk", "ThreatsManager.QuantitativeRisk\ThreatsManager.QuantitativeRisk.csproj", "{4E741278-7437-4A5E-850B-BB08AD5569A6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThreatsManager.AIAssistant", "ThreatsManager.AIAssistant\ThreatsManager.AIAssistant.csproj", "{7E09402D-889A-4332-9A66-DA96DFE092D8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -81,6 +83,10 @@ Global
{4E741278-7437-4A5E-850B-BB08AD5569A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E741278-7437-4A5E-850B-BB08AD5569A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E741278-7437-4A5E-850B-BB08AD5569A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E09402D-889A-4332-9A66-DA96DFE092D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7E09402D-889A-4332-9A66-DA96DFE092D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E09402D-889A-4332-9A66-DA96DFE092D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7E09402D-889A-4332-9A66-DA96DFE092D8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIAssistant.cs b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIAssistant.cs
new file mode 100644
index 00000000..17bdf9d6
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIAssistant.cs
@@ -0,0 +1,105 @@
+using Azure;
+using Azure.AI.OpenAI;
+using PostSharp.Patterns.Contracts;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using ThreatsManager.Interfaces.ObjectModel;
+using ThreatsManager.Interfaces.ObjectModel.Entities;
+
+namespace ThreatsManager.AIAssistant.Engine
+{
+ ///
+ /// AI Assistant engine.
+ ///
+ /// This is the main entry point to use the OpenAI services for threat modeling.
+ public class AIAssistant
+ {
+ #region Private member variables.
+ private readonly OpenAIClient _client;
+ private readonly string _deploymentName;
+ #endregion
+
+ #region Constructors.
+ ///
+ /// Constructor to access OpenAI APIs.
+ ///
+ /// API key to use.
+ /// OpenAI ChatGPT client. If missing, ChatGPT 3.5 will be used.
+ /// It uses the default version of the APIs.
+ public AIAssistant([Required] string key, string engine = "gpt-3.5-turbo")
+ {
+ _client = new OpenAIClient(key);
+ _deploymentName = engine;
+ }
+
+ ///
+ /// Constructor to access OpenAI APIs.
+ ///
+ /// API key to use.
+ /// Options for the client.
+ /// OpenAI ChatGPT client. If missing, ChatGPT 3.5 will be used.
+ public AIAssistant([Required] string key, [NotNull] OpenAIClientOptions options,
+ string engine = "gpt-3.5-turbo")
+ {
+ _client = new OpenAIClient(key, options);
+ _deploymentName = engine;
+ }
+
+ ///
+ /// Constructor to access Azure OpenAI APIs.
+ ///
+ /// URL of the APIs.
+ /// Name of the deployment to be used.
+ /// API key to use.
+ public AIAssistant([Required] string url, [Required] string deploymentName, [Required] string key)
+ {
+ _client = new OpenAIClient(new Uri(url), new AzureKeyCredential(key));
+ _deploymentName = deploymentName;
+ }
+
+ ///
+ /// Constructor to access Azure OpenAI APIs.
+ ///
+ /// URL of the APIs.
+ /// Name of the deployment to be used.
+ /// API key to use.
+ /// Options for the client.
+ public AIAssistant([Required] string url, [Required] string deploymentName,
+ [Required] string key, [NotNull] OpenAIClientOptions options)
+ {
+ _client = new OpenAIClient(new Uri(url), new AzureKeyCredential(key), options);
+ _deploymentName = deploymentName;
+ }
+ #endregion
+
+ #region Public member functions.
+ ///
+ /// Get a list of questions related to the Entity passed as argument.
+ ///
+ /// Entity to be analyzed.
+ ///
+ public IEnumerable GetQuestions([NotNull] IEntity entity)
+ {
+ throw new NotImplementedException();
+ }
+
+ public IEnumerable GetThreats([NotNull] IEntity entity)
+ { throw new NotImplementedException(); }
+
+ public IEnumerable GetMitigations([NotNull] IEntity entity, [NotNull] AIThreat threat)
+ { throw new NotImplementedException(); }
+ #endregion
+
+ #region Private member functions.
+ private string GetThreatModelDescription([NotNull] IThreatModel model)
+ {
+ throw new NotImplementedException();
+ }
+ private string GetEntityDescription([NotNull] IEntity entity)
+ {
+ throw new NotImplementedException();
+ }
+ #endregion
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIMitigation.cs b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIMitigation.cs
new file mode 100644
index 00000000..45a479f4
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIMitigation.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ThreatsManager.AIAssistant.Engine
+{
+ public class AIMitigation
+ {
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIThreat.cs b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIThreat.cs
new file mode 100644
index 00000000..e86a821c
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIThreat.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ThreatsManager.AIAssistant.Engine
+{
+ public class AIThreat
+ {
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Engine/Conversation.cs b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/Conversation.cs
new file mode 100644
index 00000000..318bbc80
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Engine/Conversation.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ThreatsManager.AIAssistant.Engine
+{
+ public class Conversation
+ {
+
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.AIAssistant/ExtensionsContainer.cs
new file mode 100644
index 00000000..d224525e
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/ExtensionsContainer.cs
@@ -0,0 +1,3 @@
+using ThreatsManager.Interfaces;
+
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.Designer.cs b/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..0ce488b0
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.Designer.cs
@@ -0,0 +1,99 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace ThreatsManager.AIAssistant.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ThreatsManager.AIAssistant.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your task is to provide potential mitigations for the given threat identified in the threat model. It is very important that your responses are tailored to reflect the details of the threat, and must specify for each mitigation a detailed explanation of how it can be implemented based on the adopted technologies..
+ ///
+ internal static string Mitigations {
+ get {
+ return ResourceManager.GetString("Mitigations", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Act as a cyber security expert with more than 20 years experience producing comprehensive threat models for a wide range of applications..
+ ///
+ internal static string Preamble {
+ get {
+ return ResourceManager.GetString("Preamble", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your task is to use the application description provided to you, along with the description of a component of the application, to produce a list of specific questions to understand more about the component. It is very important that your questions are tailored to surface vulnerabilities and identify potential threats to the component in the context of the application it belongs to..
+ ///
+ internal static string Questions {
+ get {
+ return ResourceManager.GetString("Questions", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Your task is to use the application description provided to you to produce a list of specific threats for the application. Your analysis should provide a credible scenario in which each threat could occur in the context of the application. It is very important that your responses are tailored to reflect the details you are given..
+ ///
+ internal static string Threats {
+ get {
+ return ResourceManager.GetString("Threats", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.resx b/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.resx
new file mode 100644
index 00000000..03dbf321
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Your task is to provide potential mitigations for the given threat identified in the threat model. It is very important that your responses are tailored to reflect the details of the threat, and must specify for each mitigation a detailed explanation of how it can be implemented based on the adopted technologies.
+
+
+ Act as a cyber security expert with more than 20 years experience producing comprehensive threat models for a wide range of applications.
+
+
+ Your task is to use the application description provided to you, along with the description of a component of the application, to produce a list of specific questions to understand more about the component. It is very important that your questions are tailored to surface vulnerabilities and identify potential threats to the component in the context of the application it belongs to.
+
+
+ Your task is to use the application description provided to you to produce a list of specific threats for the application. Your analysis should provide a credible scenario in which each threat could occur in the context of the application. It is very important that your responses are tailored to reflect the details you are given.
+
+
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
new file mode 100644
index 00000000..6284b985
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
@@ -0,0 +1,49 @@
+
+
+ net481
+ Threats Manager Platform AI Assistant library.
+ 2.1.5.0
+ Simone Curzi
+ Simone Curzi
+ Threats Manager Platform
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
+ https://www.nuget.org/packages/ThreatsManager.Engine/
+ https://github.com/simonec73/threatsmanager
+ 2.1.5.0
+ 2.1.5
+ true
+ ..\..\ThreatsManager.Engine\ThreatsManager.snk
+ $(NoWarn);NU1505
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
+
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.AutoGenRules/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.AutoGenRules/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.AutoGenRules/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.AutoGenRules/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
index 215e626f..8e4e02b6 100644
--- a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
@@ -2,15 +2,15 @@
net481
Threats Manager Platform Auto Generation Rules library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -22,7 +22,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
index 72bb54b3..064bcabb 100644
--- a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Auto Threat Generation library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.DevOps/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.DevOps/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.DevOps/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.DevOps/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
index 7cbc883f..ac7b1279 100644
--- a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
+++ b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform DevOps Integration library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -23,9 +23,9 @@
-
-
-
+
+
+
diff --git a/Sources/Extensions/ThreatsManager.Extensions.Client/Reporting/ISummarySheetProvider.cs b/Sources/Extensions/ThreatsManager.Extensions.Client/Reporting/ISummarySheetProvider.cs
new file mode 100644
index 00000000..da58637a
--- /dev/null
+++ b/Sources/Extensions/ThreatsManager.Extensions.Client/Reporting/ISummarySheetProvider.cs
@@ -0,0 +1,30 @@
+using System.Collections.Generic;
+using ThreatsManager.Interfaces;
+using ThreatsManager.Interfaces.Extensions;
+using ThreatsManager.Interfaces.ObjectModel;
+
+namespace ThreatsManager.Extensions.Reporting
+{
+ ///
+ /// Provider used to generate additional sheets in the Summary Excel Report.
+ ///
+ [ExtensionDescription("Table provider for the Summary Excel Report")]
+ public interface ISummarySheetProvider : IExtension
+ {
+ ///
+ /// Name of the sheet to be created.
+ ///
+ string Name { get; }
+
+ ///
+ /// Generates the Rows to be used to fill the sheet.
+ ///
+ /// Reference Threat Model for sheet generation.
+ /// The outer enumeration is for the rows.
+ /// The inner enumeration contains the fields for each row.
+ /// Each row must have the same number of fields,
+ /// otherwise the sheet will not be generated.
+ /// The first row is used as the Header.
+ IEnumerable> GetRows(IThreatModel model);
+ }
+}
diff --git a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
index 7c6bc964..109b5bb1 100644
--- a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Extensions Client library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
ThreatsManager.Extensions
@@ -24,7 +24,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Extensions/Actions/CreateTrustBoundary.cs b/Sources/Extensions/ThreatsManager.Extensions/Actions/CreateTrustBoundary.cs
index 0967b721..bb1cb974 100644
--- a/Sources/Extensions/ThreatsManager.Extensions/Actions/CreateTrustBoundary.cs
+++ b/Sources/Extensions/ThreatsManager.Extensions/Actions/CreateTrustBoundary.cs
@@ -47,7 +47,7 @@ public bool Execute(IIdentity identity)
if (identity is IDiagram diagram)
{
var trustBoundary = diagram.Model?.AddGroup();
- IdentityAddingRequired?.Invoke(diagram, trustBoundary, PointF.Empty, new SizeF(600, 300));
+ IdentityAddingRequired?.Invoke(diagram, trustBoundary, PointF.Empty, new SizeF(400, 200));
result = true;
}
else if (identity is IThreatModel threatModel)
diff --git a/Sources/Extensions/ThreatsManager.Extensions/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.Extensions/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.Extensions/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.Extensions/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
index 772f651b..808e458e 100644
--- a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Extensions library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Mitre/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.Mitre/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.Mitre/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.Mitre/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
index c922ffe0..ad9fb1cb 100644
--- a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
+++ b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform MITRE Extensions library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -23,9 +23,9 @@
-
+
-
+
diff --git a/Sources/Extensions/ThreatsManager.MsTmt/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.MsTmt/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.MsTmt/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.MsTmt/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
index 161a4889..0a95e509 100644
--- a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
+++ b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Microsoft Threat Modeling Tool Import library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505;CS3021
@@ -28,9 +28,9 @@
-
-
-
+
+
+
diff --git a/Sources/Extensions/ThreatsManager.PackageManagers/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.PackageManagers/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.PackageManagers/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.PackageManagers/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
index 07778892..895b5fa9 100644
--- a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
+++ b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Package Managers library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -24,7 +24,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Quality/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.Quality/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.Quality/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.Quality/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
index 5af21842..fd8c4477 100644
--- a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
+++ b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Quality library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ExtensionsContainer.cs b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ExtensionsContainer.cs
+++ b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
index 73dd8da0..0155a8c4 100644
--- a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
+++ b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Quantitative Risk Extensions library.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
..\..\ThreatsManager.Engine\ThreatsManager.snk
$(NoWarn);NU1505
@@ -25,7 +25,7 @@
-
+
diff --git a/Sources/Resources/net481/ThreatsManager.Icons.dll b/Sources/Resources/net481/ThreatsManager.Icons.dll
index 08a63bd1..6d3a6128 100644
Binary files a/Sources/Resources/net481/ThreatsManager.Icons.dll and b/Sources/Resources/net481/ThreatsManager.Icons.dll differ
diff --git a/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json
index 6018d8a1..94beac09 100644
--- a/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json
+++ b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json
@@ -2,8 +2,8 @@
"files": [],
"packages": [
{
- "name": "System.Drawing.Common",
- "SPDXID": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
+ "name": "Newtonsoft.Json",
+ "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -12,19 +12,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.2",
+ "versionInfo": "13.0.3",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.2"
+ "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp",
- "SPDXID": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
+ "name": "PostSharp.Patterns.Model.Redist",
+ "SPDXID": "SPDXRef-Package-FA5D8EFBD719F81F34B28843F66D653B3F33160B0FC1AF355E14B97A62F2A59E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -33,19 +33,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.Core",
- "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
+ "name": "Microsoft.IdentityModel.Abstractions",
+ "SPDXID": "SPDXRef-Package-ED6E8FB997A6D78D08443EC95BD284BFE932248A440D142BCB8557A36DC4A5A2",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -54,19 +54,61 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Abstractions%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Common.Redist",
- "SPDXID": "SPDXRef-Package-BB7031E0779021EB63EFC1BB9ACF70E0B6FA3C65AA115E98C6C35D15DCA02339",
+ "name": "System.Runtime.CompilerServices.Unsafe",
+ "SPDXID": "SPDXRef-Package-931589BD44AB626716D546809406FE4D919C164FF884EA04D57BA10E2A8D64EC",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "4.7.1",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%404.7.1"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "System.IdentityModel.Tokens.Jwt",
+ "SPDXID": "SPDXRef-Package-A51161C96823E35F18ECB01793B545733228CEB78738651BD5BF03B9683AE351",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "6.30.1",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/System.IdentityModel.Tokens.Jwt%406.30.1"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "PostSharp.Patterns.Threading.Redist",
+ "SPDXID": "SPDXRef-Package-70FEAFC69B7A98460F2609DDAADD1215D82E918EC337FDCB0E6CE6717C00A976",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -75,12 +117,12 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
@@ -107,8 +149,8 @@
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundationServer.Client",
- "SPDXID": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "name": "PostSharp.Patterns.Model",
+ "SPDXID": "SPDXRef-Package-8BB2C578F040FA268F509BC9BA79CE8818B061F7A729C3979D3EAE41FDE0C582",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -117,19 +159,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.IdentityModel.Tokens.Jwt",
- "SPDXID": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "name": "Microsoft.AspNet.WebApi.Core",
+ "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -138,19 +180,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.IdentityModel.Tokens.Jwt%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.Client",
- "SPDXID": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
+ "name": "Microsoft.TeamFoundationServer.Client",
+ "SPDXID": "SPDXRef-Package-D85926065BB4CE37A6FA6F50EAF742F233EE07208ECD20E72875B22A91F718D5",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -159,19 +201,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Client%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Tokens",
- "SPDXID": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "name": "System.Memory.Data",
+ "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -180,19 +222,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "1.0.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%405.6.0"
+ "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Clients.ActiveDirectory",
- "SPDXID": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "name": "MathNet.Numerics.Signed",
+ "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -201,19 +243,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.6",
+ "versionInfo": "5.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Clients.ActiveDirectory%405.2.6"
+ "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model",
- "SPDXID": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "name": "PostSharp.Patterns.Aggregation",
+ "SPDXID": "SPDXRef-Package-D9DEFCAF5968755A03F930932A0DC5ACBB14D1A6B646B95FBC0EE49AB7B250D4",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -222,19 +264,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model.Redist",
- "SPDXID": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "name": "Microsoft.Identity.Client.Extensions.Msal",
+ "SPDXID": "SPDXRef-Package-F1A6940BF5D403F3E064202A7FC4F6D1AE1534716BF53B2F46B0DF5AA70197D2",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -243,19 +285,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2.23.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.Identity.Client.Extensions.Msal%402.23.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.JsonWebTokens",
- "SPDXID": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "name": "Microsoft.IdentityModel.Tokens",
+ "SPDXID": "SPDXRef-Package-1F6868692BA92B8833FB7BDD49335660B27070F01FE640B02ABF3CF85E9E917F",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -264,19 +306,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Common",
- "SPDXID": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "name": "System.Runtime.CompilerServices.Unsafe",
+ "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -285,19 +327,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "6.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Text.Json",
- "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
+ "name": "PostSharp.Patterns.Threading",
+ "SPDXID": "SPDXRef-Package-3F9BAB33E51D566FC5243580D7C6FB465D6CF56481C9A29E1FCB54758615112E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -306,19 +348,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.7.2",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.AI.OpenAI",
- "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "name": "PostSharp.Redist",
+ "SPDXID": "SPDXRef-Package-C686523A20CD43A3C5958A0FF4D9AA80EE32CC2280180C31BC3D7278129F7935",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -327,19 +369,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.0-beta.9",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
+ "referenceLocator": "pkg:nuget/PostSharp.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.Core",
- "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "name": "System.Security.Cryptography.ProtectedData",
+ "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -348,19 +390,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.35.0",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
+ "referenceLocator": "pkg:nuget/System.Security.Cryptography.ProtectedData%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading",
- "SPDXID": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "name": "System.Memory",
+ "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -369,19 +411,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "4.5.4",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ComponentModel.Composition",
- "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "name": "Microsoft.IdentityModel.Logging",
+ "SPDXID": "SPDXRef-Package-B5E9DFA3EF880DFD63E464878A4D9F62FD34E8760F0877C125CEF609A459E577",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -390,19 +432,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory.Data",
- "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "name": "Microsoft.VisualStudio.Services.Client",
+ "SPDXID": "SPDXRef-Package-22082FD72E8CF130874BE5C4C34DAF5C0760879E4935A27DAD871E64F0280929",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -411,19 +453,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.2",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
- "SPDXID": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "name": "System.IO.Packaging",
+ "SPDXID": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -432,19 +474,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4016.205.1"
+ "referenceLocator": "pkg:nuget/System.IO.Packaging%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Configuration.ConfigurationManager",
- "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "name": "PostSharp",
+ "SPDXID": "SPDXRef-Package-8709677B055DBEEE1AD21998424308E47C0022943DA35BC357D82421361E9D67",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -453,19 +495,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
+ "referenceLocator": "pkg:nuget/PostSharp%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.Bcl.AsyncInterfaces",
- "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "name": "HtmlAgilityPack",
+ "SPDXID": "SPDXRef-Package-69A986D6F543ED157CF60B09C3CDD7A4405DF633256C00FEFBC53DA1956B1EE5",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -474,19 +516,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.1.1",
+ "versionInfo": "1.11.60",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
+ "referenceLocator": "pkg:nuget/HtmlAgilityPack%401.11.60"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading.Redist",
- "SPDXID": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "name": "System.Text.Json",
+ "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -495,19 +537,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "4.7.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.IO.Packaging",
- "SPDXID": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "name": "Microsoft.Identity.Client",
+ "SPDXID": "SPDXRef-Package-4AEC43C47D6DFEEF0C68C67CD0D82CB712910D99C8D539F8E2CF18F97E4B8F59",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -516,19 +558,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "4.54.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.IO.Packaging%408.0.0"
+ "referenceLocator": "pkg:nuget/Microsoft.Identity.Client%404.54.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "MathNet.Numerics.Signed",
- "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "name": "System.ValueTuple",
+ "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -537,19 +579,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.0.0",
+ "versionInfo": "4.5.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
+ "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "HtmlAgilityPack",
- "SPDXID": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "name": "System.ComponentModel.Composition",
+ "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -558,19 +600,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.11.59",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/HtmlAgilityPack%401.11.59"
+ "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Logging",
- "SPDXID": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "name": "System.Drawing.Common",
+ "SPDXID": "SPDXRef-Package-A5B42B166F51056D849DB6264BA729C279719B482771CD17FFEFFD0ACE20AA71",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -579,19 +621,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "8.0.3",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%405.6.0"
+ "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.3"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation.Redist",
- "SPDXID": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "name": "System.Configuration.ConfigurationManager",
+ "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -600,19 +642,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory",
- "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "name": "Microsoft.AspNet.WebApi.WebHost",
+ "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -621,19 +663,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.4",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.WebHost%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Redist",
- "SPDXID": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "name": "Microsoft.Bcl.AsyncInterfaces",
+ "SPDXID": "SPDXRef-Package-1B079B578C50036D5A0DC1B1E3E5A7F7B045B06EE48E5EE8C59B29861C0863FC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -642,19 +684,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "1.1.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ValueTuple",
- "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "name": "Azure.Core",
+ "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -663,19 +705,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.0",
+ "versionInfo": "1.35.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
+ "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.WebHost",
- "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
+ "name": "PostSharp.Patterns.Common.Redist",
+ "SPDXID": "SPDXRef-Package-BEBD1E8CEC422BCF93B5D664FD68533DD7210FF2753C4392C82AA191E2D0C5AE",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -684,19 +726,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.WebHost%405.2.7"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation",
- "SPDXID": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
+ "name": "PostSharp.Patterns.Aggregation.Redist",
+ "SPDXID": "SPDXRef-Package-E60C7AE37ABFF6097F9BC13C86711A4AD51EDF6D78324EEE397F927345250EFF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -705,19 +747,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Runtime.CompilerServices.Unsafe",
- "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
+ "name": "Microsoft.VisualStudio.Services.InteractiveClient",
+ "SPDXID": "SPDXRef-Package-8425361196B240DBA621FD99DF72107E5EF7AD21887F5BF85084C6D81043C05D",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -726,19 +768,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "6.0.0",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.InteractiveClient%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Newtonsoft.Json",
- "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
+ "name": "Microsoft.IdentityModel.JsonWebTokens",
+ "SPDXID": "SPDXRef-Package-BF26B2207107EFC0BA7C9457143425D48C35B9E4A5F642A1E9C13D0A672387B4",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -747,19 +789,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "13.0.3",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.InteractiveClient",
- "SPDXID": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "name": "Microsoft.Bcl.AsyncInterfaces",
+ "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -768,19 +810,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "1.1.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.InteractiveClient%4016.205.1"
+ "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.Client",
- "SPDXID": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "name": "PostSharp.Patterns.Common",
+ "SPDXID": "SPDXRef-Package-E5B2BC1223432CD882AC040EAAF07A525784D06429CE1F62F5BA2E9D7525F3AA",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -789,19 +831,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Security.Cryptography.ProtectedData",
- "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "name": "Microsoft.AspNet.WebApi.Client",
+ "SPDXID": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -810,12 +852,33 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Security.Cryptography.ProtectedData%408.0.0"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Client%405.2.7"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
+ "SPDXID": "SPDXRef-Package-5E8B61B595E583BBEF7ADCA095CBE2B5B173E786C455120EF6B9C37A13089A6E",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "19.225.1",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4019.225.1"
}
],
"supplier": "NOASSERTION"
@@ -841,6 +904,27 @@
],
"supplier": "NOASSERTION"
},
+ {
+ "name": "Azure.AI.OpenAI",
+ "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "1.0.0-beta.9",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
{
"name": "Threats Manager Platform",
"SPDXID": "SPDXRef-RootPackage",
@@ -869,12 +953,12 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
+ "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
+ "relatedSpdxElement": "SPDXRef-Package-1B079B578C50036D5A0DC1B1E3E5A7F7B045B06EE48E5EE8C59B29861C0863FC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -884,127 +968,137 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "relatedSpdxElement": "SPDXRef-Package-A5B42B166F51056D849DB6264BA729C279719B482771CD17FFEFFD0ACE20AA71",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "relatedSpdxElement": "SPDXRef-Package-BF26B2207107EFC0BA7C9457143425D48C35B9E4A5F642A1E9C13D0A672387B4",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "relatedSpdxElement": "SPDXRef-Package-8425361196B240DBA621FD99DF72107E5EF7AD21887F5BF85084C6D81043C05D",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "relatedSpdxElement": "SPDXRef-Package-E60C7AE37ABFF6097F9BC13C86711A4AD51EDF6D78324EEE397F927345250EFF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "relatedSpdxElement": "SPDXRef-Package-BEBD1E8CEC422BCF93B5D664FD68533DD7210FF2753C4392C82AA191E2D0C5AE",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "relatedSpdxElement": "SPDXRef-Package-70FEAFC69B7A98460F2609DDAADD1215D82E918EC337FDCB0E6CE6717C00A976",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "relatedSpdxElement": "SPDXRef-Package-A51161C96823E35F18ECB01793B545733228CEB78738651BD5BF03B9683AE351",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "relatedSpdxElement": "SPDXRef-Package-931589BD44AB626716D546809406FE4D919C164FF884EA04D57BA10E2A8D64EC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "relatedSpdxElement": "SPDXRef-Package-ED6E8FB997A6D78D08443EC95BD284BFE932248A440D142BCB8557A36DC4A5A2",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "relatedSpdxElement": "SPDXRef-Package-FA5D8EFBD719F81F34B28843F66D653B3F33160B0FC1AF355E14B97A62F2A59E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "relatedSpdxElement": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "relatedSpdxElement": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "relatedSpdxElement": "SPDXRef-Package-4AEC43C47D6DFEEF0C68C67CD0D82CB712910D99C8D539F8E2CF18F97E4B8F59",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "relatedSpdxElement": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
+ "relatedSpdxElement": "SPDXRef-Package-69A986D6F543ED157CF60B09C3CDD7A4405DF633256C00FEFBC53DA1956B1EE5",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "relatedSpdxElement": "SPDXRef-Package-8709677B055DBEEE1AD21998424308E47C0022943DA35BC357D82421361E9D67",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "relatedSpdxElement": "SPDXRef-Package-3F9BAB33E51D566FC5243580D7C6FB465D6CF56481C9A29E1FCB54758615112E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
+ "relatedSpdxElement": "SPDXRef-Package-1F6868692BA92B8833FB7BDD49335660B27070F01FE640B02ABF3CF85E9E917F",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
+ "relatedSpdxElement": "SPDXRef-Package-F1A6940BF5D403F3E064202A7FC4F6D1AE1534716BF53B2F46B0DF5AA70197D2",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "relatedSpdxElement": "SPDXRef-Package-D9DEFCAF5968755A03F930932A0DC5ACBB14D1A6B646B95FBC0EE49AB7B250D4",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-D85926065BB4CE37A6FA6F50EAF742F233EE07208ECD20E72875B22A91F718D5",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -1014,57 +1108,67 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
+ "relatedSpdxElement": "SPDXRef-Package-8BB2C578F040FA268F509BC9BA79CE8818B061F7A729C3979D3EAE41FDE0C582",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
+ "relatedSpdxElement": "SPDXRef-Package-22082FD72E8CF130874BE5C4C34DAF5C0760879E4935A27DAD871E64F0280929",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "relatedSpdxElement": "SPDXRef-Package-B5E9DFA3EF880DFD63E464878A4D9F62FD34E8760F0877C125CEF609A459E577",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
+ "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "relatedSpdxElement": "SPDXRef-Package-C686523A20CD43A3C5958A0FF4D9AA80EE32CC2280180C31BC3D7278129F7935",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "relatedSpdxElement": "SPDXRef-Package-5E8B61B595E583BBEF7ADCA095CBE2B5B173E786C455120EF6B9C37A13089A6E",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BB7031E0779021EB63EFC1BB9ACF70E0B6FA3C65AA115E98C6C35D15DCA02339",
+ "relatedSpdxElement": "SPDXRef-Package-E5B2BC1223432CD882AC040EAAF07A525784D06429CE1F62F5BA2E9D7525F3AA",
"spdxElementId": "SPDXRef-RootPackage"
}
],
@@ -1072,9 +1176,9 @@
"dataLicense": "CC0-1.0",
"SPDXID": "SPDXRef-DOCUMENT",
"name": "Threats Manager Platform 2.0.0",
- "documentNamespace": "https://github.com/simonec73/threatsmanager/Threats%20Manager%20Platform/2.0.0/GN0HbOSl80e4m27xnKpybg",
+ "documentNamespace": "https://github.com/simonec73/threatsmanager/Threats%20Manager%20Platform/2.0.0/k0o9Bl_VVkOuBnFe4VFdjw",
"creationInfo": {
- "created": "2024-03-17T07:30:55Z",
+ "created": "2024-04-04T08:07:39Z",
"creators": [
"Organization: Simone Curzi",
"Tool: Microsoft.SBOMTool-0.2.7"
diff --git a/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json.sha256 b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json.sha256
index c902ec97..ae56dc68 100644
Binary files a/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json.sha256 and b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json.sha256 differ
diff --git a/Sources/ThreatsManager.Engine/Aspects/EntityShapesContainerAspect.cs b/Sources/ThreatsManager.Engine/Aspects/EntityShapesContainerAspect.cs
index c1ce417d..f52f66cb 100644
--- a/Sources/ThreatsManager.Engine/Aspects/EntityShapesContainerAspect.cs
+++ b/Sources/ThreatsManager.Engine/Aspects/EntityShapesContainerAspect.cs
@@ -6,7 +6,6 @@
using PostSharp.Aspects.Advices;
using PostSharp.Aspects.Dependencies;
using PostSharp.Patterns.Collections;
-using PostSharp.Patterns.Model;
using PostSharp.Serialization;
using ThreatsManager.Engine.ObjectModel.Diagrams;
using ThreatsManager.Interfaces.ObjectModel;
diff --git a/Sources/ThreatsManager.Engine/Aspects/GroupShapesContainerAspect.cs b/Sources/ThreatsManager.Engine/Aspects/GroupShapesContainerAspect.cs
index cdfd20c6..0be4aa60 100644
--- a/Sources/ThreatsManager.Engine/Aspects/GroupShapesContainerAspect.cs
+++ b/Sources/ThreatsManager.Engine/Aspects/GroupShapesContainerAspect.cs
@@ -6,7 +6,6 @@
using PostSharp.Aspects.Advices;
using PostSharp.Aspects.Dependencies;
using PostSharp.Patterns.Collections;
-using PostSharp.Patterns.Model;
using PostSharp.Serialization;
using ThreatsManager.Engine.ObjectModel.Diagrams;
using ThreatsManager.Interfaces.ObjectModel;
diff --git a/Sources/ThreatsManager.Engine/Aspects/LinksContainerAspect.cs b/Sources/ThreatsManager.Engine/Aspects/LinksContainerAspect.cs
index 1c71facd..b65d670f 100644
--- a/Sources/ThreatsManager.Engine/Aspects/LinksContainerAspect.cs
+++ b/Sources/ThreatsManager.Engine/Aspects/LinksContainerAspect.cs
@@ -5,7 +5,6 @@
using PostSharp.Aspects.Advices;
using PostSharp.Aspects.Dependencies;
using PostSharp.Patterns.Collections;
-using PostSharp.Patterns.Model;
using PostSharp.Serialization;
using ThreatsManager.Engine.ObjectModel.Diagrams;
using ThreatsManager.Interfaces.ObjectModel.Diagrams;
@@ -137,7 +136,15 @@ public bool RemoveLink(Guid dataFlowId)
{
using (var scope = UndoRedoManager.OpenScope("Remove link for Flow"))
{
- result = _links?.Get()?.Remove(link) ?? false;
+ try
+ {
+ result = _links?.Get()?.Remove(link) ?? false;
+ }
+ catch (InvalidOperationException)
+ {
+ result = false;
+ }
+
if (result)
{
UndoRedoManager.Detach(link);
diff --git a/Sources/ThreatsManager.Engine/Manager.ThreatModel.cs b/Sources/ThreatsManager.Engine/Manager.ThreatModel.cs
index fb5918e2..aca3defd 100644
--- a/Sources/ThreatsManager.Engine/Manager.ThreatModel.cs
+++ b/Sources/ThreatsManager.Engine/Manager.ThreatModel.cs
@@ -11,6 +11,7 @@
using ThreatsManager.Utilities.Exceptions;
using ThreatsManager.Utilities;
using ThreatsManager.Interfaces.Exceptions;
+using System.Linq;
namespace ThreatsManager.Engine
{
@@ -39,14 +40,12 @@ public IThreatModel CreateNewThreatModel([Required] string name)
#region Initializers.
private void ApplyInitializers()
{
- var extensions = Instance.Configuration.EnabledExtensions;
-
- foreach (var id in extensions)
+ var initializers = GetExtensions();
+ if (initializers?.Any() ?? false)
{
- var metadata = GetExtensionMetadata(id);
- if (metadata != null)
+ foreach (var initializer in initializers)
{
- GetExtension(id)?.Initialize(_model);
+ initializer.Initialize(_model);
}
}
}
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Diagrams/Diagram.cs b/Sources/ThreatsManager.Engine/ObjectModel/Diagrams/Diagram.cs
index 85fac0ca..c6e0e850 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Diagrams/Diagram.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Diagrams/Diagram.cs
@@ -34,7 +34,7 @@ namespace ThreatsManager.Engine.ObjectModel.Diagrams
[SourceInfoAspect]
[Recordable(AutoRecord = false)]
[Undoable]
- public class Diagram : IDiagram, IInitializableObject
+ public class Diagram : IDiagram, IInitializableObject, IForceSetId
{
public Diagram()
{
@@ -263,6 +263,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.Diagram;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("order")]
public int Order { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataFlow.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataFlow.cs
index 7ffdf310..a3585ebc 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataFlow.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataFlow.cs
@@ -35,7 +35,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Undoable]
[TypeLabel("Flow")]
[TypeInitial("F")]
- public class DataFlow : IDataFlow, IInitializableObject
+ public class DataFlow : IDataFlow, IInitializableObject, IForceSetId
{
public DataFlow()
{
@@ -235,6 +235,11 @@ public void SetSourceInfo(IThreatModel source)
[IgnoreAutoChangeNotification]
public IEntity Target => Model.GetEntity(_targetId);
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("flowType")]
[JsonConverter(typeof(StringEnumConverter))]
public FlowType FlowType { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataStore.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataStore.cs
index 3a18a5c2..b81a5c1d 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataStore.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/DataStore.cs
@@ -36,7 +36,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Undoable]
[TypeLabel("Data Store")]
[TypeInitial("D")]
- public class DataStore : IDataStore, IInitializableObject
+ public class DataStore : IDataStore, IInitializableObject, IForceSetId
{
public DataStore()
{
@@ -221,6 +221,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.DataStore;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
public override string ToString()
{
return Name ?? "";
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/EntityTemplate.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/EntityTemplate.cs
index ea34f195..7a95b14b 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/EntityTemplate.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/EntityTemplate.cs
@@ -32,7 +32,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Entity Template")]
- public class EntityTemplate : IEntityTemplate, IInitializableObject
+ public class EntityTemplate : IEntityTemplate, IInitializableObject, IForceSetId
{
public EntityTemplate()
{
@@ -138,6 +138,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.EntityTemplate;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
public override string ToString()
{
return Name ?? "";
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/ExternalInteractor.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/ExternalInteractor.cs
index 3e74a938..ee1e4dd7 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/ExternalInteractor.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/ExternalInteractor.cs
@@ -38,7 +38,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Undoable]
[TypeLabel("External Interactor")]
[TypeInitial("E")]
- public class ExternalInteractor : IExternalInteractor, IInitializableObject
+ public class ExternalInteractor : IExternalInteractor, IInitializableObject, IForceSetId
{
public ExternalInteractor()
{
@@ -223,6 +223,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.ExternalInteractor;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
public override string ToString()
{
return Name ?? "";
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/FlowTemplate.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/FlowTemplate.cs
index 6432f79d..6f9d93e2 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/FlowTemplate.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/FlowTemplate.cs
@@ -30,7 +30,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Flow Template")]
- public class FlowTemplate : IFlowTemplate, IInitializableObject
+ public class FlowTemplate : IFlowTemplate, IInitializableObject, IForceSetId
{
public FlowTemplate()
{
@@ -136,6 +136,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.FlowTemplate;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("flowType")]
[JsonConverter(typeof(StringEnumConverter))]
public FlowType FlowType { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/Process.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/Process.cs
index f82b3f80..7f979333 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/Process.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/Process.cs
@@ -36,7 +36,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Recordable(AutoRecord = false)]
[Undoable]
[TypeInitial("P")]
- public class Process : IProcess, IInitializableObject
+ public class Process : IProcess, IInitializableObject, IForceSetId
{
public Process()
{
@@ -226,6 +226,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.Process;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
public override string ToString()
{
return Name ?? "";
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundary.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundary.cs
index dc8cec24..6a38fb45 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundary.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundary.cs
@@ -32,7 +32,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Undoable]
[TypeLabel("Trust Boundary")]
[TypeInitial("T")]
- public class TrustBoundary : ITrustBoundary, IInitializableObject
+ public class TrustBoundary : ITrustBoundary, IInitializableObject, IForceSetId
{
public TrustBoundary()
{
@@ -178,6 +178,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.TrustBoundary;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("template")]
internal Guid _templateId { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundaryTemplate.cs b/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundaryTemplate.cs
index 3e10614d..ebe5e6fa 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundaryTemplate.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/Entities/TrustBoundaryTemplate.cs
@@ -29,7 +29,7 @@ namespace ThreatsManager.Engine.ObjectModel.Entities
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Trust Boundary Template")]
- public class TrustBoundaryTemplate : ITrustBoundaryTemplate, IInitializableObject
+ public class TrustBoundaryTemplate : ITrustBoundaryTemplate, IInitializableObject, IForceSetId
{
public TrustBoundaryTemplate()
{
@@ -135,6 +135,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.TrustBoundaryTemplate;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
public override string ToString()
{
return Name ?? "";
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Mitigation.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Mitigation.cs
index c960a61c..6987b03d 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Mitigation.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Mitigation.cs
@@ -30,7 +30,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[SourceInfoAspect]
[Recordable(AutoRecord = false)]
[Undoable]
- public class Mitigation : IMitigation, IInitializableObject
+ public class Mitigation : IMitigation, IInitializableObject, IForceSetId
{
public Mitigation()
{
@@ -138,6 +138,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.Mitigation;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("controlType")]
[JsonConverter(typeof(StringEnumConverter))]
public SecurityControlType ControlType { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/SpecializedMitigation.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/SpecializedMitigation.cs
index 8176924c..056068e0 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/SpecializedMitigation.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/SpecializedMitigation.cs
@@ -25,7 +25,7 @@ public class SpecializedMitigation : ISpecializedMitigation
{
public SpecializedMitigation() { }
- public SpecializedMitigation([NotNull] IItemTemplate template, string name, string description)
+ public SpecializedMitigation([NotNull] IItemTemplate template, [Required] string name, string description)
{
_templateId = template.Id;
Name = name;
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatActor.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatActor.cs
index 33441fc3..245bd47b 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatActor.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatActor.cs
@@ -29,7 +29,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Threat Actor")]
- public class ThreatActor : IThreatActor, IInitializableObject
+ public class ThreatActor : IThreatActor, IInitializableObject, IForceSetId
{
public ThreatActor()
{
@@ -146,6 +146,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.ThreatActor;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("actor")]
[JsonConverter(typeof(StringEnumConverter))]
private DefaultActor _actor { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEvent.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEvent.cs
index f8d869eb..a3679ab8 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEvent.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEvent.cs
@@ -37,7 +37,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Threat Event")]
- public class ThreatEvent : IThreatEvent, IInitializableObject
+ public class ThreatEvent : IThreatEvent, IInitializableObject, IForceSetId
{
public ThreatEvent()
{
@@ -253,6 +253,11 @@ public void SetSourceInfo(IThreatModel source)
public Guid Id => _id;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("name")]
private string _name { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventMitigation.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventMitigation.cs
index a9b3767f..6dba65e3 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventMitigation.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventMitigation.cs
@@ -33,7 +33,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
public class ThreatEventMitigation : IThreatEventMitigation, IInitializableObject
- {
+ {
public ThreatEventMitigation()
{
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventScenario.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventScenario.cs
index 201d4539..5d34b71f 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventScenario.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatEventScenario.cs
@@ -33,7 +33,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Scenario")]
- public class ThreatEventScenario : IThreatEventScenario, IInitializableObject
+ public class ThreatEventScenario : IThreatEventScenario, IInitializableObject, IForceSetId
{
public ThreatEventScenario()
{
@@ -155,6 +155,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.ThreatEventScenario;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[NotRecorded]
[JsonProperty("severity")]
private int _severityId { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatType.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatType.cs
index 87961db5..1fd19677 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatType.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/ThreatType.cs
@@ -31,7 +31,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Threat Type")]
- public partial class ThreatType : IThreatType, IInitializableObject
+ public partial class ThreatType : IThreatType, IInitializableObject, IForceSetId
{
public ThreatType()
{
@@ -139,6 +139,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.ThreatType;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("severity")]
private int _severityId { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Vulnerability.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Vulnerability.cs
index fea92b74..a405f98f 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Vulnerability.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Vulnerability.cs
@@ -35,7 +35,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[Recordable(AutoRecord = false)]
[Undoable]
[TypeLabel("Vulnerability")]
- public class Vulnerability : IVulnerability, IInitializableObject
+ public class Vulnerability : IVulnerability, IInitializableObject, IForceSetId
{
public Vulnerability()
{
@@ -180,6 +180,11 @@ public void SetSourceInfo(IThreatModel source)
public Guid Id => _id;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("name")]
private string _name { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Weakness.cs b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Weakness.cs
index 7c4942a1..5ebc552b 100644
--- a/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Weakness.cs
+++ b/Sources/ThreatsManager.Engine/ObjectModel/ThreatsMitigations/Weakness.cs
@@ -31,7 +31,7 @@ namespace ThreatsManager.Engine.ObjectModel.ThreatsMitigations
[SourceInfoAspect]
[Undoable]
[TypeLabel("Weakness")]
- public partial class Weakness : IWeakness, IInitializableObject
+ public partial class Weakness : IWeakness, IInitializableObject, IForceSetId
{
public Weakness()
{
@@ -139,6 +139,11 @@ public void SetSourceInfo(IThreatModel source)
#region Specific implementation.
public Scope PropertiesScope => Scope.Weakness;
+ public void SetId(Guid id)
+ {
+ _id = id;
+ }
+
[JsonProperty("severity")]
private int _severityId { get; set; }
diff --git a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
index 701f4294..0ad21b32 100644
--- a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
+++ b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
@@ -3,15 +3,15 @@
net481
Threats Manager Platform Engine.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Engine/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
true
ThreatsManager.snk
false
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/Sources/ThreatsManager.Interfaces/Exceptions/InvalidHMACException.cs b/Sources/ThreatsManager.Interfaces/Exceptions/InvalidHMACException.cs
index 0f462a3b..3a0e1b81 100644
--- a/Sources/ThreatsManager.Interfaces/Exceptions/InvalidHMACException.cs
+++ b/Sources/ThreatsManager.Interfaces/Exceptions/InvalidHMACException.cs
@@ -3,9 +3,16 @@
namespace ThreatsManager.Interfaces.Exceptions
{
+ ///
+ /// Exception raised when an invalid HMAC is found.
+ ///
[Serializable]
public class InvalidHMACException : Exception
{
+ ///
+ /// Constructor.
+ ///
+ /// File name of the threat model which cannot be loeaded due to the invalid HMAC.
public InvalidHMACException(string location) : base($"File '{Path.GetFileName(location)}' cannot be loaded because the password is not correct or because the file is corrupted")
{
}
diff --git a/Sources/ThreatsManager.Interfaces/Exceptions/ThreatModelOpeningFailureException.cs b/Sources/ThreatsManager.Interfaces/Exceptions/ThreatModelOpeningFailureException.cs
index 5a32d84d..17653739 100644
--- a/Sources/ThreatsManager.Interfaces/Exceptions/ThreatModelOpeningFailureException.cs
+++ b/Sources/ThreatsManager.Interfaces/Exceptions/ThreatModelOpeningFailureException.cs
@@ -9,11 +9,19 @@ namespace ThreatsManager.Interfaces.Exceptions
[Serializable]
public class ThreatModelOpeningFailureException : Exception
{
+ ///
+ /// Default constructor.
+ ///
public ThreatModelOpeningFailureException()
{
}
+ ///
+ /// Constructor.
+ ///
+ /// Message to be shown.
+ /// Inner exception.
public ThreatModelOpeningFailureException(string message, Exception innerException) : base(message, innerException)
{
}
diff --git a/Sources/ThreatsManager.Interfaces/ObjectModel/IForceSetId.cs b/Sources/ThreatsManager.Interfaces/ObjectModel/IForceSetId.cs
new file mode 100644
index 00000000..5e045a65
--- /dev/null
+++ b/Sources/ThreatsManager.Interfaces/ObjectModel/IForceSetId.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace ThreatsManager.Interfaces.ObjectModel
+{
+ ///
+ /// Interface used to allow setting the identifier for some IIdentity objects.
+ ///
+ public interface IForceSetId
+ {
+ ///
+ /// Identifier to be set.
+ ///
+ /// New identifier.
+ /// This method sets the identifier on the object, without doing anything else.
+ /// If the Id is used anywhere else, it will not be changed.
+ /// It is never recommended to use this method, but it may be useful if you need to change
+ /// the identified right after the creation of the object.
+ void SetId(Guid id);
+ }
+}
diff --git a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
index 5ecd4612..72ffe421 100644
--- a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
+++ b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
@@ -3,15 +3,15 @@
net481
Common Interfaces used to define the object, entities and extensions that compose the Threats Manager Platform and allow to extend it.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Interfaces/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
false
false
$(NoWarn);NU1505
@@ -32,10 +32,10 @@
-
-
+
+
-
+
diff --git a/Sources/ThreatsManager.Utilities/Aspects/Engine/LockableAspect.cs b/Sources/ThreatsManager.Utilities/Aspects/Engine/LockableAspect.cs
index 19ea08cc..b075f13e 100644
--- a/Sources/ThreatsManager.Utilities/Aspects/Engine/LockableAspect.cs
+++ b/Sources/ThreatsManager.Utilities/Aspects/Engine/LockableAspect.cs
@@ -21,6 +21,9 @@ namespace ThreatsManager.Utilities.Aspects.Engine
// TODO: Implementation must be completely revised!
+ ///
+ /// Aspect used to implement the ability to lock an object, preventing any change.
+ ///
[PSerializable]
public class LockableAspect : InstanceLevelAspect
{
diff --git a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
index 6e748e14..0801f232 100644
--- a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
+++ b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
@@ -3,15 +3,15 @@
net481
Library to manage the solution files at a low level.
- 2.1.4.0
+ 2.1.5.0
Simone Curzi
Simone Curzi
Threats Manager Platform
- Copyright © Simone Curzi, 2018-2023. All Rights Reserved.
+ Copyright © Simone Curzi, 2018-2024. All Rights Reserved.
https://www.nuget.org/packages/ThreatsManager.Utilities/
https://github.com/simonec73/threatsmanager
- 2.1.4.0
- 2.1.4
+ 2.1.5.0
+ 2.1.5
$(NoWarn);NU1505
@@ -37,10 +37,10 @@
-
-
-
-
+
+
+
+
diff --git a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ExtensionsContainer.cs b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ExtensionsContainer.cs
+++ b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ThreatsManager.AutoThreatGeneration.WinForms.csproj b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ThreatsManager.AutoThreatGeneration.WinForms.csproj
index ed68668f..8f5f0358 100644
--- a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ThreatsManager.AutoThreatGeneration.WinForms.csproj
+++ b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/ThreatsManager.AutoThreatGeneration.WinForms.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -20,6 +20,8 @@
+ true
+ PerMonitorV2
true
@@ -49,8 +51,8 @@
-
- ..\packages\ExCSS.4.2.4\lib\net48\ExCSS.dll
+
+ ..\packages\ExCSS.4.2.5\lib\net48\ExCSS.dll
..\packages\Fizzler.1.3.0\lib\netstandard2.0\Fizzler.dll
@@ -58,23 +60,23 @@
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
- ..\packages\Svg.3.4.6\lib\net462\Svg.dll
+ ..\packages\Svg.3.4.7\lib\net481\Svg.dll
@@ -210,6 +212,7 @@
+
@@ -484,8 +487,8 @@ xcopy "$(TargetDir)*.pdb" "$(SolutionDir)Extensions\ThreatsManager.AutoThreatGen
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/app.config b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/app.config
new file mode 100644
index 00000000..2e8a9826
--- /dev/null
+++ b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/app.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/packages.config b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/packages.config
index 52fb8a74..5821927d 100644
--- a/Studio/ThreatsManager.AutoThreatGeneration.WinForms/packages.config
+++ b/Studio/ThreatsManager.AutoThreatGeneration.WinForms/packages.config
@@ -1,15 +1,15 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Studio/ThreatsManager.DevOps.WinForms/ExtensionsContainer.cs b/Studio/ThreatsManager.DevOps.WinForms/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Studio/ThreatsManager.DevOps.WinForms/ExtensionsContainer.cs
+++ b/Studio/ThreatsManager.DevOps.WinForms/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.DevOps.WinForms/ThreatsManager.DevOps.WinForms.csproj b/Studio/ThreatsManager.DevOps.WinForms/ThreatsManager.DevOps.WinForms.csproj
index a2137b32..44cfd867 100644
--- a/Studio/ThreatsManager.DevOps.WinForms/ThreatsManager.DevOps.WinForms.csproj
+++ b/Studio/ThreatsManager.DevOps.WinForms/ThreatsManager.DevOps.WinForms.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -20,6 +20,8 @@
+ true
+ PerMonitorV2
true
@@ -60,20 +62,20 @@
..\References\Northwoods.Go.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
@@ -533,8 +535,8 @@ xcopy "$(TargetDir)*.pdb" "$(SolutionDir)Extensions\$(ProjectName)\" /Y
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.DevOps.WinForms/packages.config b/Studio/ThreatsManager.DevOps.WinForms/packages.config
index b0d0dc96..d0810e04 100644
--- a/Studio/ThreatsManager.DevOps.WinForms/packages.config
+++ b/Studio/ThreatsManager.DevOps.WinForms/packages.config
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Actions/Merge.cs b/Studio/ThreatsManager.Extensions.WinForms/Actions/Merge.cs
index 435ece07..2fef9ab0 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Actions/Merge.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Actions/Merge.cs
@@ -12,7 +12,7 @@
namespace ThreatsManager.Extensions.Actions
{
#pragma warning disable CS0067
- [Extension("8C93144F-3F6A-4023-A0BB-10298B6FC931", "Merge with Threat Model or Template", 15, ExecutionMode.Simplified)]
+ [Extension("8C93144F-3F6A-4023-A0BB-10298B6FC931", "Merge with Threat Model or KBs", 15, ExecutionMode.Simplified)]
public class Merge : IMainRibbonExtension, IStatusInfoProviderUpdateRequestor,
IDesktopAlertAwareExtension, IExecutionModeSupport
{
@@ -34,7 +34,7 @@ public class Merge : IMainRibbonExtension, IStatusInfoProviderUpdateRequestor,
public IEnumerable RibbonActions => new List
{
- new ActionDefinition(Id, "Merge", "Merge Threat Models and Templates", Properties.Resources.arrows_merge_big,
+ new ActionDefinition(Id, "Merge", "Merge Threat Models and Knowledge Bases", Properties.Resources.arrows_merge_big,
Properties.Resources.arrows_merge)
};
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Actions/SummaryExcelReport.cs b/Studio/ThreatsManager.Extensions.WinForms/Actions/SummaryExcelReport.cs
index 062a41a1..1d0f6f42 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Actions/SummaryExcelReport.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Actions/SummaryExcelReport.cs
@@ -3,9 +3,11 @@
using System.Drawing;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Windows.Forms;
using PostSharp.Patterns.Contracts;
using ThreatsManager.Extensions.Panels.Excel;
+using ThreatsManager.Extensions.Reporting;
using ThreatsManager.Interfaces;
using ThreatsManager.Interfaces.Extensions;
using ThreatsManager.Interfaces.Extensions.Panels;
@@ -59,15 +61,9 @@ public void ExecuteRibbonAction(IThreatModel threatModel, IActionDefinition acti
dialog.RestoreDirectory = true;
if (dialog.ShowDialog(Form.ActiveForm) == DialogResult.OK)
{
- var threats = AnalyzeThreatModel(threatModel);
- if (threats?.Any() ?? false)
+ if (CreateReport(dialog.FileName, threatModel))
{
- if (CreateReport(dialog.FileName, threats))
- ShowMessage?.Invoke("Summary Excel Report generation succeeded.");
- }
- else
- {
- ShowWarning?.Invoke("Summary Excel Report failed because no Threat Events are defined.");
+ ShowMessage?.Invoke("Summary Excel Report generation succeeded.");
}
}
break;
@@ -79,6 +75,72 @@ public void ExecuteRibbonAction(IThreatModel threatModel, IActionDefinition acti
}
}
+ private void AddThreatEvents(IEnumerable threatEvents,
+ ref Dictionary> dict)
+ {
+ var tes = threatEvents?.ToArray();
+ if (tes?.Any() ?? false)
+ {
+ foreach (var te in tes)
+ {
+ if (dict == null)
+ dict = new Dictionary>();
+
+ if (!dict.TryGetValue(te.ThreatType, out var teList))
+ {
+ teList = new List();
+ dict.Add(te.ThreatType, teList);
+ }
+
+ teList.Add(te);
+ }
+ }
+ }
+
+ private bool CreateReport([Required] string fileName, [NotNull] IThreatModel model)
+ {
+ var result = false;
+
+ var threats = AnalyzeThreatModel(model);
+
+ using (var engine = new ExcelReportEngine())
+ {
+ if (threats?.Any() ?? false)
+ {
+ AddStandardSheets(engine, threats);
+ result = true;
+ }
+
+ var providers = ExtensionUtils.GetExtensions()?.ToArray();
+ if (providers?.Any() ?? false)
+ {
+ foreach (var provider in providers)
+ {
+ result |= AddProviderSheet(engine, model, provider);
+ }
+ }
+
+ if (result)
+ {
+ try
+ {
+ engine.Save(fileName);
+ }
+ catch (System.IO.IOException e)
+ {
+ result = false;
+ ShowWarning?.Invoke(e.Message);
+ }
+ }
+ else
+ {
+ ShowWarning?.Invoke("Summary Excel Report has not been generated because it is empty.");
+ }
+ }
+
+ return result;
+ }
+
private Dictionary> AnalyzeThreatModel([NotNull] IThreatModel model)
{
Dictionary> result = null;
@@ -106,103 +168,119 @@ private Dictionary> AnalyzeThreatModel([NotNull]
return result;
}
- private void AddThreatEvents(IEnumerable threatEvents,
- ref Dictionary> dict)
+ private void AddStandardSheets([NotNull] ExcelReportEngine engine,
+ [NotNull] Dictionary> threats)
{
- var tes = threatEvents?.ToArray();
- if (tes?.Any() ?? false)
+ var page = engine.AddPage("Report");
+ List fields = new List { "Name", "Severity", "Description", "Affected Objects" };
+ var existing = HasMitigations(threats, MitigationStatus.Existing);
+ if (existing)
+ fields.Add("Existing Mitigations");
+ var approved = HasMitigations(threats, MitigationStatus.Approved);
+ if (approved)
+ fields.Add("Approved Mitigations");
+ var planned = HasMitigations(threats, MitigationStatus.Planned);
+ if (planned)
+ fields.Add("Planned Mitigations");
+ var implemented = HasMitigations(threats, MitigationStatus.Implemented);
+ if (implemented)
+ fields.Add("Implemented Mitigations");
+ var proposed = HasMitigations(threats, MitigationStatus.Proposed);
+ if (proposed)
+ fields.Add("Proposed Mitigations");
+ engine.AddHeader(page, fields.ToArray());
+
+ var sorted = threats.OrderByDescending(x => GetTopSeverity(x.Value), new SeverityComparer())
+ .ThenBy(x => x.Key.Name);
+ List
true
@@ -901,6 +903,9 @@
DiagramConfigurationPanel.cs
+
+ GraphView.cs
+
ImportedListPanel.cs
@@ -1477,28 +1482,28 @@
- 1.0.2210.55
+ 1.0.2420.47
13.0.3
- 2024.0.5
+ 2024.0.6
- 2024.0.5
+ 2024.0.6
- 2024.0.5
+ 2024.0.6
- 3.4.6
+ 3.4.7
- 24.1.45
+ 25.1.38
- 24.1.45
+ 25.1.38
diff --git a/Studio/ThreatsManager.MsTmt.WinForms/ExtensionLibrary.cs b/Studio/ThreatsManager.MsTmt.WinForms/ExtensionLibrary.cs
index 05047a00..293b0cd2 100644
--- a/Studio/ThreatsManager.MsTmt.WinForms/ExtensionLibrary.cs
+++ b/Studio/ThreatsManager.MsTmt.WinForms/ExtensionLibrary.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.MsTmt.WinForms/ExtensionsContainer.cs b/Studio/ThreatsManager.MsTmt.WinForms/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Studio/ThreatsManager.MsTmt.WinForms/ExtensionsContainer.cs
+++ b/Studio/ThreatsManager.MsTmt.WinForms/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.MsTmt.WinForms/ThreatsManager.MsTmt.WinForms.csproj b/Studio/ThreatsManager.MsTmt.WinForms/ThreatsManager.MsTmt.WinForms.csproj
index 2ee99d55..4d024426 100644
--- a/Studio/ThreatsManager.MsTmt.WinForms/ThreatsManager.MsTmt.WinForms.csproj
+++ b/Studio/ThreatsManager.MsTmt.WinForms/ThreatsManager.MsTmt.WinForms.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -20,6 +20,8 @@
+ true
+ PerMonitorV2
true
@@ -51,27 +53,27 @@
..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
- ..\packages\System.Drawing.Common.8.0.1\lib\net462\System.Drawing.Common.dll
+ ..\packages\System.Drawing.Common.8.0.3\lib\net462\System.Drawing.Common.dll
@@ -210,8 +212,8 @@ xcopy "$(TargetDir)*.pdb" "$(SolutionDir)Extensions\ThreatsManager.MsTmt\" /Y
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.MsTmt.WinForms/packages.config b/Studio/ThreatsManager.MsTmt.WinForms/packages.config
index 8d96bcdf..032863fd 100644
--- a/Studio/ThreatsManager.MsTmt.WinForms/packages.config
+++ b/Studio/ThreatsManager.MsTmt.WinForms/packages.config
@@ -1,16 +1,16 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Quality.WinForms/ExtensionsContainer.cs b/Studio/ThreatsManager.Quality.WinForms/ExtensionsContainer.cs
index 493e600b..d224525e 100644
--- a/Studio/ThreatsManager.Quality.WinForms/ExtensionsContainer.cs
+++ b/Studio/ThreatsManager.Quality.WinForms/ExtensionsContainer.cs
@@ -1,3 +1,3 @@
using ThreatsManager.Interfaces;
-[assembly: ExtensionsContainer("2.1.4")]
\ No newline at end of file
+[assembly: ExtensionsContainer("2.1.5")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityInitializer.cs b/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityInitializer.cs
new file mode 100644
index 00000000..811299e4
--- /dev/null
+++ b/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityInitializer.cs
@@ -0,0 +1,25 @@
+using ThreatsManager.Interfaces;
+using ThreatsManager.Interfaces.Extensions;
+using ThreatsManager.Interfaces.ObjectModel;
+using ThreatsManager.Quality.Panels.Configuration;
+using ThreatsManager.Quality.Schemas;
+using ThreatsManager.Utilities;
+
+namespace ThreatsManager.Quality.Initializers
+{
+ [Extension("8CAFC5C4-339A-4782-88F8-FA4C3650AB06",
+ "Automatic initialization of the Calculated Severity",
+ 100, ExecutionMode.Simplified)]
+ public class CalculatedSeverityInitializer : IInitializer
+ {
+ public void Initialize(IThreatModel model)
+ {
+ var configuration = QualityConfigurationManager.GetInstance(model);
+ if (configuration.EnableCalculatedSeverity)
+ {
+ var schemaManager = new CalculatedSeverityPropertySchemaManager(model);
+ schemaManager.AddSupport();
+ }
+ }
+ }
+}
diff --git a/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityPostLoadProcessor.cs b/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityPostLoadProcessor.cs
new file mode 100644
index 00000000..8741cb46
--- /dev/null
+++ b/Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityPostLoadProcessor.cs
@@ -0,0 +1,25 @@
+using ThreatsManager.Interfaces;
+using ThreatsManager.Interfaces.Extensions;
+using ThreatsManager.Interfaces.ObjectModel;
+using ThreatsManager.Quality.Panels.Configuration;
+using ThreatsManager.Quality.Schemas;
+using ThreatsManager.Utilities;
+
+namespace ThreatsManager.Quality.Initializers
+{
+ [Extension("83DE050B-333E-4843-93B4-A47143A0D0F6",
+ "Threat Model enrichment with the Calculated Severity",
+ 100, ExecutionMode.Simplified)]
+ public class CalculatedSeverityPostLoadProcessor : IPostLoadProcessor
+ {
+ public void Process(IThreatModel model)
+ {
+ var configuration = QualityConfigurationManager.GetInstance(model);
+ if (configuration.EnableCalculatedSeverity)
+ {
+ var schemaManager = new CalculatedSeverityPropertySchemaManager(model);
+ schemaManager.AddSupport();
+ }
+ }
+ }
+}
diff --git a/Studio/ThreatsManager.Quality.WinForms/Panels/CalculatedSeverityList/CalculatedSeverityListPanel.CustomRibbonExtension.cs b/Studio/ThreatsManager.Quality.WinForms/Panels/CalculatedSeverityList/CalculatedSeverityListPanel.CustomRibbonExtension.cs
index 5c427ecb..afdd36c8 100644
--- a/Studio/ThreatsManager.Quality.WinForms/Panels/CalculatedSeverityList/CalculatedSeverityListPanel.CustomRibbonExtension.cs
+++ b/Studio/ThreatsManager.Quality.WinForms/Panels/CalculatedSeverityList/CalculatedSeverityListPanel.CustomRibbonExtension.cs
@@ -32,12 +32,9 @@ public IEnumerable CommandBars
if (_executionMode != ExecutionMode.Management)
{
var addRemove = new List();
- addRemove.Add(new ActionDefinition(Id, "AddMitigation", "Add Mitigation",
- Resources.mitigations_big_new,
- Resources.mitigations_new, false));
- addRemove.Add(new ActionDefinition(Id, "RemoveMitigation", "Remove Selected Mitigation",
- Resources.mitigations_big_delete,
- Resources.mitigations_delete, false));
+ addRemove.Add(new ActionDefinition(Id, "Clear", "Clear Calculated Severity",
+ Resources.undefined_big_sponge,
+ Resources.undefined_sponge_small, false));
result.Add(new CommandsBarDefinition("AddRemove", "Add/Remove", addRemove));
@@ -85,111 +82,25 @@ public void ExecuteCustomAction([NotNull] IActionDefinition action)
try
{
+ var schemaManager = new CalculatedSeverityPropertySchemaManager(_model);
+
switch (action.Name)
{
- case "AddMitigation":
- if (_properties.Item is IThreatEvent threatEvent2)
- {
- using (var dialog = new ThreatEventMitigationSelectionDialog(threatEvent2))
- {
- if (dialog.ShowDialog(Form.ActiveForm) == DialogResult.OK)
- {
- text = "Mitigation creation";
- }
- }
- }
- break;
- case "RemoveMitigation":
- var selected2 = _currentRow?.GridPanel?.SelectedCells?.OfType()
- .Select(x => x.GridRow)
- .Where(x => x.Tag is IThreatEventMitigation)
- .Distinct()
- .ToArray();
-
- if (_currentRow != null)
+ case "Clear":
+ if (MessageBox.Show("Are you sure you want to remove all Calculated Severity metadata?",
+ "Remove Calculated Severity", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
- if ((selected2?.Length ?? 0) > 1)
- {
- var name = (_currentRow.Tag as IThreatEventMitigation)?.Mitigation.Name;
- var outcome = MessageBox.Show(Form.ActiveForm,
- $"You have selected {selected2.Length} Mitigation associations. Do you want to remove them all?\nPlease click 'Yes' to remove all selected Mitigation associations,\nNo to remove only the last one you selected, '{name}'.\nPress Cancel to abort.",
- "Remove Mitigation association", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning,
- MessageBoxDefaultButton.Button3);
- switch (outcome)
- {
- case DialogResult.Yes:
- bool removed = true;
- foreach (var row in selected2)
- {
- bool r = false;
- if (row.Tag is IThreatEventMitigation m)
- {
- r = m.ThreatEvent.RemoveMitigation(m.MitigationId);
- }
-
- removed &= r;
+ schemaManager.RemoveSupport();
- if (r && row == _currentRow)
- {
- _properties.Item = null;
- _currentRow = null;
- }
- }
-
- if (removed)
- {
- text = "Remove Mitigation association";
- }
- else
- {
- warning = true;
- text = "One or more Mitigation associations cannot be removed.";
- }
-
- break;
- case DialogResult.No:
- if (_currentRow != null && _currentRow.Tag is IThreatEventMitigation m2)
- {
- if (m2.ThreatEvent.RemoveMitigation(m2.MitigationId))
- {
- _properties.Item = null;
- _currentRow = null;
- text = "Remove Mitigation association";
- }
- else
- {
- warning = true;
- text = "The Mitigation association cannot be removed.";
- }
- }
-
- break;
- }
- }
- else if (_currentRow?.Tag is IThreatEventMitigation mitigation &&
- MessageBox.Show(Form.ActiveForm,
- $"You are about to remove mitigation '{mitigation.Mitigation.Name}' from the current Threat Event. Are you sure?",
- "Remove Mitigation association", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,
- MessageBoxDefaultButton.Button2) == DialogResult.Yes)
- {
- if (mitigation.ThreatEvent.RemoveMitigation(mitigation.MitigationId))
- {
- text = "Remove Mitigation association";
- _properties.Item = null;
- }
- else
- {
- warning = true;
- text = "The Mitigation association cannot be removed.";
- }
- }
+ var config = QualityConfigurationManager.GetInstance(_model);
+ if (config?.EnableCalculatedSeverity ?? false)
+ schemaManager.AddSupport();
}
break;
case "ApplyCalculated":
if (_grid.PrimaryGrid.Rows.Count > 0 && MessageBox.Show("All the listed Threat Events will be updated with the calculated severity.\nAre you sure?",
"Apply Calculated Severity", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
- var schemaManager = new CalculatedSeverityPropertySchemaManager(_model);
var threatEventList = _model.Entities?.Select(x => x.ThreatEvents?
.Where(y => SeverityDoesNotMatchCalculated(y, schemaManager))).ToArray();
if (threatEventList?.Any() ?? false)
diff --git a/Studio/ThreatsManager.Quality.WinForms/Panels/Configuration/ConfigurationPanel.cs b/Studio/ThreatsManager.Quality.WinForms/Panels/Configuration/ConfigurationPanel.cs
index 97e0eff4..b3866334 100644
--- a/Studio/ThreatsManager.Quality.WinForms/Panels/Configuration/ConfigurationPanel.cs
+++ b/Studio/ThreatsManager.Quality.WinForms/Panels/Configuration/ConfigurationPanel.cs
@@ -30,7 +30,7 @@ public ConfigurationPanel()
public void Initialize([NotNull] IThreatModel model)
{
- _configuration = new QualityConfigurationManager(model, (new ConfigurationPanelFactory()).GetExtensionId());
+ _configuration = QualityConfigurationManager.GetInstance(model);
_enableCalculatedSeveritySupport.Checked = _configuration.EnableCalculatedSeverity;
}
diff --git a/Studio/ThreatsManager.Quality.WinForms/QualityConfigurationManager.cs b/Studio/ThreatsManager.Quality.WinForms/QualityConfigurationManager.cs
index b385b927..6c71b573 100644
--- a/Studio/ThreatsManager.Quality.WinForms/QualityConfigurationManager.cs
+++ b/Studio/ThreatsManager.Quality.WinForms/QualityConfigurationManager.cs
@@ -2,6 +2,7 @@
using PostSharp.Patterns.Contracts;
using ThreatsManager.Interfaces.Extensions;
using ThreatsManager.Interfaces.ObjectModel;
+using ThreatsManager.Quality.Panels.Configuration;
using ThreatsManager.Quality.Schemas;
using ThreatsManager.Utilities;
@@ -21,6 +22,11 @@ public QualityConfigurationManager([NotNull] IThreatModel model, [Required] stri
_configuration = model.GetExtensionConfiguration(extensionId);
}
+ public static QualityConfigurationManager GetInstance([NotNull] IThreatModel model)
+ {
+ return new QualityConfigurationManager(model, (new ConfigurationPanelFactory()).GetExtensionId());
+ }
+
public void Apply()
{
if (_dirty)
@@ -31,10 +37,6 @@ public void Apply()
{
schemaManager.AddSupport();
}
- else
- {
- schemaManager.RemoveSupport();
- }
}
public IEnumerable Data => _configuration?.Data;
diff --git a/Studio/ThreatsManager.Quality.WinForms/Schemas/CalculatedSeverityPropertySchemaManager.cs b/Studio/ThreatsManager.Quality.WinForms/Schemas/CalculatedSeverityPropertySchemaManager.cs
index 7754f5fc..1c3c3685 100644
--- a/Studio/ThreatsManager.Quality.WinForms/Schemas/CalculatedSeverityPropertySchemaManager.cs
+++ b/Studio/ThreatsManager.Quality.WinForms/Schemas/CalculatedSeverityPropertySchemaManager.cs
@@ -1,5 +1,4 @@
using System;
-using System.Linq;
using PostSharp.Patterns.Contracts;
using ThreatsManager.Interfaces;
using ThreatsManager.Interfaces.ObjectModel;
@@ -14,49 +13,32 @@ namespace ThreatsManager.Quality.Schemas
public class CalculatedSeverityPropertySchemaManager : IInitializableObject
{
private readonly IThreatModel _model;
+ private readonly QualityConfigurationManager _config;
private static string SchemaName = "Calculated Severity";
private static string PropertyName = "CalculatedSeverity";
public CalculatedSeverityPropertySchemaManager([NotNull] IThreatModel model)
{
_model = model;
+ _config = QualityConfigurationManager.GetInstance(model);
}
public bool IsInitialized => _model != null;
- [InitializationRequired]
- public bool IsCalculatedSeverityEnabled => _model.Schemas?
- .Any(x => string.CompareOrdinal(x.Name, SchemaName) == 0 &&
- string.CompareOrdinal(x.Namespace,
- Properties.Resources.DefaultNamespace) == 0) ?? false;
+ public bool IsCalculatedSeverityEnabled => _config?.EnableCalculatedSeverity ?? false;
[InitializationRequired]
- public bool AddSupport()
+ public void AddSupport()
{
- var result = false;
-
- if (!IsCalculatedSeverityEnabled)
- {
- var schema = GetSchema();
- _model.ApplySchema(schema.Id);
- result = true;
- }
-
- return result;
+ var schema = GetSchema();
+ _model.ApplySchema(schema.Id);
}
[InitializationRequired]
- public bool RemoveSupport()
+ public void RemoveSupport()
{
- var result = false;
-
- if (IsCalculatedSeverityEnabled)
- {
- var schema = GetSchema();
- result = _model.RemoveSchema(schema.Id, true);
- }
-
- return result;
+ var schema = GetSchema();
+ _model.RemoveSchema(schema.Id, true);
}
[InitializationRequired]
diff --git a/Studio/ThreatsManager.Quality.WinForms/ThreatsManager.Quality.WinForms.csproj b/Studio/ThreatsManager.Quality.WinForms/ThreatsManager.Quality.WinForms.csproj
index 1bff74c8..c7f99190 100644
--- a/Studio/ThreatsManager.Quality.WinForms/ThreatsManager.Quality.WinForms.csproj
+++ b/Studio/ThreatsManager.Quality.WinForms/ThreatsManager.Quality.WinForms.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -20,6 +20,8 @@
+ true
+ PerMonitorV2
true
@@ -54,8 +56,8 @@
-
- ..\packages\ExCSS.4.2.4\lib\net48\ExCSS.dll
+
+ ..\packages\ExCSS.4.2.5\lib\net48\ExCSS.dll
..\packages\Fizzler.1.3.0\lib\netstandard2.0\Fizzler.dll
@@ -73,41 +75,41 @@
..\References\Northwoods.Go.Layout.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
- ..\packages\Svg.3.4.6\lib\net462\Svg.dll
+ ..\packages\Svg.3.4.7\lib\net481\Svg.dll
-
- ..\packages\Syncfusion.Compression.Base.24.1.45\lib\net46\Syncfusion.Compression.Base.dll
+
+ ..\packages\Syncfusion.Compression.Base.25.1.38\lib\net462\Syncfusion.Compression.Base.dll
-
- ..\packages\Syncfusion.Gauge.Windows.24.1.45\lib\net46\Syncfusion.Gauge.Windows.dll
+
+ ..\packages\Syncfusion.Gauge.Windows.25.1.38\lib\net462\Syncfusion.Gauge.Windows.dll
-
- ..\packages\Syncfusion.Licensing.24.1.45\lib\net46\Syncfusion.Licensing.dll
+
+ ..\packages\Syncfusion.Licensing.25.1.38\lib\net462\Syncfusion.Licensing.dll
-
- ..\packages\Syncfusion.Pdf.WinForms.24.1.45\lib\net46\Syncfusion.Pdf.Base.dll
+
+ ..\packages\Syncfusion.Pdf.WinForms.25.1.38\lib\net462\Syncfusion.Pdf.Base.dll
-
- ..\packages\Syncfusion.Shared.Base.24.1.45\lib\net46\Syncfusion.Shared.Base.dll
+
+ ..\packages\Syncfusion.Shared.Base.25.1.38\lib\net462\Syncfusion.Shared.Base.dll
-
- ..\packages\Syncfusion.XlsIO.WinForms.24.1.45\lib\net46\Syncfusion.XlsIO.Base.dll
+
+ ..\packages\Syncfusion.XlsIO.WinForms.25.1.38\lib\net462\Syncfusion.XlsIO.Base.dll
@@ -235,6 +237,8 @@
RuleFilterDialog.cs
+
+
@@ -408,6 +412,7 @@
+
@@ -786,8 +791,8 @@ xcopy "$(TargetDir)*.pdb" "$(SolutionDir)Extensions\$(ProjectName)\" /Y
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Quality.WinForms/app.config b/Studio/ThreatsManager.Quality.WinForms/app.config
new file mode 100644
index 00000000..f7004d3e
--- /dev/null
+++ b/Studio/ThreatsManager.Quality.WinForms/app.config
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Quality.WinForms/packages.config b/Studio/ThreatsManager.Quality.WinForms/packages.config
index bb8bf1e1..c892ffae 100644
--- a/Studio/ThreatsManager.Quality.WinForms/packages.config
+++ b/Studio/ThreatsManager.Quality.WinForms/packages.config
@@ -1,24 +1,24 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Studio/ThreatsManager.Utilities.WinForms/Dialogs/ThreatTypeSelectionDialog.cs b/Studio/ThreatsManager.Utilities.WinForms/Dialogs/ThreatTypeSelectionDialog.cs
index 06da69ff..51cf7b7b 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/Dialogs/ThreatTypeSelectionDialog.cs
+++ b/Studio/ThreatsManager.Utilities.WinForms/Dialogs/ThreatTypeSelectionDialog.cs
@@ -142,24 +142,27 @@ private void OnComboBoxTextUpdate(object sender, EventArgs e)
{
if (sender is ComboBox comboBox)
{
- string filter = comboBox.Text;
- comboBox.Items.Clear();
-
- if (comboBox.Tag is IEnumerable threatTypes)
+ if (comboBox.Items.Count > 0)
{
- var selected = GetFilteredItems(filter, threatTypes)?.ToArray();
- if (selected?.Any() ?? false)
+ string filter = comboBox.Text;
+ comboBox.Items.Clear();
+
+ if (comboBox.Tag is IEnumerable threatTypes)
{
- comboBox.Items.AddRange(selected);
+ var selected = GetFilteredItems(filter, threatTypes)?.ToArray();
+ if (selected?.Any() ?? false)
+ {
+ comboBox.Items.AddRange(selected);
+ }
}
- }
- comboBox.DroppedDown = true;
- comboBox.IntegralHeight = true;
- comboBox.SelectedIndex = -1;
- comboBox.Text = filter;
- comboBox.SelectionStart = filter.Length;
- comboBox.SelectionLength = 0;
+ comboBox.DroppedDown = true;
+ comboBox.IntegralHeight = true;
+ comboBox.SelectedIndex = -1;
+ comboBox.Text = filter;
+ comboBox.SelectionStart = filter.Length;
+ comboBox.SelectionLength = 0;
+ }
}
}
diff --git a/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.Controls.cs b/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.Controls.cs
index d8f316e8..e24bf823 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.Controls.cs
+++ b/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.Controls.cs
@@ -1307,11 +1307,9 @@ button.Tag is SuperGridControl grid &&
#endregion
#region Property Viewer.
- private void AddPropertyViewer([NotNull] LayoutControl container, IPropertyViewer viewer, bool readOnly)
+ private void AddPropertyViewerBlocks([NotNull] LayoutControl container,
+ [NotNull] IEnumerable blocks, bool readOnly)
{
- container.Tag = viewer;
-
- var blocks = viewer?.Blocks?.ToArray();
if (blocks?.Any() ?? false)
{
Control control;
@@ -1452,7 +1450,13 @@ private void ButtonClicked(object sender, EventArgs e)
layoutControl.SuspendLayout();
layoutControl.Controls.Clear();
layoutControl.RootGroup.Items.Clear();
- AddPropertyViewer(layoutControl, viewer, _readonly);
+
+ var blocks = viewer.Blocks;
+ if (blocks?.Any() ?? false)
+ {
+ AddPropertyViewerBlocks(layoutControl, blocks, _readonly);
+ }
+
FinalizeSection(layoutControl);
layoutControl.ResumeLayout();
}
diff --git a/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.cs b/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.cs
index 104fc14f..2bb7824a 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.cs
+++ b/Studio/ThreatsManager.Utilities.WinForms/ItemEditor.cs
@@ -1005,6 +1005,16 @@ private void AddInformationSection([NotNull] IIdentity identity)
AddSingleLineLabel(infoSection, "Template", itemTemplate.Name);
}
+ if ((_executionMode == ExecutionMode.Pioneer || _executionMode == ExecutionMode.Expert) && identity is ISourceInfo sourceInfo)
+ {
+ if (!string.IsNullOrWhiteSpace(sourceInfo.VersionAuthor))
+ AddSingleLineLabel(infoSection, "Author", sourceInfo.VersionAuthor);
+ if (!string.IsNullOrWhiteSpace(sourceInfo.VersionId))
+ AddSingleLineLabel(infoSection, "Version", sourceInfo.VersionId);
+ if (!string.IsNullOrWhiteSpace(sourceInfo.SourceTMName))
+ AddSingleLineLabel(infoSection, "Source TM", sourceInfo.SourceTMName);
+ }
+
FinalizeSection(infoSection);
infoSection.ResumeLayout();
@@ -1054,8 +1064,7 @@ private void AddSchemaSection([NotNull] IPropertySchema schema, [NotNull] IPrope
.ToArray();
if (properties?.Any() ?? false)
{
- var section = AddSection(schema.Name);
- section.SuspendLayout();
+ LayoutControl section = null;
foreach (var property in properties)
{
@@ -1071,41 +1080,92 @@ private void AddSchemaSection([NotNull] IPropertySchema schema, [NotNull] IPrope
var viewer = factory.CreatePropertyViewer(container, property);
if (viewer != null)
{
- AddPropertyViewer(section, viewer, ro);
+ var blocks = viewer.Blocks;
+ if (blocks?.Any() ?? false)
+ {
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
+
+ section.Tag = viewer;
+ AddPropertyViewerBlocks(section, blocks, ro);
+ }
}
}
} else if (property is IPropertySingleLineString propertySingleLineString)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
var text = AddSingleLineText(section, propertySingleLineString, ro);
AddSpellCheck(text);
}
else if (property is IPropertyString propertyString)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
var richTextBox = AddText(section, propertyString, ro);
AddSpellCheck(richTextBox);
}
else if (property is IPropertyBool propertyBool)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddBool(section, propertyBool, ro);
}
else if (property is IPropertyTokens propertyTokens)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddTokens(section, propertyTokens, ro);
}
else if (property is IPropertyArray propertyArray)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddList(section, propertyArray, ro);
}
else if (property is IPropertyDecimal propertyDecimal)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddDecimal(section, propertyDecimal, ro);
}
else if (property is IPropertyInteger propertyInteger)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddInteger(section, propertyInteger, ro);
}
else if (property is IPropertyIdentityReference propertyIdentityReference)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
var identity = propertyIdentityReference.Value;
AddSingleLineLabel(section, property.PropertyType.Name,
@@ -1116,30 +1176,53 @@ private void AddSchemaSection([NotNull] IPropertySchema schema, [NotNull] IPrope
}
else if (property is IPropertyJsonSerializableObject)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
// TODO: add control to show this property. For now, it is not shown.
AddSingleLineLabel(section, property.PropertyType.Name,
"");
}
else if (property is IPropertyList propertyList)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddCombo(section, propertyList, ro);
//AddSingleLineLabel(section, property.PropertyType.Name, property.StringValue);
}
else if (property is IPropertyListMulti)
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
// TODO: add control to show this property. For now, it is not shown.
AddSingleLineLabel(section, property.PropertyType.Name, property.StringValue);
}
else
{
+ if (section == null)
+ {
+ section = AddSection(schema.Name);
+ section.SuspendLayout();
+ }
AddSingleLineLabel(section, property.PropertyType.Name,
"");
}
}
- FinalizeSection(section);
+ if (section != null)
+ {
+ FinalizeSection(section);
- section.ResumeLayout();
+ section.ResumeLayout();
+ }
}
}
}
diff --git a/Studio/ThreatsManager.Utilities.WinForms/MenuDefinition.cs b/Studio/ThreatsManager.Utilities.WinForms/MenuDefinition.cs
index 04e0ddde..f4e79e52 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/MenuDefinition.cs
+++ b/Studio/ThreatsManager.Utilities.WinForms/MenuDefinition.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using PostSharp.Patterns.Contracts;
@@ -168,7 +167,8 @@ private bool IsApplicable(IContextAwareAction action, Scope scope)
bool result = false;
if ((scope & (Scope.Entity | Scope.DataFlow | Scope.Group | Scope.Diagram | Scope.ItemTemplate |
- Scope.Threats | Scope.Mitigation | Scope.ThreatModel | Scope.ThreatActor | Scope.PropertySchema)) != 0)
+ Scope.Threats | Scope.Mitigation | Scope.ThreatModel | Scope.ThreatActor |
+ Scope.PropertySchema)) != 0)
result = action is IIdentityContextAwareAction;
if (!result && (scope & Scope.Link) != 0)
result = action is ILinkContextAwareAction;
@@ -180,6 +180,10 @@ private bool IsApplicable(IContextAwareAction action, Scope scope)
result = action is IThreatEventMitigationContextAwareAction;
if (!result && (scope & Scope.ThreatTypeMitigation) != 0)
result = action is IThreatTypeMitigationContextAwareAction;
+ if (!result && (scope & Scope.WeaknessMitigation) != 0)
+ result = action is IWeaknessMitigationContextAwareAction;
+ if (!result && (scope & Scope.VulnerabilityMitigation) != 0)
+ result = action is IVulnerabilityMitigationContextAwareAction;
return result;
}
diff --git a/Studio/ThreatsManager.Utilities.WinForms/Properties/AssemblyInfo.cs b/Studio/ThreatsManager.Utilities.WinForms/Properties/AssemblyInfo.cs
index ba9312eb..e52f26a7 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/Properties/AssemblyInfo.cs
+++ b/Studio/ThreatsManager.Utilities.WinForms/Properties/AssemblyInfo.cs
@@ -7,7 +7,7 @@
[assembly: AssemblyTitle("ThreatsManager.Utilities.WinForm")]
[assembly: AssemblyCompany("Simone Curzi")]
[assembly: AssemblyProduct("Threats Manager Platform")]
-[assembly: AssemblyCopyright("Copyright © Simone Curzi, 2018-2023. All Rights Reserved.")]
+[assembly: AssemblyCopyright("Copyright © Simone Curzi, 2018-2024. All Rights Reserved.")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
@@ -27,8 +27,8 @@
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.1.4.0")]
-[assembly: AssemblyFileVersion("2.1.4.0")]
+[assembly: AssemblyVersion("2.1.5.0")]
+[assembly: AssemblyFileVersion("2.1.5.0")]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("8da52fe7-e3e4-44bb-85e5-e81a26108155")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Utilities.WinForms/ThreatsManager.Utilities.WinForms.csproj b/Studio/ThreatsManager.Utilities.WinForms/ThreatsManager.Utilities.WinForms.csproj
index b7c3ac02..75d41ec9 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/ThreatsManager.Utilities.WinForms.csproj
+++ b/Studio/ThreatsManager.Utilities.WinForms/ThreatsManager.Utilities.WinForms.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -20,6 +20,8 @@
+ true
+ PerMonitorV2
true
@@ -68,20 +70,20 @@
..\..\..\..\Program Files (x86)\Keyoti Inc\RapidSpell Desktop .NET v6\.NET4_DLLs\Keyoti.RapidSpell.NET4.dll
-
- packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
packages\Svg.3.4.7\lib\net481\Svg.dll
@@ -95,7 +97,7 @@
- packages\System.Drawing.Common.8.0.2\lib\net462\System.Drawing.Common.dll
+ packages\System.Drawing.Common.8.0.3\lib\net462\System.Drawing.Common.dll
packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
@@ -516,8 +518,8 @@
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Utilities.WinForms/app.config b/Studio/ThreatsManager.Utilities.WinForms/app.config
index 3b535b67..41b36f5c 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/app.config
+++ b/Studio/ThreatsManager.Utilities.WinForms/app.config
@@ -8,19 +8,19 @@
-
+
-
+
-
+
-
+
diff --git a/Studio/ThreatsManager.Utilities.WinForms/packages.config b/Studio/ThreatsManager.Utilities.WinForms/packages.config
index 2ca1f066..1fd416ad 100644
--- a/Studio/ThreatsManager.Utilities.WinForms/packages.config
+++ b/Studio/ThreatsManager.Utilities.WinForms/packages.config
@@ -2,19 +2,19 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/Studio/ThreatsManager/App.config b/Studio/ThreatsManager/App.config
index d3a03bd6..c857e880 100644
--- a/Studio/ThreatsManager/App.config
+++ b/Studio/ThreatsManager/App.config
@@ -1,7 +1,7 @@
-
+
@@ -14,31 +14,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -58,15 +58,15 @@
-
+
-
+
-
+
@@ -74,15 +74,15 @@
-
+
-
+
-
+
@@ -111,7 +111,7 @@
-
+
diff --git a/Studio/ThreatsManager/Dialogs/CertificateSelectionDialog.cs b/Studio/ThreatsManager/Dialogs/CertificateSelectionDialog.cs
index 1fcc3fbd..2b8ae688 100644
--- a/Studio/ThreatsManager/Dialogs/CertificateSelectionDialog.cs
+++ b/Studio/ThreatsManager/Dialogs/CertificateSelectionDialog.cs
@@ -1,4 +1,5 @@
using System;
+using System.IO;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
@@ -84,6 +85,12 @@ private void _selectFromFile_Click(object sender, EventArgs e)
Certificate = new CertificateConfig(certificate);
}
}
+ catch (FileLoadException exc)
+ {
+ MessageBox.Show(
+ $"The file cannot be loaded due to the following error: '{exc.Message}'.",
+ "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
catch (BadImageFormatException)
{
MessageBox.Show(
diff --git a/Studio/ThreatsManager/MainForm.Files.cs b/Studio/ThreatsManager/MainForm.Files.cs
index e33c8346..05db31a4 100644
--- a/Studio/ThreatsManager/MainForm.Files.cs
+++ b/Studio/ThreatsManager/MainForm.Files.cs
@@ -126,152 +126,160 @@ private async Task OpenAsync([NotNull] IPackageManager packageManag
OpenOutcome result = OpenOutcome.KO;
IThreatModel model = null;
-
var oldMissingTypes = new List(_missingTypes);
var oldErrorsOnLoading = _errorsOnLoading;
- _missingTypes.Clear();
- _errorsOnLoading = false;
- _protectionData = null;
bool messageRaised = false;
- try
+ if (locationType == LocationType.Cloud ||
+ (locationType == LocationType.FileSystem && File.Exists(location)))
{
- var enabledExtensions = Manager.Instance.Configuration.EnabledExtensions
- .Select(x => Manager.Instance.GetExtensionMetadata(x));
-
- var latest = packageManager.GetLatest(locationType, location, out var dateTime);
+ _missingTypes.Clear();
+ _errorsOnLoading = false;
+ _protectionData = null;
- if (locationType == LocationType.FileSystem)
+ try
{
- var output = await AcquireLockAsync(location, latest);
- var outcome = output?.Outcome ?? OpenOutcome.KO;
- if (outcome == OpenOutcome.OK)
+ var enabledExtensions = Manager.Instance.Configuration.EnabledExtensions
+ .Select(x => Manager.Instance.GetExtensionMetadata(x));
+
+ var latest = packageManager.GetLatest(locationType, location, out var dateTime);
+
+ if (locationType == LocationType.FileSystem)
{
- location = output.Location;
- latest = output.Latest;
+ var output = await AcquireLockAsync(location, latest);
+ var outcome = output?.Outcome ?? OpenOutcome.KO;
+ if (outcome == OpenOutcome.OK)
+ {
+ location = output.Location;
+ latest = output.Latest;
+ }
+ else
+ {
+ return outcome;
+ }
}
- else
+
+ if (latest != null)
{
- return outcome;
+ location = latest;
}
- }
-
- if (latest != null)
- {
- location = latest;
- }
- if (packageManager is ISecurePackageManager securePM)
- {
- if (securePM.RequiredProtection.HasFlag(ProtectionType.Password))
+ if (packageManager is ISecurePackageManager securePM)
{
- if (GetPassword(out var password))
+ if (securePM.RequiredProtection.HasFlag(ProtectionType.Password))
{
- if (password != null)
+ if (GetPassword(out var password))
{
- _protectionData = new PasswordProtectionData(password);
- securePM.SetProtectionData(_protectionData);
+ if (password != null)
+ {
+ _protectionData = new PasswordProtectionData(password);
+ securePM.SetProtectionData(_protectionData);
+ }
}
+ else
+ return OpenOutcome.KO;
}
- else
- return OpenOutcome.KO;
}
- }
- model = packageManager.Load(locationType, location, enabledExtensions, false);
+ model = packageManager.Load(locationType, location, enabledExtensions, false);
- if (!(model?.Strengths?.Any() ?? false))
- model?.InitializeStandardStrengths();
- if (!(model?.Severities?.Any() ?? false))
- model?.InitializeStandardSeverities();
- }
- catch (ThreatModelOpeningFailureException exc)
- {
- exc.ToExceptionless().Submit();
- model = null;
- using (var dialog = new ErrorDialog
+ if (!(model?.Strengths?.Any() ?? false))
+ model?.InitializeStandardStrengths();
+ if (!(model?.Severities?.Any() ?? false))
+ model?.InitializeStandardSeverities();
+ }
+ catch (ThreatModelOpeningFailureException exc)
{
- Title = "Threat Model Opening failure",
- Description = exc.Message
- })
+ exc.ToExceptionless().Submit();
+ model = null;
+ using (var dialog = new ErrorDialog
+ {
+ Title = "Threat Model Opening failure",
+ Description = exc.Message
+ })
+ {
+ dialog.ShowDialog(this);
+ }
+
+ messageRaised = true;
+ }
+ catch (ExistingModelException)
{
- dialog.ShowDialog(this);
+ ShowDesktopAlert("The model is already open.\nClose it if you want to load it again.", true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (FileNotFoundException)
+ {
+ ShowDesktopAlert("File has not been found.", true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (DirectoryNotFoundException)
+ {
+ ShowDesktopAlert("Directory has not been found.", true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (UnauthorizedAccessException)
+ {
+ ShowDesktopAlert("The model cannot be opened because you do now have the required rights.", true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (IOException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (FileFormatException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (EncryptionRequiredException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (FileEncryptedException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (FileNotEncryptedException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (InvalidHMACException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (UnsupportedEncryptionException e)
+ {
+ ShowDesktopAlert(e.Message, true);
+ model = null;
+ messageRaised = true;
+ }
+ catch (Exception e)
+ {
+ ShowDesktopAlert($"An exception occurred loading the Threat Model:\n{e.Message}", true);
+ e.ToExceptionless().Submit();
+ model = null;
+ messageRaised = true;
}
-
- messageRaised = true;
- }
- catch (ExistingModelException)
- {
- ShowDesktopAlert("The model is already open.\nClose it if you want to load it again.", true);
- model = null;
- messageRaised = true;
- }
- catch (FileNotFoundException)
- {
- ShowDesktopAlert("File has not been found.", true);
- model = null;
- messageRaised = true;
- }
- catch (DirectoryNotFoundException)
- {
- ShowDesktopAlert("Directory has not been found.", true);
- model = null;
- messageRaised = true;
- }
- catch (UnauthorizedAccessException)
- {
- ShowDesktopAlert("The model cannot be opened because you do now have the required rights.", true);
- model = null;
- messageRaised = true;
- }
- catch (IOException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (FileFormatException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (EncryptionRequiredException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (FileEncryptedException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (FileNotEncryptedException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (InvalidHMACException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
- }
- catch (UnsupportedEncryptionException e)
- {
- ShowDesktopAlert(e.Message, true);
- model = null;
- messageRaised = true;
}
- catch (Exception e)
+ else
{
- ShowDesktopAlert($"An exception occurred loading the Threat Model:\n{e.Message}", true);
- e.ToExceptionless().Submit();
- model = null;
- messageRaised = true;
+ ShowDesktopAlert($"Threat Model '{location}' does not exist.", true);
}
if (model != null)
diff --git a/Studio/ThreatsManager/Portable.config b/Studio/ThreatsManager/Portable.config
index 7cb581ed..51975ea6 100644
--- a/Studio/ThreatsManager/Portable.config
+++ b/Studio/ThreatsManager/Portable.config
@@ -1,7 +1,7 @@
-
+
@@ -14,31 +14,31 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -58,15 +58,15 @@
-
+
-
+
-
+
@@ -74,15 +74,15 @@
-
+
-
+
-
+
diff --git a/Studio/ThreatsManager/SolutionInfo.cs b/Studio/ThreatsManager/SolutionInfo.cs
index 9717f9a3..7631c1b5 100644
--- a/Studio/ThreatsManager/SolutionInfo.cs
+++ b/Studio/ThreatsManager/SolutionInfo.cs
@@ -5,7 +5,7 @@
// associated with an assembly.
[assembly: AssemblyCompany("Simone Curzi")]
[assembly: AssemblyProduct("Threats Manager Studio")]
-[assembly: AssemblyCopyright("Copyright © Simone Curzi, 2018-2023. All Rights Reserved.")]
+[assembly: AssemblyCopyright("Copyright © Simone Curzi, 2018-2024. All Rights Reserved.")]
[assembly: AssemblyTrademark("")]
// Version information for an assembly consists of the following four values:
@@ -18,5 +18,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.1.4.0")]
-[assembly: AssemblyFileVersion("2.1.4.0")]
\ No newline at end of file
+[assembly: AssemblyVersion("2.1.5.0")]
+[assembly: AssemblyFileVersion("2.1.5.0")]
\ No newline at end of file
diff --git a/Studio/ThreatsManager/ThreatsManager.csproj b/Studio/ThreatsManager/ThreatsManager.csproj
index 5258f2b6..300251fe 100644
--- a/Studio/ThreatsManager/ThreatsManager.csproj
+++ b/Studio/ThreatsManager/ThreatsManager.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -34,6 +34,8 @@
1.0.0.%2a
false
true
+ true
+ PerMonitorV2
AnyCPU
@@ -93,8 +95,8 @@
..\packages\Exceptionless.Windows.Signed.4.3.2027\lib\net45\Exceptionless.Windows.Signed.dll
-
- ..\packages\ExCSS.4.2.4\lib\net48\ExCSS.dll
+
+ ..\packages\ExCSS.4.2.5\lib\net48\ExCSS.dll
..\packages\Fizzler.1.3.0\lib\netstandard2.0\Fizzler.dll
@@ -119,32 +121,32 @@
..\References\Northwoods.Go.dll
-
- ..\packages\PostSharp.Redist.2024.0.5\lib\net45\PostSharp.dll
+
+ ..\packages\PostSharp.Redist.2024.0.6\lib\net45\PostSharp.dll
-
- ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Aggregation.dll
+
+ ..\packages\PostSharp.Patterns.Aggregation.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Aggregation.dll
-
- ..\packages\PostSharp.Patterns.Common.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Common.dll
+
+ ..\packages\PostSharp.Patterns.Common.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Common.dll
-
- ..\packages\PostSharp.Patterns.Diagnostics.Redist.2024.0.5\lib\net47\PostSharp.Patterns.Diagnostics.dll
+
+ ..\packages\PostSharp.Patterns.Diagnostics.Redist.2024.0.6\lib\net47\PostSharp.Patterns.Diagnostics.dll
-
- ..\packages\PostSharp.Patterns.Diagnostics.NLog.2024.0.5\lib\net45\PostSharp.Patterns.Diagnostics.Backends.NLog.dll
+
+ ..\packages\PostSharp.Patterns.Diagnostics.NLog.2024.0.6\lib\net45\PostSharp.Patterns.Diagnostics.Backends.NLog.dll
-
- ..\packages\PostSharp.Patterns.Model.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Model.dll
+
+ ..\packages\PostSharp.Patterns.Model.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Model.dll
-
- ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.5\lib\net45\PostSharp.Patterns.Threading.dll
+
+ ..\packages\PostSharp.Patterns.Threading.Redist.2024.0.6\lib\net45\PostSharp.Patterns.Threading.dll
- ..\packages\Svg.3.4.6\lib\net462\Svg.dll
+ ..\packages\Svg.3.4.7\lib\net481\Svg.dll
-
- ..\packages\Syncfusion.Licensing.24.1.45\lib\net46\Syncfusion.Licensing.dll
+
+ ..\packages\Syncfusion.Licensing.25.1.38\lib\net462\Syncfusion.Licensing.dll
@@ -523,13 +525,13 @@
-
-
+
+
-
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager/packages.config b/Studio/ThreatsManager/packages.config
index 5b2a1a3c..4adf132e 100644
--- a/Studio/ThreatsManager/packages.config
+++ b/Studio/ThreatsManager/packages.config
@@ -1,24 +1,24 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+