From 2e64569634f45e9ae8393eee933384150ca37166 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 28 Mar 2024 14:49:04 +0100
Subject: [PATCH 01/15] Updated references to 2.1.5.
---
Samples/SampleExtensions/ExtensionLibrary.cs | 2 +-
.../SampleExtensions/SampleExtensions.csproj | 18 +++++++-------
Samples/SampleExtensions/packages.config | 8 +++----
.../ExtensionLibrary.cs | 2 +-
.../SampleWinFormExtensions.csproj | 24 +++++++++----------
.../SampleWinFormExtensions/packages.config | 8 +++----
.../ExtensionLibrary.cs | 2 +-
.../SimpleThreatModelAnalyzer.csproj | 14 +++++------
.../SimpleThreatModelAnalyzer/packages.config | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.AutoGenRules.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
...ThreatsManager.AutoThreatGeneration.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.DevOps.csproj | 6 ++---
.../ThreatsManager.Extensions.Client.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.Extensions.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.Mitre.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.MsTmt.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.PackageManagers.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.Quality.csproj | 6 ++---
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.QuantitativeRisk.csproj | 6 ++---
.../ThreatsManager.Engine.csproj | 6 ++---
.../ThreatsManager.Interfaces.csproj | 6 ++---
.../ThreatsManager.Utilities.csproj | 6 ++---
31 files changed, 90 insertions(+), 90 deletions(-)
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/SampleExtensions.csproj b/Samples/SampleExtensions/SampleExtensions.csproj
index 19e59841..2d5104b1 100644
--- a/Samples/SampleExtensions/SampleExtensions.csproj
+++ b/Samples/SampleExtensions/SampleExtensions.csproj
@@ -75,20 +75,20 @@
-
- ..\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.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/SampleExtensions/packages.config b/Samples/SampleExtensions/packages.config
index 60fd4bec..59f2b87f 100644
--- a/Samples/SampleExtensions/packages.config
+++ b/Samples/SampleExtensions/packages.config
@@ -10,8 +10,8 @@
-
-
-
-
+
+
+
+
\ 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..3aac7be1 100644
--- a/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
+++ b/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
@@ -47,7 +47,7 @@
..\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
@@ -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
diff --git a/Samples/SampleWinFormExtensions/packages.config b/Samples/SampleWinFormExtensions/packages.config
index 2cfaf807..04c3ab82 100644
--- a/Samples/SampleWinFormExtensions/packages.config
+++ b/Samples/SampleWinFormExtensions/packages.config
@@ -18,8 +18,8 @@
-
-
-
-
+
+
+
+
\ 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..08ccc62a 100644
--- a/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
+++ b/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
@@ -93,17 +93,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..99902d7e 100644
--- a/Samples/SimpleThreatModelAnalyzer/packages.config
+++ b/Samples/SimpleThreatModelAnalyzer/packages.config
@@ -15,7 +15,7 @@
-
-
-
+
+
+
\ 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..cefbd2d3 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.
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
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..75e0da66 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.
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
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..cbd26e90 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.
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
diff --git a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
index 7c6bc964..79f4e318 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.
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
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..0fa4e312 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.
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
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..664858ae 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.
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
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..dc1dd4b7 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.
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
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..e365097b 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.
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
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..3649a118 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.
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
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..b9ecff0b 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.
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
diff --git a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
index 701f4294..357813e3 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.
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
diff --git a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
index 5ecd4612..a7d33768 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.
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
diff --git a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
index 6e748e14..4cacd8c9 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.
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
From d4a2e2aa23ee97dc364baaa5592d9bb1573d69e1 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Sat, 30 Mar 2024 18:15:24 +0100
Subject: [PATCH 02/15] Added extensibility for Summary Excel Reports.
---
.../Reporting/ISummarySheetProvider.cs | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 Sources/Extensions/ThreatsManager.Extensions.Client/Reporting/ISummarySheetProvider.cs
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);
+ }
+}
From be79a82850d9979cf605c5375c9bbb100dfa8dfe Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Sat, 30 Mar 2024 18:16:10 +0100
Subject: [PATCH 03/15] Fixed crash when applying Threat Model Initializers.
---
Sources/ThreatsManager.Engine/Manager.ThreatModel.cs | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
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);
}
}
}
From 77c4d1eb1e8d1c43cbb6b7cc164b0f1203dd2b79 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Sun, 31 Mar 2024 10:28:52 +0200
Subject: [PATCH 04/15] Added IForceSetId
---
.../ObjectModel/Diagrams/Diagram.cs | 7 ++++++-
.../ObjectModel/Entities/DataFlow.cs | 7 ++++++-
.../ObjectModel/Entities/DataStore.cs | 7 ++++++-
.../ObjectModel/Entities/EntityTemplate.cs | 7 ++++++-
.../Entities/ExternalInteractor.cs | 7 ++++++-
.../ObjectModel/Entities/FlowTemplate.cs | 7 ++++++-
.../ObjectModel/Entities/Process.cs | 7 ++++++-
.../ObjectModel/Entities/TrustBoundary.cs | 7 ++++++-
.../Entities/TrustBoundaryTemplate.cs | 7 ++++++-
.../ThreatsMitigations/Mitigation.cs | 7 ++++++-
.../SpecializedMitigation.cs | 2 +-
.../ThreatsMitigations/ThreatActor.cs | 7 ++++++-
.../ThreatsMitigations/ThreatEvent.cs | 7 ++++++-
.../ThreatEventMitigation.cs | 2 +-
.../ThreatsMitigations/ThreatEventScenario.cs | 7 ++++++-
.../ThreatsMitigations/ThreatType.cs | 7 ++++++-
.../ThreatsMitigations/Vulnerability.cs | 7 ++++++-
.../ThreatsMitigations/Weakness.cs | 7 ++++++-
.../ObjectModel/IForceSetId.cs | 20 +++++++++++++++++++
19 files changed, 118 insertions(+), 18 deletions(-)
create mode 100644 Sources/ThreatsManager.Interfaces/ObjectModel/IForceSetId.cs
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.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);
+ }
+}
From c095a3b26107c1851e234d3692e2e3007701c180 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Sun, 31 Mar 2024 11:57:23 +0200
Subject: [PATCH 05/15] Revised standard size for Trust Boundaries.
---
Sources/Extensions/Extensions.sln | 12 +-
.../Engine/AIAssistant.cs | 105 +++++
.../Engine/AIMitigation.cs | 12 +
.../Engine/AIThreat.cs | 12 +
.../Engine/Conversation.cs | 13 +
.../ExtensionsContainer.cs | 3 +
.../Properties/Resources.Designer.cs | 99 +++++
.../Properties/Resources.resx | 132 ++++++
.../ThreatsManager.AIAssistant.csproj | 49 +++
.../Actions/CreateTrustBoundary.cs | 2 +-
.../_manifest/spdx_2.2/manifest.spdx.json | 390 +++++++++---------
.../spdx_2.2/manifest.spdx.json.sha256 | Bin 128 -> 128 bytes
12 files changed, 630 insertions(+), 199 deletions(-)
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIAssistant.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIMitigation.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Engine/AIThreat.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Engine/Conversation.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/ExtensionsContainer.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.Designer.cs
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/Properties/Resources.resx
create mode 100644 Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
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..cce327bd
--- /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-2023. 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.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/SBOM/_manifest/spdx_2.2/manifest.spdx.json b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json
index 6018d8a1..708e433d 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": "PostSharp.Redist",
+ "SPDXID": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -12,19 +12,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.2",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.2"
+ "referenceLocator": "pkg:nuget/PostSharp.Redist%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp",
- "SPDXID": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
+ "name": "System.ComponentModel.Composition",
+ "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -33,19 +33,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.Core",
- "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
+ "name": "Microsoft.IdentityModel.Tokens",
+ "SPDXID": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -54,19 +54,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "5.6.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%405.6.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Common.Redist",
- "SPDXID": "SPDXRef-Package-BB7031E0779021EB63EFC1BB9ACF70E0B6FA3C65AA115E98C6C35D15DCA02339",
+ "name": "Microsoft.Bcl.AsyncInterfaces",
+ "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -75,19 +75,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "1.1.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Antlr4.Runtime.Standard",
- "SPDXID": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "name": "PostSharp.Patterns.Aggregation.Redist",
+ "SPDXID": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -96,19 +96,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.13.1",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Antlr4.Runtime.Standard%404.13.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundationServer.Client",
- "SPDXID": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "name": "MathNet.Numerics.Signed",
+ "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -117,19 +117,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "5.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.IdentityModel.Tokens.Jwt",
- "SPDXID": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "name": "Microsoft.AspNet.WebApi.WebHost",
+ "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -138,19 +138,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.WebHost%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.Client",
- "SPDXID": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
+ "name": "Microsoft.IdentityModel.Logging",
+ "SPDXID": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -159,19 +159,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "5.6.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Client%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%405.6.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Tokens",
- "SPDXID": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "name": "System.Text.Json",
+ "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -180,19 +180,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "4.7.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%405.6.0"
+ "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Clients.ActiveDirectory",
- "SPDXID": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "name": "System.Configuration.ConfigurationManager",
+ "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -201,19 +201,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.6",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Clients.ActiveDirectory%405.2.6"
+ "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model",
- "SPDXID": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "name": "Antlr4.Runtime.Standard",
+ "SPDXID": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -222,19 +222,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "4.13.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.5"
+ "referenceLocator": "pkg:nuget/Antlr4.Runtime.Standard%404.13.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model.Redist",
- "SPDXID": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "name": "Microsoft.VisualStudio.Services.Client",
+ "SPDXID": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -243,19 +243,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "16.205.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4016.205.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.JsonWebTokens",
- "SPDXID": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "name": "Microsoft.IdentityModel.Clients.ActiveDirectory",
+ "SPDXID": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -264,19 +264,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "5.2.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Clients.ActiveDirectory%405.2.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Common",
- "SPDXID": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "name": "System.Memory",
+ "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -285,19 +285,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "4.5.4",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Text.Json",
- "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
+ "name": "PostSharp.Patterns.Threading.Redist",
+ "SPDXID": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -306,19 +306,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.7.2",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.AI.OpenAI",
- "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "name": "PostSharp",
+ "SPDXID": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -327,19 +327,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.0-beta.9",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
+ "referenceLocator": "pkg:nuget/PostSharp%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.Core",
- "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "name": "HtmlAgilityPack",
+ "SPDXID": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -348,19 +348,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.35.0",
+ "versionInfo": "1.11.59",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
+ "referenceLocator": "pkg:nuget/HtmlAgilityPack%401.11.59"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading",
- "SPDXID": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
+ "SPDXID": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -369,19 +369,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "16.205.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4016.205.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ComponentModel.Composition",
- "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "name": "Azure.AI.OpenAI",
+ "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -390,19 +390,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "1.0.0-beta.9",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
+ "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory.Data",
- "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "name": "PostSharp.Patterns.Model",
+ "SPDXID": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -411,19 +411,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.2",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
- "SPDXID": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "name": "PostSharp.Patterns.Common",
+ "SPDXID": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -432,19 +432,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4016.205.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Configuration.ConfigurationManager",
- "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "name": "System.ValueTuple",
+ "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -453,19 +453,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "4.5.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
+ "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.Bcl.AsyncInterfaces",
- "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "name": "System.Text.Encodings.Web",
+ "SPDXID": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -474,19 +474,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.1.1",
+ "versionInfo": "4.7.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
+ "referenceLocator": "pkg:nuget/System.Text.Encodings.Web%404.7.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading.Redist",
- "SPDXID": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "name": "PostSharp.Patterns.Aggregation",
+ "SPDXID": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -500,7 +500,7 @@
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.5"
}
],
"supplier": "NOASSERTION"
@@ -527,8 +527,8 @@
"supplier": "NOASSERTION"
},
{
- "name": "MathNet.Numerics.Signed",
- "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "name": "Newtonsoft.Json",
+ "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -537,19 +537,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.0.0",
+ "versionInfo": "13.0.3",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
+ "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "HtmlAgilityPack",
- "SPDXID": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "name": "Microsoft.AspNet.WebApi.Core",
+ "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -558,19 +558,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.11.59",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/HtmlAgilityPack%401.11.59"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Logging",
- "SPDXID": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "name": "Microsoft.TeamFoundationServer.Client",
+ "SPDXID": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -579,19 +579,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "16.205.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4016.205.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation.Redist",
- "SPDXID": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "name": "System.Memory.Data",
+ "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -600,19 +600,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "1.0.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory",
- "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "name": "PostSharp.Patterns.Model.Redist",
+ "SPDXID": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -621,19 +621,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.4",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Redist",
- "SPDXID": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "name": "PostSharp.Patterns.Common.Redist",
+ "SPDXID": "SPDXRef-Package-BB7031E0779021EB63EFC1BB9ACF70E0B6FA3C65AA115E98C6C35D15DCA02339",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -647,14 +647,14 @@
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common.Redist%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ValueTuple",
- "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "name": "Microsoft.VisualStudio.Services.InteractiveClient",
+ "SPDXID": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -663,19 +663,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.0",
+ "versionInfo": "16.205.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.InteractiveClient%4016.205.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.WebHost",
- "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
+ "name": "Microsoft.IdentityModel.JsonWebTokens",
+ "SPDXID": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -684,19 +684,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "5.6.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.WebHost%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%405.6.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation",
- "SPDXID": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
+ "name": "System.Runtime.CompilerServices.Unsafe",
+ "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -705,19 +705,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "6.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Runtime.CompilerServices.Unsafe",
- "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
+ "name": "PostSharp.Patterns.Threading",
+ "SPDXID": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -726,19 +726,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "6.0.0",
+ "versionInfo": "2024.0.5",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.5"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Newtonsoft.Json",
- "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
+ "name": "System.Drawing.Common",
+ "SPDXID": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -747,19 +747,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "13.0.3",
+ "versionInfo": "8.0.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
+ "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.InteractiveClient",
- "SPDXID": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "name": "Microsoft.AspNet.WebApi.Client",
+ "SPDXID": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -768,19 +768,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.InteractiveClient%4016.205.1"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Client%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.Client",
- "SPDXID": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "name": "System.IdentityModel.Tokens.Jwt",
+ "SPDXID": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -789,19 +789,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "5.6.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/System.IdentityModel.Tokens.Jwt%405.6.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Security.Cryptography.ProtectedData",
- "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "name": "Azure.Core",
+ "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -810,19 +810,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "1.35.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Security.Cryptography.ProtectedData%408.0.0"
+ "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Text.Encodings.Web",
- "SPDXID": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
+ "name": "System.Security.Cryptography.ProtectedData",
+ "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -831,12 +831,12 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.7.2",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Text.Encodings.Web%404.7.2"
+ "referenceLocator": "pkg:nuget/System.Security.Cryptography.ProtectedData%408.0.0"
}
],
"supplier": "NOASSERTION"
@@ -862,16 +862,16 @@
],
"externalDocumentRefs": [],
"relationships": [
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
{
"relationshipType": "DESCRIBES",
"relatedSpdxElement": "SPDXRef-RootPackage",
"spdxElementId": "SPDXRef-DOCUMENT"
},
- {
- "relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
- "spdxElementId": "SPDXRef-RootPackage"
- },
{
"relationshipType": "DEPENDS_ON",
"relatedSpdxElement": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
@@ -879,7 +879,7 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
+ "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -889,102 +889,102 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "relatedSpdxElement": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "relatedSpdxElement": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "relatedSpdxElement": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "relatedSpdxElement": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "relatedSpdxElement": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "relatedSpdxElement": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "relatedSpdxElement": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "relatedSpdxElement": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "relatedSpdxElement": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "relatedSpdxElement": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
+ "relatedSpdxElement": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "relatedSpdxElement": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "relatedSpdxElement": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -994,22 +994,22 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
+ "relatedSpdxElement": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "relatedSpdxElement": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
+ "relatedSpdxElement": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -1019,47 +1019,47 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "relatedSpdxElement": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
+ "relatedSpdxElement": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
+ "relatedSpdxElement": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "relatedSpdxElement": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "relatedSpdxElement": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "relatedSpdxElement": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -1072,9 +1072,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/Y9tsEZrwWUepAio_pLjesA",
"creationInfo": {
- "created": "2024-03-17T07:30:55Z",
+ "created": "2024-03-31T09:55:42Z",
"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 c902ec9747ec60eb58938d347684880c9ae44f36..e58d612fe08b18922e1239e260790d8a00e4d0e8 100644
GIT binary patch
literal 128
zcmW-Yi4lMx3IYVf8{Qy09TZ2X05sBxyVGq<>f
cZDdk;NgKV;INWu^D*wP8AZSfGnKfM34|L`ccmMzZ
literal 128
zcmW-aixI#e2*ut=R9Zjd6s!A>(BOFp27*glOOIY%D%4d|p9U<*o%@CtxbZfsWD~=g
do}59XSLqqFksT}8;Y7pR%qPk1aenK^a{b3P5~BbB
From f983ce1c495b64b8900e045571d82137d259ae8a Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Tue, 2 Apr 2024 16:46:22 +0200
Subject: [PATCH 06/15] Updated versions and references.
---
LICENSE | 2 +-
.../ThreatsManager.AIAssistant.csproj | 2 +-
.../ThreatsManager.AutoGenRules.csproj | 2 +-
.../ThreatsManager.AutoThreatGeneration.csproj | 2 +-
.../ThreatsManager.DevOps/ThreatsManager.DevOps.csproj | 6 +++---
.../ThreatsManager.Extensions.Client.csproj | 2 +-
.../ThreatsManager.Extensions.csproj | 2 +-
.../ThreatsManager.Mitre/ThreatsManager.Mitre.csproj | 4 ++--
.../ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj | 6 +++---
.../ThreatsManager.PackageManagers.csproj | 2 +-
.../ThreatsManager.Quality/ThreatsManager.Quality.csproj | 2 +-
.../ThreatsManager.QuantitativeRisk.csproj | 2 +-
.../ThreatsManager.Engine/ThreatsManager.Engine.csproj | 4 ++--
.../ThreatsManager.Interfaces.csproj | 6 +++---
.../ThreatsManager.Utilities.csproj | 8 ++++----
15 files changed, 26 insertions(+), 26 deletions(-)
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/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
index cce327bd..155f8815 100644
--- a/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
index cefbd2d3..70fe4457 100644
--- a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
index 75e0da66..bafac315 100644
--- a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
index cbd26e90..a22a88c7 100644
--- a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
+++ b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
@@ -23,9 +23,9 @@
-
-
-
+
+
+
diff --git a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
index 79f4e318..7ddf0e3b 100644
--- a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
index 0fa4e312..fca9f701 100644
--- a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
index 664858ae..0ecc2b14 100644
--- a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
+++ b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
@@ -23,9 +23,9 @@
-
+
-
+
diff --git a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
index dc1dd4b7..e3cf649c 100644
--- a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
+++ b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
@@ -28,9 +28,9 @@
-
-
-
+
+
+
diff --git a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
index e365097b..76e7ef21 100644
--- a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
+++ b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
@@ -24,7 +24,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
index 3649a118..cfb9e276 100644
--- a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
+++ b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
@@ -23,7 +23,7 @@
-
+
diff --git a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
index b9ecff0b..59b68879 100644
--- a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
+++ b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
@@ -25,7 +25,7 @@
-
+
diff --git a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
index 357813e3..5f51181f 100644
--- a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
+++ b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
index a7d33768..a86f05b7 100644
--- a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
+++ b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
@@ -32,10 +32,10 @@
-
-
+
+
-
+
diff --git a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
index 4cacd8c9..832570b0 100644
--- a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
+++ b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
@@ -37,10 +37,10 @@
-
-
-
-
+
+
+
+
From e9ef04034998e4906f645a4924a5c759f0eaf57d Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Tue, 2 Apr 2024 16:47:10 +0200
Subject: [PATCH 07/15] Removed unnecessary usings.
---
.../ThreatsManager.Engine/Aspects/EntityShapesContainerAspect.cs | 1 -
.../ThreatsManager.Engine/Aspects/GroupShapesContainerAspect.cs | 1 -
2 files changed, 2 deletions(-)
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;
From 6433cbd8e0766b4827ac0642f3b57fe5c5ee16f1 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Tue, 2 Apr 2024 16:47:49 +0200
Subject: [PATCH 08/15] Manage exception due to Undo/Redo.
---
.../Aspects/LinksContainerAspect.cs | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
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);
From ae97c9e26efe3732df9e9b22a265bd0571429d37 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Tue, 2 Apr 2024 16:48:08 +0200
Subject: [PATCH 09/15] Added documentation.
---
.../Exceptions/InvalidHMACException.cs | 7 +++++++
.../Exceptions/ThreatModelOpeningFailureException.cs | 8 ++++++++
.../Aspects/Engine/LockableAspect.cs | 3 +++
3 files changed, 18 insertions(+)
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.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
{
From 3a933bd0f7fc8c53dcbee0ac38279a1126a8933a Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 4 Apr 2024 08:31:49 +0200
Subject: [PATCH 10/15] Updated copyright dates.
---
.../ThreatsManager.AutoGenRules.csproj | 2 +-
.../ThreatsManager.AutoThreatGeneration.csproj | 2 +-
.../ThreatsManager.DevOps/ThreatsManager.DevOps.csproj | 2 +-
.../ThreatsManager.Extensions.Client.csproj | 2 +-
.../ThreatsManager.Extensions/ThreatsManager.Extensions.csproj | 2 +-
.../Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj | 2 +-
.../Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj | 2 +-
.../ThreatsManager.PackageManagers.csproj | 2 +-
.../ThreatsManager.Quality/ThreatsManager.Quality.csproj | 2 +-
.../ThreatsManager.QuantitativeRisk.csproj | 2 +-
Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj | 2 +-
.../ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj | 2 +-
.../ThreatsManager.Utilities/ThreatsManager.Utilities.csproj | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
index 70fe4457..8e4e02b6 100644
--- a/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoGenRules/ThreatsManager.AutoGenRules.csproj
@@ -6,7 +6,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
index bafac315..064bcabb 100644
--- a/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
+++ b/Sources/Extensions/ThreatsManager.AutoThreatGeneration/ThreatsManager.AutoThreatGeneration.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
index a22a88c7..ac7b1279 100644
--- a/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
+++ b/Sources/Extensions/ThreatsManager.DevOps/ThreatsManager.DevOps.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
index 7ddf0e3b..109b5bb1 100644
--- a/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions.Client/ThreatsManager.Extensions.Client.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
index fca9f701..808e458e 100644
--- a/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
+++ b/Sources/Extensions/ThreatsManager.Extensions/ThreatsManager.Extensions.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
index 0ecc2b14..ad9fb1cb 100644
--- a/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
+++ b/Sources/Extensions/ThreatsManager.Mitre/ThreatsManager.Mitre.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
index e3cf649c..0a95e509 100644
--- a/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
+++ b/Sources/Extensions/ThreatsManager.MsTmt/ThreatsManager.MsTmt.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
index 76e7ef21..895b5fa9 100644
--- a/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
+++ b/Sources/Extensions/ThreatsManager.PackageManagers/ThreatsManager.PackageManagers.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
index cfb9e276..fd8c4477 100644
--- a/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
+++ b/Sources/Extensions/ThreatsManager.Quality/ThreatsManager.Quality.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
index 59b68879..0155a8c4 100644
--- a/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
+++ b/Sources/Extensions/ThreatsManager.QuantitativeRisk/ThreatsManager.QuantitativeRisk.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
index 5f51181f..0ad21b32 100644
--- a/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
+++ b/Sources/ThreatsManager.Engine/ThreatsManager.Engine.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
index a86f05b7..72ffe421 100644
--- a/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
+++ b/Sources/ThreatsManager.Interfaces/ThreatsManager.Interfaces.csproj
@@ -7,7 +7,7 @@
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.5.0
diff --git a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
index 832570b0..0801f232 100644
--- a/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
+++ b/Sources/ThreatsManager.Utilities/ThreatsManager.Utilities.csproj
@@ -7,7 +7,7 @@
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.5.0
From 8684a2f2cda76b335c6c063fff3ef119585facb4 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 4 Apr 2024 08:32:27 +0200
Subject: [PATCH 11/15] Updated copyright dates.
---
.../ThreatsManager.AIAssistant.csproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
index 155f8815..6284b985 100644
--- a/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
+++ b/Sources/Extensions/ThreatsManager.AIAssistant/ThreatsManager.AIAssistant.csproj
@@ -6,7 +6,7 @@
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.5.0
From 0b05fe6a5bb2bd8a22960da326e0b1e331014be3 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 4 Apr 2024 11:15:11 +0200
Subject: [PATCH 12/15] Updated copyright dates
---
.../Resources/net481/ThreatsManager.Icons.dll | Bin 767216 -> 767216 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/Sources/Resources/net481/ThreatsManager.Icons.dll b/Sources/Resources/net481/ThreatsManager.Icons.dll
index 08a63bd168735347facaf19814b8ee53cd6a7473..6d3a61282ea8f785c5fae5398fd4ec48c6e51dcf 100644
GIT binary patch
delta 1387
zcmV-x1(f>m=`Qf;E|7=><2pa5k&H|O;Q0%&+a0P9G-5!C9&h18py&x>k_b#Uvk0s4
z0Rc3F`mBfgtO1AmtOAGntOJMotOSSptObYqtOkertOtkstO$qttO>XJtO{1vf9XI&
z4N{@65=ZL-TVNdD0NFH^6}D-^#hfdb^?P6=yC++U?+BjYQXE9Lip#-YOo
z*?@=zq>XSTk-|vuEUsmiEC?Y|t000V_c!`(Tg9}g)yXVqC54j0VwC!OddsC4O
zmpFtAZXmno(m)Tn3C*Od
zAQ)xhdm-TW{Z3Vr1|QPd+RxM8%D93Ft9l}lLmIK@Qn!(g3xpwm1$%3kUCxn+CPFJH
zdC|`wp~QC2TaZx~(M@6fsU_5YFbxI?Duzgg_YDC70R;dAf&qY3KvqLOC)n-OAnE|o
zH4zYwZN+yp`|#e0Hwh`3`>$xnH4vzV{d8bW+TevN(n{hmDD(5&Oe@#14n7{U2~L
zd$7qIi3^0e#1##HH2t6V65fv|k8AYH?q18;5VD##3`tYlW<=|ZX_^P!x)VD@FnZGL
z^HH29?LYN<@;?@k@Fe2ddL;qWqj67a1NeQ@X{m?=B8t7tZgX^hjsv)XZ*{nNM2Y^G
zP^Z%Hz_jCb@6UrSR|)t_N;$u+Lb~*hpINfYR4zZ0nyUnV?sAP;P-R$}eZ$#_A}
zs>0!}l}s`d;c7)=iRoY_nDmRK4OGAK6<4_Z#3Tq;Cylo_Kyq7f_31BP4Z47cpuduw
zP}QigX&xxf@=LoLFw>D=?}=1?w`69{DH;!HZIi6Ck^O6wyqlT~<~IahXgg}q3RJro
zH+(!c(SV0GZKD(*750Ll!K1q`ytVd_I(bYThDQrME@c~#xM#Dgjz>)hGa+B2uY6@J
zvl1h4iTdNMl$n>vu?yCJG%z$UHZwOeFj_D#1_>&LNQU#A_O2F%`$Dgb}=7k1lKWAZd8
z8N&IBDj5uiwM|)QAaiT_RaR)zlN^evf0FEuuW2`xR2e_2E)3s5P;+~khDP3hfm`MX)
zm|ko9uQ|j~vr$j=5)E$lnR+bfb8zVfQRf&=4dG&O3&q|-5T|<^dR)ws64@YWeClS`
z5FILvR*;ZtL!eF4CGR!JQSP09WMlcmfZxanYjHr{TbRg*MXQ0!`u9io;X
ze9+N2KZ-5-OkMPvVB%969n*_3`Wz`1XczyteCFbRkI4|@F8BxkxuF`w)(f`E~rN2k$||c(g_`7
ztRiNZQSaea+IO^^{1Z?qNOW_nwB|;IfWY&-52~RzUoVgcIR-_g8&J9S%Wm0ZOCjN3
tlv!4oHYkIpeo2%Qw!4?Dml(nUf3h#`O@NXXGOVK3$!g+|JVF2f003F+iopN?
delta 1387
zcmV-x1(f>m=`Qf;E|7=>mSXzCk&H|OE20ds+a0P9DZm-mZ66Uyu0)HhL}Vv@vk0s4
z0Rc0E`mBfgtO1AmtOAGntOJMotOSSptObYqtOkertOtkstO$qttO>XJtO{1ve~^Pr
zb#GwYWQ9`m%v8I&tz7Y%XeAnH_d&s%@^IxYU4$TkGP5HqYOwPDNI+k2Va43ftLdOD
zsZ0N8mPtaz7_C+}wE6eHi0ijiBg|#@zE73cMFudo@LgH9=EN^INaBs|8P8zjz=#+P4=g9}g)l6_mV-Hnq^t?S^8vTx=~
zmpFtAZXl9+RsyF1nVc>a`MpY$>Od
zAeFlcoE}rO^Pgul=1TuCYGOvDm1?F3L8@2EUY2{0Rkx9j3xpwm4k9WK6P0Ia{(^&F
zEjim$NSGR3TzWYyyXXr$&i9;kFbxI?Duzgg_YDC70R;dAf&qYzOp6=>Eg<`J1Zff|
zX9;b2wLoWtd{opRp1LvpN1UN8`U{A0|1&Eu5xsu#EfIUf3A^i_bkF!a5v|`B&Da
zQ$3JzhtF~COs@EU@`K12jG8>%Fi1naAwwl~&Hvx%C`oX{Vh@6Tw0*Gg%o@PrVLwEd=rH(c+#d%A;Uk|C)=~Dv1J1IDPC-v|c~<7UHwhzo>^d-j*?*g|mEbbhh-d
z8872CIq6gPM!$iii=81*XGwj((P9-QFDXU*VVgpIe0$eQ@oj*dQ#~UM*$fF@$~jsV
zHm-NJfIMC{ycrj~e3+hnDe&2AgIRh*PS1jxP^ppddZZG_FB%bJp-B*^kJTs8XK82#
zasM_9O!|e&1_>&LNQU#A_O4*%Mj=#eATNO
zRz#V;o+g!f>I!FFA!?PbBA{s^%bx@E69Dq=hjyYvN`u8>n4YUod8@*Lw{ZTaS80
zteT!OXyA6!eVccv86`B;OwWF|TqFbIHNJaZuc4$qFu3g7>71eaMyybD8@6auP5FmM
zl-(2d{5f}UDYLSFoHdo`sO$PMLu`G4!2t4p-58K{)?T%Awhjcx-y`#@gqt2XN>Fhz
zWi;ocM_|Xed+J@OgOsLadUqiU+m3n8NbdM(@KRDMJM?3Vp&b$%v~xerUcT3E#xBv!
ziq7Et28W1)Vk38ku&w=}%0h>)lh-AgemAS~p@#z$Y94}rofw`wlI#RYiaN86IEDD^
z>+XneAnogdgOS2q$1fyH;!RuKlNUTC(MB`lj~aBhg-jTv=
Date: Thu, 4 Apr 2024 11:15:52 +0200
Subject: [PATCH 13/15] Updated samples for v2.1.5.
---
.../Reporting/EntitiesSheetProvider.cs | 56 +++++++++++++++++++
.../SampleExtensions/SampleExtensions.csproj | 32 ++++++-----
Samples/SampleExtensions/packages.config | 17 +++---
.../SampleWinFormExtensions.csproj | 42 +++++++-------
Samples/SampleWinFormExtensions/app.config | 2 +-
.../SampleWinFormExtensions/packages.config | 22 ++++----
.../SimpleThreatModelAnalyzer.csproj | 41 +++++++-------
.../SimpleThreatModelAnalyzer/packages.config | 22 ++++----
8 files changed, 148 insertions(+), 86 deletions(-)
create mode 100644 Samples/SampleExtensions/Reporting/EntitiesSheetProvider.cs
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 2d5104b1..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
@@ -81,6 +81,9 @@
..\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.5\lib\net481\ThreatsManager.Icons.dll
@@ -101,6 +104,7 @@
True
Resources.resx
+
diff --git a/Samples/SampleExtensions/packages.config b/Samples/SampleExtensions/packages.config
index 59f2b87f..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/SampleWinFormExtensions.csproj b/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
index 3aac7be1..019df4a1 100644
--- a/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
+++ b/Samples/SampleWinFormExtensions/SampleWinFormExtensions.csproj
@@ -1,6 +1,6 @@
-
+
Debug
@@ -40,8 +40,8 @@
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
@@ -53,23 +53,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.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
@@ -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 04c3ab82..097d4a1f 100644
--- a/Samples/SampleWinFormExtensions/packages.config
+++ b/Samples/SampleWinFormExtensions/packages.config
@@ -1,19 +1,19 @@
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
diff --git a/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj b/Samples/SimpleThreatModelAnalyzer/SimpleThreatModelAnalyzer.csproj
index 08ccc62a..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
diff --git a/Samples/SimpleThreatModelAnalyzer/packages.config b/Samples/SimpleThreatModelAnalyzer/packages.config
index 99902d7e..e6ae380b 100644
--- a/Samples/SimpleThreatModelAnalyzer/packages.config
+++ b/Samples/SimpleThreatModelAnalyzer/packages.config
@@ -1,18 +1,18 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
From b7d7528f598e93a9ed939632c1dbb15ced694ba7 Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 4 Apr 2024 11:16:07 +0200
Subject: [PATCH 14/15] Updated SBOM for v2.1.5.
---
.../_manifest/spdx_2.2/manifest.spdx.json | 496 +++++++++++-------
.../spdx_2.2/manifest.spdx.json.sha256 | Bin 128 -> 128 bytes
2 files changed, 300 insertions(+), 196 deletions(-)
diff --git a/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json b/Sources/SBOM/_manifest/spdx_2.2/manifest.spdx.json
index 708e433d..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": "PostSharp.Redist",
- "SPDXID": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "name": "Newtonsoft.Json",
+ "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -12,19 +12,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "13.0.3",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ComponentModel.Composition",
- "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "name": "PostSharp.Patterns.Model.Redist",
+ "SPDXID": "SPDXRef-Package-FA5D8EFBD719F81F34B28843F66D653B3F33160B0FC1AF355E14B97A62F2A59E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -33,19 +33,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Tokens",
- "SPDXID": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "name": "Microsoft.IdentityModel.Abstractions",
+ "SPDXID": "SPDXRef-Package-ED6E8FB997A6D78D08443EC95BD284BFE932248A440D142BCB8557A36DC4A5A2",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -54,19 +54,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Abstractions%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.Bcl.AsyncInterfaces",
- "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "name": "System.Runtime.CompilerServices.Unsafe",
+ "SPDXID": "SPDXRef-Package-931589BD44AB626716D546809406FE4D919C164FF884EA04D57BA10E2A8D64EC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -75,19 +75,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.1.1",
+ "versionInfo": "4.7.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
+ "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%404.7.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation.Redist",
- "SPDXID": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "name": "System.IdentityModel.Tokens.Jwt",
+ "SPDXID": "SPDXRef-Package-A51161C96823E35F18ECB01793B545733228CEB78738651BD5BF03B9683AE351",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -96,19 +96,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.IdentityModel.Tokens.Jwt%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "MathNet.Numerics.Signed",
- "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "name": "PostSharp.Patterns.Threading.Redist",
+ "SPDXID": "SPDXRef-Package-70FEAFC69B7A98460F2609DDAADD1215D82E918EC337FDCB0E6CE6717C00A976",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -117,19 +117,61 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.0.0",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.WebHost",
- "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
+ "name": "Antlr4.Runtime.Standard",
+ "SPDXID": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "4.13.1",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/Antlr4.Runtime.Standard%404.13.1"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "PostSharp.Patterns.Model",
+ "SPDXID": "SPDXRef-Package-8BB2C578F040FA268F509BC9BA79CE8818B061F7A729C3979D3EAE41FDE0C582",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "2024.0.6",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.6"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "Microsoft.AspNet.WebApi.Core",
+ "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -143,14 +185,14 @@
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.WebHost%405.2.7"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Logging",
- "SPDXID": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "name": "Microsoft.TeamFoundationServer.Client",
+ "SPDXID": "SPDXRef-Package-D85926065BB4CE37A6FA6F50EAF742F233EE07208ECD20E72875B22A91F718D5",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -159,19 +201,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Text.Json",
- "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
+ "name": "System.Memory.Data",
+ "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -180,19 +222,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.7.2",
+ "versionInfo": "1.0.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
+ "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Configuration.ConfigurationManager",
- "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "name": "MathNet.Numerics.Signed",
+ "SPDXID": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -201,19 +243,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "5.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
+ "referenceLocator": "pkg:nuget/MathNet.Numerics.Signed%405.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Antlr4.Runtime.Standard",
- "SPDXID": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "name": "PostSharp.Patterns.Aggregation",
+ "SPDXID": "SPDXRef-Package-D9DEFCAF5968755A03F930932A0DC5ACBB14D1A6B646B95FBC0EE49AB7B250D4",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -222,19 +264,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.13.1",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Antlr4.Runtime.Standard%404.13.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.Client",
- "SPDXID": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "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": "16.205.1",
+ "versionInfo": "2.23.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/Microsoft.Identity.Client.Extensions.Msal%402.23.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.Clients.ActiveDirectory",
- "SPDXID": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "name": "Microsoft.IdentityModel.Tokens",
+ "SPDXID": "SPDXRef-Package-1F6868692BA92B8833FB7BDD49335660B27070F01FE640B02ABF3CF85E9E917F",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -264,19 +306,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.6",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Clients.ActiveDirectory%405.2.6"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Tokens%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory",
- "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "name": "System.Runtime.CompilerServices.Unsafe",
+ "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -285,19 +327,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.4",
+ "versionInfo": "6.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
+ "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading.Redist",
- "SPDXID": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "name": "PostSharp.Patterns.Threading",
+ "SPDXID": "SPDXRef-Package-3F9BAB33E51D566FC5243580D7C6FB465D6CF56481C9A29E1FCB54758615112E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -306,19 +348,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp",
- "SPDXID": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
+ "name": "PostSharp.Redist",
+ "SPDXID": "SPDXRef-Package-C686523A20CD43A3C5958A0FF4D9AA80EE32CC2280180C31BC3D7278129F7935",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -327,19 +369,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.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "HtmlAgilityPack",
- "SPDXID": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "name": "System.Security.Cryptography.ProtectedData",
+ "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -348,19 +390,40 @@
],
"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.Security.Cryptography.ProtectedData%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
- "SPDXID": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "name": "System.Memory",
+ "SPDXID": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "4.5.4",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/System.Memory%404.5.4"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "Microsoft.IdentityModel.Logging",
+ "SPDXID": "SPDXRef-Package-B5E9DFA3EF880DFD63E464878A4D9F62FD34E8760F0877C125CEF609A459E577",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -369,19 +432,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4016.205.1"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.Logging%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.AI.OpenAI",
- "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "name": "Microsoft.VisualStudio.Services.Client",
+ "SPDXID": "SPDXRef-Package-22082FD72E8CF130874BE5C4C34DAF5C0760879E4935A27DAD871E64F0280929",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -390,19 +453,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.0-beta.9",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.Client%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model",
- "SPDXID": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "name": "System.IO.Packaging",
+ "SPDXID": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -411,19 +474,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model%402024.0.5"
+ "referenceLocator": "pkg:nuget/System.IO.Packaging%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Common",
- "SPDXID": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "name": "PostSharp",
+ "SPDXID": "SPDXRef-Package-8709677B055DBEEE1AD21998424308E47C0022943DA35BC357D82421361E9D67",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -432,19 +495,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.5"
+ "referenceLocator": "pkg:nuget/PostSharp%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.ValueTuple",
- "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "name": "HtmlAgilityPack",
+ "SPDXID": "SPDXRef-Package-69A986D6F543ED157CF60B09C3CDD7A4405DF633256C00FEFBC53DA1956B1EE5",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -453,19 +516,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "4.5.0",
+ "versionInfo": "1.11.60",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
+ "referenceLocator": "pkg:nuget/HtmlAgilityPack%401.11.60"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Text.Encodings.Web",
- "SPDXID": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
+ "name": "System.Text.Json",
+ "SPDXID": "SPDXRef-Package-5D96F0103707CBCFF84B28D306BD0C6F4464B149E2C79A6D1218CC1E093FFD25",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -479,14 +542,14 @@
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Text.Encodings.Web%404.7.2"
+ "referenceLocator": "pkg:nuget/System.Text.Json%404.7.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Aggregation",
- "SPDXID": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
+ "name": "Microsoft.Identity.Client",
+ "SPDXID": "SPDXRef-Package-4AEC43C47D6DFEEF0C68C67CD0D82CB712910D99C8D539F8E2CF18F97E4B8F59",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -495,19 +558,40 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "4.54.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.Identity.Client%404.54.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.IO.Packaging",
- "SPDXID": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "name": "System.ValueTuple",
+ "SPDXID": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "downloadLocation": "NOASSERTION",
+ "filesAnalyzed": false,
+ "licenseConcluded": "NOASSERTION",
+ "licenseInfoFromFiles": [
+ "NOASSERTION"
+ ],
+ "licenseDeclared": "NOASSERTION",
+ "copyrightText": "NOASSERTION",
+ "versionInfo": "4.5.0",
+ "externalRefs": [
+ {
+ "referenceCategory": "PACKAGE-MANAGER",
+ "referenceType": "purl",
+ "referenceLocator": "pkg:nuget/System.ValueTuple%404.5.0"
+ }
+ ],
+ "supplier": "NOASSERTION"
+ },
+ {
+ "name": "System.ComponentModel.Composition",
+ "SPDXID": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -521,14 +605,14 @@
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.IO.Packaging%408.0.0"
+ "referenceLocator": "pkg:nuget/System.ComponentModel.Composition%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Newtonsoft.Json",
- "SPDXID": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
+ "name": "System.Drawing.Common",
+ "SPDXID": "SPDXRef-Package-A5B42B166F51056D849DB6264BA729C279719B482771CD17FFEFFD0ACE20AA71",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -537,19 +621,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "13.0.3",
+ "versionInfo": "8.0.3",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Newtonsoft.Json%4013.0.3"
+ "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.3"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.AspNet.WebApi.Core",
- "SPDXID": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
+ "name": "System.Configuration.ConfigurationManager",
+ "SPDXID": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -558,19 +642,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.2.7",
+ "versionInfo": "8.0.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.Core%405.2.7"
+ "referenceLocator": "pkg:nuget/System.Configuration.ConfigurationManager%408.0.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.TeamFoundationServer.Client",
- "SPDXID": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "name": "Microsoft.AspNet.WebApi.WebHost",
+ "SPDXID": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -579,19 +663,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "16.205.1",
+ "versionInfo": "5.2.7",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.TeamFoundationServer.Client%4016.205.1"
+ "referenceLocator": "pkg:nuget/Microsoft.AspNet.WebApi.WebHost%405.2.7"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Memory.Data",
- "SPDXID": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "name": "Microsoft.Bcl.AsyncInterfaces",
+ "SPDXID": "SPDXRef-Package-1B079B578C50036D5A0DC1B1E3E5A7F7B045B06EE48E5EE8C59B29861C0863FC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -600,19 +684,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.0.2",
+ "versionInfo": "1.1.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Memory.Data%401.0.2"
+ "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.0"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Model.Redist",
- "SPDXID": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "name": "Azure.Core",
+ "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -621,19 +705,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "1.35.0",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Model.Redist%402024.0.5"
+ "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
}
],
"supplier": "NOASSERTION"
},
{
"name": "PostSharp.Patterns.Common.Redist",
- "SPDXID": "SPDXRef-Package-BB7031E0779021EB63EFC1BB9ACF70E0B6FA3C65AA115E98C6C35D15DCA02339",
+ "SPDXID": "SPDXRef-Package-BEBD1E8CEC422BCF93B5D664FD68533DD7210FF2753C4392C82AA191E2D0C5AE",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -642,19 +726,19 @@
],
"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.Common.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.VisualStudio.Services.InteractiveClient",
- "SPDXID": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "name": "PostSharp.Patterns.Aggregation.Redist",
+ "SPDXID": "SPDXRef-Package-E60C7AE37ABFF6097F9BC13C86711A4AD51EDF6D78324EEE397F927345250EFF",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -663,19 +747,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.InteractiveClient%4016.205.1"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Aggregation.Redist%402024.0.6"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Microsoft.IdentityModel.JsonWebTokens",
- "SPDXID": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "name": "Microsoft.VisualStudio.Services.InteractiveClient",
+ "SPDXID": "SPDXRef-Package-8425361196B240DBA621FD99DF72107E5EF7AD21887F5BF85084C6D81043C05D",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -684,19 +768,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.VisualStudio.Services.InteractiveClient%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Runtime.CompilerServices.Unsafe",
- "SPDXID": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
+ "name": "Microsoft.IdentityModel.JsonWebTokens",
+ "SPDXID": "SPDXRef-Package-BF26B2207107EFC0BA7C9457143425D48C35B9E4A5F642A1E9C13D0A672387B4",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -705,19 +789,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "6.0.0",
+ "versionInfo": "6.30.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Runtime.CompilerServices.Unsafe%406.0.0"
+ "referenceLocator": "pkg:nuget/Microsoft.IdentityModel.JsonWebTokens%406.30.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "PostSharp.Patterns.Threading",
- "SPDXID": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "name": "Microsoft.Bcl.AsyncInterfaces",
+ "SPDXID": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -726,19 +810,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "2024.0.5",
+ "versionInfo": "1.1.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/PostSharp.Patterns.Threading%402024.0.5"
+ "referenceLocator": "pkg:nuget/Microsoft.Bcl.AsyncInterfaces%401.1.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Drawing.Common",
- "SPDXID": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
+ "name": "PostSharp.Patterns.Common",
+ "SPDXID": "SPDXRef-Package-E5B2BC1223432CD882AC040EAAF07A525784D06429CE1F62F5BA2E9D7525F3AA",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -747,12 +831,12 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.2",
+ "versionInfo": "2024.0.6",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Drawing.Common%408.0.2"
+ "referenceLocator": "pkg:nuget/PostSharp.Patterns.Common%402024.0.6"
}
],
"supplier": "NOASSERTION"
@@ -779,8 +863,8 @@
"supplier": "NOASSERTION"
},
{
- "name": "System.IdentityModel.Tokens.Jwt",
- "SPDXID": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "name": "Microsoft.TeamFoundation.DistributedTask.Common.Contracts",
+ "SPDXID": "SPDXRef-Package-5E8B61B595E583BBEF7ADCA095CBE2B5B173E786C455120EF6B9C37A13089A6E",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -789,19 +873,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "5.6.0",
+ "versionInfo": "19.225.1",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.IdentityModel.Tokens.Jwt%405.6.0"
+ "referenceLocator": "pkg:nuget/Microsoft.TeamFoundation.DistributedTask.Common.Contracts%4019.225.1"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "Azure.Core",
- "SPDXID": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "name": "System.Text.Encodings.Web",
+ "SPDXID": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -810,19 +894,19 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "1.35.0",
+ "versionInfo": "4.7.2",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/Azure.Core%401.35.0"
+ "referenceLocator": "pkg:nuget/System.Text.Encodings.Web%404.7.2"
}
],
"supplier": "NOASSERTION"
},
{
- "name": "System.Security.Cryptography.ProtectedData",
- "SPDXID": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "name": "Azure.AI.OpenAI",
+ "SPDXID": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
"downloadLocation": "NOASSERTION",
"filesAnalyzed": false,
"licenseConcluded": "NOASSERTION",
@@ -831,12 +915,12 @@
],
"licenseDeclared": "NOASSERTION",
"copyrightText": "NOASSERTION",
- "versionInfo": "8.0.0",
+ "versionInfo": "1.0.0-beta.9",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceType": "purl",
- "referenceLocator": "pkg:nuget/System.Security.Cryptography.ProtectedData%408.0.0"
+ "referenceLocator": "pkg:nuget/Azure.AI.OpenAI%401.0.0-beta.9"
}
],
"supplier": "NOASSERTION"
@@ -862,89 +946,104 @@
],
"externalDocumentRefs": [],
"relationships": [
+ {
+ "relationshipType": "DESCRIBES",
+ "relatedSpdxElement": "SPDXRef-RootPackage",
+ "spdxElementId": "SPDXRef-DOCUMENT"
+ },
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
+ "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
"spdxElementId": "SPDXRef-RootPackage"
},
{
- "relationshipType": "DESCRIBES",
- "relatedSpdxElement": "SPDXRef-RootPackage",
- "spdxElementId": "SPDXRef-DOCUMENT"
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-1B079B578C50036D5A0DC1B1E3E5A7F7B045B06EE48E5EE8C59B29861C0863FC",
+ "spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B8E4E4DDE38DC106E22595575016FB6B1C8A479C66A93D46B4BCDE90C26B9878",
+ "relatedSpdxElement": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
+ "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "relatedSpdxElement": "SPDXRef-Package-A5B42B166F51056D849DB6264BA729C279719B482771CD17FFEFFD0ACE20AA71",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-249A20920A82BFE2C4E061BD7382819892B079B1C4440131E87D62E33759FA42",
+ "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
+ "relatedSpdxElement": "SPDXRef-Package-BF26B2207107EFC0BA7C9457143425D48C35B9E4A5F642A1E9C13D0A672387B4",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B627A9A962CA4EC270A6BB33055B6D932D9140ED98F117C25A3ACCD02894A5DE",
+ "relatedSpdxElement": "SPDXRef-Package-8425361196B240DBA621FD99DF72107E5EF7AD21887F5BF85084C6D81043C05D",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-F8BA4E7EFF02C9D947FB09B3A9632CC70EA2CE2CD1678741703E172AC4D83620",
+ "relatedSpdxElement": "SPDXRef-Package-E60C7AE37ABFF6097F9BC13C86711A4AD51EDF6D78324EEE397F927345250EFF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FB8EF87A04ABBDDE238C1B9302C41D39A089FDC8A755C4F352B2784CD890726B",
+ "relatedSpdxElement": "SPDXRef-Package-BEBD1E8CEC422BCF93B5D664FD68533DD7210FF2753C4392C82AA191E2D0C5AE",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2BEE8B87483503D7A96090BFFDFDC0140B3D86F2CE2207EFD61E7BDF6903B08E",
+ "relatedSpdxElement": "SPDXRef-Package-70FEAFC69B7A98460F2609DDAADD1215D82E918EC337FDCB0E6CE6717C00A976",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-A678B24451905285685A5A13C2B91AB02B66F7A9B2470DF34BEEB6A856010350",
+ "relatedSpdxElement": "SPDXRef-Package-A51161C96823E35F18ECB01793B545733228CEB78738651BD5BF03B9683AE351",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
+ "relatedSpdxElement": "SPDXRef-Package-931589BD44AB626716D546809406FE4D919C164FF884EA04D57BA10E2A8D64EC",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DDF4BFE18445397B3B932FABBE666DB6312B84C2A9E5EBD0E7E5D1771ADD507B",
+ "relatedSpdxElement": "SPDXRef-Package-ED6E8FB997A6D78D08443EC95BD284BFE932248A440D142BCB8557A36DC4A5A2",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-E9BC86A4FA227FAC309ACDBB94C7EB26CC82F04FCE538A0C9FFF7F7D4E5BAA01",
+ "relatedSpdxElement": "SPDXRef-Package-FA5D8EFBD719F81F34B28843F66D653B3F33160B0FC1AF355E14B97A62F2A59E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
+ "relatedSpdxElement": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B3D5F30C6F4C897DA31933117BFB391A9177287CC31D26072129972E47E06996",
+ "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-C1475C5380732C85127A15B8BADF74D2619786E90578875B650082AE4497BC14",
+ "spdxElementId": "SPDXRef-RootPackage"
+ },
+ {
+ "relationshipType": "DEPENDS_ON",
+ "relatedSpdxElement": "SPDXRef-Package-4AEC43C47D6DFEEF0C68C67CD0D82CB712910D99C8D539F8E2CF18F97E4B8F59",
"spdxElementId": "SPDXRef-RootPackage"
},
{
@@ -954,117 +1053,122 @@
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-7586D09A8638B087A9EAF8CB69F57344F906C42E0170B08E6D77EAB745F30092",
+ "relatedSpdxElement": "SPDXRef-Package-69A986D6F543ED157CF60B09C3CDD7A4405DF633256C00FEFBC53DA1956B1EE5",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B6EB77607AF75F718E21D28F4BA0EE84239C8DE9830FF9719907EE090332AADF",
+ "relatedSpdxElement": "SPDXRef-Package-8709677B055DBEEE1AD21998424308E47C0022943DA35BC357D82421361E9D67",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
+ "relatedSpdxElement": "SPDXRef-Package-3F9BAB33E51D566FC5243580D7C6FB465D6CF56481C9A29E1FCB54758615112E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-D2E08EEF556864B28A2471FECD0E0FBB5DF20D32633B9D1A7CA4FC1A6C575EA3",
+ "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
+ "relatedSpdxElement": "SPDXRef-Package-1F6868692BA92B8833FB7BDD49335660B27070F01FE640B02ABF3CF85E9E917F",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-FFF37EB028C40ED3328C8F4D8D0B9DC47D473EB856E9351A10B10AC420CAF2C9",
+ "relatedSpdxElement": "SPDXRef-Package-F1A6940BF5D403F3E064202A7FC4F6D1AE1534716BF53B2F46B0DF5AA70197D2",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
+ "relatedSpdxElement": "SPDXRef-Package-D9DEFCAF5968755A03F930932A0DC5ACBB14D1A6B646B95FBC0EE49AB7B250D4",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-B886264C88915A93892AFBE3D28CD5B3C8B7990F0C6A47AD506184440C46436E",
+ "relatedSpdxElement": "SPDXRef-Package-681B78A232303686681BD818B0D190BE6C105857B1F5C087E2FC1952A264EA58",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-BA90151DC5DD12C2A079DA23F3B49197D9467EB191AAFF20DFB357E428ACF4C8",
+ "relatedSpdxElement": "SPDXRef-Package-836302A10D83B34AB15735A3BD20F9E5195E5C19F576DD54B2A803F042B4449F",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
+ "relatedSpdxElement": "SPDXRef-Package-D85926065BB4CE37A6FA6F50EAF742F233EE07208ECD20E72875B22A91F718D5",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-2D9FB638C8BBE3526B66E56E9B7C7A9977FB3A4A298A0B4BE68ACAEE7A19289E",
+ "relatedSpdxElement": "SPDXRef-Package-0036185CFC5D903DD9210D1FA4BAF6EACE18C961FBCA96B55969F2D0ADD1006E",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-8033FB551F0CD66BD67DD751665712C052473FE73C24DCD1C296AB4D1B0D133D",
+ "relatedSpdxElement": "SPDXRef-Package-8BB2C578F040FA268F509BC9BA79CE8818B061F7A729C3979D3EAE41FDE0C582",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-6F768A3D6F75AE15A7426542D3216030F0F1F25965756957B7581E80FF2926B4",
+ "relatedSpdxElement": "SPDXRef-Package-4995F8D031EF7590447F1F4B315A14815138D2B78CF9F7C8699A8AA5C02C70EB",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-75002646C70C1287C316932079BE508D4A50F36F911675E914E13226CF127724",
+ "relatedSpdxElement": "SPDXRef-Package-8BC3AC3EB64349AAF877392CAC4013F1DE0514391B577FC1130B68A54543CE1C",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-6B6117AB3417AA50C1DF8B47DB834F43608FA2A493BD063B0DCD0310BE1691FC",
+ "relatedSpdxElement": "SPDXRef-Package-22082FD72E8CF130874BE5C4C34DAF5C0760879E4935A27DAD871E64F0280929",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-ED5C898F1E7300DE0FEC9EB7CF43C5F47EAAD11CA05AEE8953D34EFF973D2506",
+ "relatedSpdxElement": "SPDXRef-Package-B5E9DFA3EF880DFD63E464878A4D9F62FD34E8760F0877C125CEF609A459E577",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-45F18602780C4D414694A3E1A8C6A21F6860CAA639E4A56E1C0498902B5457CC",
+ "relatedSpdxElement": "SPDXRef-Package-BA5D8D1B5043A468B09DDBF48DCFC7DDD44949EE05A23A14F02AE8AA5183745C",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-DD2896E653AD70576C69A19411C692E520AEBCBC5958462E3E6037C0AD205AA7",
+ "relatedSpdxElement": "SPDXRef-Package-01FBE39297615D5615DCAF2AB4E213D489A90F4CC6E7CAA4E1F22CC76BA02C6A",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-339E29D5C9B9909DA078FCA3111CCE1E808761E7C6117645CFD8628AF6A3AB09",
+ "relatedSpdxElement": "SPDXRef-Package-C686523A20CD43A3C5958A0FF4D9AA80EE32CC2280180C31BC3D7278129F7935",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-1B140F7FA3F784DD56CC7A8B4145E9AD58D8CDD4C249A0F27F2262E47C9B41AF",
+ "relatedSpdxElement": "SPDXRef-Package-862E9A22FAE549CD97CBE81F8E67DB96A1FAFA78EA6B24BFD39C34B067014678",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-0C8546CE2314CF899D167AFF76F9BD8A06486145BF8140335621323B26CE3211",
+ "relatedSpdxElement": "SPDXRef-Package-79635115AF84D923E985A49E76247A70F70FB8798FC292158F9B6D6B4E2A0336",
"spdxElementId": "SPDXRef-RootPackage"
},
{
"relationshipType": "DEPENDS_ON",
- "relatedSpdxElement": "SPDXRef-Package-96B5CDA69EC229F8890368C7FD907A10B449F813F071104E7F870121A128DE62",
+ "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/Y9tsEZrwWUepAio_pLjesA",
+ "documentNamespace": "https://github.com/simonec73/threatsmanager/Threats%20Manager%20Platform/2.0.0/k0o9Bl_VVkOuBnFe4VFdjw",
"creationInfo": {
- "created": "2024-03-31T09:55:42Z",
+ "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 e58d612fe08b18922e1239e260790d8a00e4d0e8..ae56dc68017eda9ca2fa182a80d4818b1e253e95 100644
GIT binary patch
literal 128
zcmW-Zi4DLY48(4v@`rJNg#AaTTUjDt3{wGFRaZ#{uC0b^8knuAuEGo*=K9THHH?Gt
cHd8sh<0@U~;Z(2}27FcU-{Pj@oGP(@0lmr+kN^Mx
literal 128
zcmW-Yi4lMx3IYVf8{Qy09TZ2X05sBxyVGq<>f
cZDdk;NgKV;INWu^D*wP8AZSfGnKfM34|L`ccmMzZ
From dc808f82899075ee1e9f411a8c3640d8b62f49ab Mon Sep 17 00:00:00 2001
From: Simone Curzi
Date: Thu, 4 Apr 2024 11:31:34 +0200
Subject: [PATCH 15/15] Aligned TMS sources to 2.1.5.
---
.../ExtensionsContainer.cs | 2 +-
...nager.AutoThreatGeneration.WinForms.csproj | 37 +--
.../app.config | 15 +
.../packages.config | 16 +-
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.DevOps.WinForms.csproj | 30 +-
.../packages.config | 18 +-
.../Actions/Merge.cs | 4 +-
.../Actions/SummaryExcelReport.cs | 244 ++++++++++-----
.../Dialogs/ImportTemplateDialog.cs | 44 +--
.../Dialogs/MergeDialog.Designer.cs | 284 ++++++++++--------
.../Dialogs/MergeDialog.cs | 170 +++++------
...DataFlowListPanel.ContextAwareExtension.cs | 7 +-
.../DataFlowListPanel.Designer.cs | 3 +
...ataStoreListPanel.ContextAwareExtension.cs | 7 +-
.../DataStoreListPanel.Designer.cs | 3 +
.../Panels/Diagram/AssociatedDiagramMarker.cs | 1 +
.../Diagram/AssociatedPanelItemMarker.cs | 1 +
.../Panels/Diagram/GraphDoc.cs | 215 +++++++++++++
.../Panels/Diagram/GraphEntity.cs | 35 ++-
.../Panels/Diagram/GraphGroup.cs | 126 +++-----
.../Panels/Diagram/GraphLink.cs | 9 +-
.../Panels/Diagram/GraphView.cs | 195 +++++++++---
.../Panels/Diagram/GraphView.resx | 123 ++++++++
.../ModelPanel.CustomRibbonExtension.cs | 4 +-
.../Panels/Diagram/ModelPanel.Links.cs | 2 +-
.../Panels/Diagram/ModelPanel.Palette.cs | 6 +-
.../Panels/Diagram/ModelPanel.Shapes.cs | 3 +-
.../Diagram/ModelPanel.ShowDiagramPanel.cs | 4 +
.../Panels/Diagram/WarningMarker.cs | 1 +
.../DiagramConfigurationManager.cs | 44 +++
.../DiagramConfigurationPanel.Designer.cs | 266 ++++++++++++----
.../DiagramConfigurationPanel.cs | 48 +++
...teractorListPanel.ContextAwareExtension.cs | 7 +-
.../ExternalInteractorListPanel.Designer.cs | 3 +
...tedListPanelFactory.MainRibbonExtension.cs | 2 +-
...TemplateListPanel.ContextAwareExtension.cs | 7 +-
.../ItemTemplateListPanel.Designer.cs | 3 +
...tigationListPanel.ContextAwareExtension.cs | 14 +-
.../KnownMitigationListPanel.Designer.cs | 5 +
...tigationListPanel.ContextAwareExtension.cs | 14 +-
.../MitigationListPanel.Designer.cs | 5 +
.../ProcessListPanel.ContextAwareExtension.cs | 8 +-
.../ProcessList/ProcessListPanel.Designer.cs | 3 +
...eatActorListPanel.ContextAwareExtension.cs | 7 +-
.../ThreatActorListPanel.Designer.cs | 3 +
...eatEventListPanel.ContextAwareExtension.cs | 42 +--
.../ThreatEventListPanel.Designer.cs | 13 +
.../ThreatEventList/ThreatEventListPanel.cs | 10 +
...reatTypeListPanel.ContextAwareExtension.cs | 15 +-
.../ThreatTypeListPanel.Designer.cs | 5 +
...BoundaryListPanel.ContextAwareExtension.cs | 7 +-
.../TrustBoundaryListPanel.Designer.cs | 3 +
...WeaknessListPanel.ContextAwareExtension.cs | 14 +-
.../WeaknessListPanel.Designer.cs | 5 +
...ordReportingPanel.CustomRibbonExtension.cs | 12 +-
.../ThreatsManager.Extensions.WinForms.csproj | 19 +-
.../ExtensionLibrary.cs | 2 +-
.../ExtensionsContainer.cs | 2 +-
.../ThreatsManager.MsTmt.WinForms.csproj | 32 +-
.../packages.config | 20 +-
.../ExtensionsContainer.cs | 2 +-
.../CalculatedSeverityInitializer.cs | 25 ++
.../CalculatedSeverityPostLoadProcessor.cs | 25 ++
...SeverityListPanel.CustomRibbonExtension.cs | 113 +------
.../Configuration/ConfigurationPanel.cs | 2 +-
.../QualityConfigurationManager.cs | 10 +-
...CalculatedSeverityPropertySchemaManager.cs | 36 +--
.../ThreatsManager.Quality.WinForms.csproj | 63 ++--
.../app.config | 23 ++
.../packages.config | 34 +--
.../Dialogs/ThreatTypeSelectionDialog.cs | 31 +-
.../ItemEditor.Controls.cs | 14 +-
.../ItemEditor.cs | 93 +++++-
.../MenuDefinition.cs | 8 +-
.../Properties/AssemblyInfo.cs | 6 +-
.../ThreatsManager.Utilities.WinForms.csproj | 32 +-
.../app.config | 8 +-
.../packages.config | 22 +-
Studio/ThreatsManager/App.config | 30 +-
.../Dialogs/CertificateSelectionDialog.cs | 7 +
Studio/ThreatsManager/MainForm.Files.cs | 250 +++++++--------
Studio/ThreatsManager/Portable.config | 28 +-
Studio/ThreatsManager/SolutionInfo.cs | 6 +-
Studio/ThreatsManager/ThreatsManager.csproj | 48 +--
Studio/ThreatsManager/packages.config | 32 +-
86 files changed, 2085 insertions(+), 1114 deletions(-)
create mode 100644 Studio/ThreatsManager.AutoThreatGeneration.WinForms/app.config
create mode 100644 Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.resx
create mode 100644 Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityInitializer.cs
create mode 100644 Studio/ThreatsManager.Quality.WinForms/Initializers/CalculatedSeverityPostLoadProcessor.cs
create mode 100644 Studio/ThreatsManager.Quality.WinForms/app.config
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 values = new List();
+ foreach (var threat in sorted)
{
- foreach (var te in tes)
+ values.Clear();
+ values.Add(threat.Key.Name);
+ var severity = GetTopSeverity(threat.Value);
+ values.Add(severity?.ToString() ?? string.Empty);
+ values.Add(threat.Key.Description);
+ values.Add(GetAffectedObjects(threat.Value));
+ if (existing && threat.Value.Any())
{
- if (dict == null)
- dict = new Dictionary>();
+ values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Existing) ?? string.Empty);
+ }
- if (!dict.TryGetValue(te.ThreatType, out var teList))
- {
- teList = new List();
- dict.Add(te.ThreatType, teList);
- }
+ if (approved && threat.Value.Any())
+ {
+ values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Approved) ?? string.Empty);
+ }
- teList.Add(te);
+ if (planned && threat.Value.Any())
+ {
+ values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Planned) ?? string.Empty);
}
+
+ if (implemented && threat.Value.Any())
+ {
+ values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Implemented) ??
+ string.Empty);
+ }
+
+ if (proposed && threat.Value.Any())
+ {
+ values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Proposed) ?? string.Empty);
+ }
+
+ var row = engine.AddRow(page, values.ToArray());
+ engine.ColorCell(page, row, 2, Color.FromKnownColor(severity.TextColor),
+ Color.FromKnownColor(severity.BackColor));
}
}
- private bool CreateReport([Required] string fileName, [NotNull] Dictionary> threats)
+ private bool AddProviderSheet([NotNull] ExcelReportEngine engine, [NotNull] IThreatModel model,
+ [NotNull] ISummarySheetProvider provider)
{
- var result = false;
+ bool result = false;
- using (var engine = new ExcelReportEngine())
+ var rows = provider.GetRows(model)?.ToArray();
+ if (CheckRows(rows))
{
- 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 values = new List();
- foreach (var threat in sorted)
- {
- values.Clear();
- values.Add(threat.Key.Name);
- var severity = GetTopSeverity(threat.Value);
- values.Add(severity?.ToString() ?? string.Empty);
- values.Add(threat.Key.Description);
- values.Add(GetAffectedObjects(threat.Value));
- if (existing && threat.Value.Any())
- {
- values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Existing) ?? string.Empty);
- }
+ result = true;
- if (approved && threat.Value.Any())
- {
- values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Approved) ?? string.Empty);
- }
+ var page = engine.AddPage(provider.Name);
+ bool first = true;
- if (planned && threat.Value.Any())
+ foreach (var row in rows)
+ {
+ if (first)
{
- values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Planned) ?? string.Empty);
+ engine.AddHeader(page, row.ToArray());
+ first = false;
}
-
- if (implemented && threat.Value.Any())
+ else
{
- values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Implemented) ??
- string.Empty);
+ engine.AddRow(page, row.ToArray());
}
+ }
+ }
- if (proposed && threat.Value.Any())
- {
- values.Add(ConcatenateMitigations(threat, values, MitigationStatus.Proposed) ?? string.Empty);
- }
+ return result;
+ }
+
+ private bool CheckRows(IEnumerable[] rows)
+ {
+ var result = false;
- var row = engine.AddRow(page, values.ToArray());
- engine.ColorCell(page, row, 2, Color.FromKnownColor(severity.TextColor),
- Color.FromKnownColor(severity.BackColor));
- }
+ if ((rows?.Count() ?? 0) > 1)
+ {
+ int count = 0;
+ result = true;
- try
+ foreach (var row in rows)
{
- engine.Save(fileName);
- result = true;
- }
- catch (System.IO.IOException e)
- {
- ShowWarning?.Invoke(e.Message);
+ if (count == 0)
+ count = row.Count();
+ else if (count != row.Count())
+ {
+ result = false;
+ break;
+ }
}
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Dialogs/ImportTemplateDialog.cs b/Studio/ThreatsManager.Extensions.WinForms/Dialogs/ImportTemplateDialog.cs
index e55a012e..121a5aa0 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Dialogs/ImportTemplateDialog.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Dialogs/ImportTemplateDialog.cs
@@ -7,7 +7,6 @@
using System.Windows.Forms;
using DevComponents.DotNetBar;
using PostSharp.Patterns.Contracts;
-using ThreatsManager.Engine.ObjectModel.ThreatsMitigations;
using ThreatsManager.Extensions.Properties;
using ThreatsManager.Interfaces;
using ThreatsManager.Interfaces.Extensions;
@@ -260,8 +259,11 @@ private void LoadTemplate([Required] string fileName)
private void _wizard_FinishButtonClick(object sender, System.ComponentModel.CancelEventArgs e)
{
- var definition = GetDuplicationDefinition();
- _model.Merge(_template, definition);
+ if (_template != null)
+ {
+ var definition = GetDuplicationDefinition();
+ _model.Merge(_template, definition);
+ }
DialogResult = DialogResult.OK;
Close();
@@ -300,7 +302,7 @@ private void AddThreatActors([NotNull] DuplicationDefinition definition, [NotNul
if (_fullyThreatActors.Checked)
{
definition.AllThreatActors = true;
- AddSchemas(schemas, _template.ThreatActors?.Select(x => x.Properties));
+ AddSchemas(schemas, _template?.ThreatActors?.Select(x => x.Properties));
}
else
{
@@ -318,7 +320,7 @@ private void AddStrengths([NotNull] DuplicationDefinition definition,
[NotNull] List strengths, [NotNull] List schemas)
{
definition.Strengths = strengths;
- AddSchemas(schemas, _template.Strengths?
+ AddSchemas(schemas, _template?.Strengths?
.Where(x => strengths?.Contains(x.Id) ?? false)
.Select(x => x.Properties));
}
@@ -328,7 +330,7 @@ private void AddSeverities([NotNull] DuplicationDefinition definition,
[NotNull] List severities, [NotNull] List schemas)
{
definition.Severities = severities;
- AddSchemas(schemas, _template.Severities?
+ AddSchemas(schemas, _template?.Severities?
.Where(x => severities?.Contains(x.Id) ?? false)
.Select(x => x.Properties));
}
@@ -339,10 +341,10 @@ private void AddThreatTypes([NotNull] DuplicationDefinition definition, [NotNull
if (_fullyThreatTypes.Checked)
{
definition.AllThreatTypes = true;
- AddMitigations(mitigations, _template.ThreatTypes);
- AddSeverities(severities, _template.ThreatTypes);
- AddStrengths(strengths, _template.ThreatTypes);
- AddSchemas(schemas, _template.ThreatTypes?.Select(x => x.Properties));
+ AddMitigations(mitigations, _template?.ThreatTypes);
+ AddSeverities(severities, _template?.ThreatTypes);
+ AddStrengths(strengths, _template?.ThreatTypes);
+ AddSchemas(schemas, _template?.ThreatTypes?.Select(x => x.Properties));
}
else
{
@@ -365,10 +367,10 @@ private void AddWeaknesses([NotNull] DuplicationDefinition definition, [NotNull]
if (_fullyWeaknesses.Checked)
{
definition.AllWeaknesses = true;
- AddMitigations(mitigations, _template.Weaknesses);
- AddSeverities(severities, _template.Weaknesses);
- AddStrengths(strengths, _template.Weaknesses);
- AddSchemas(schemas, _template.Weaknesses?.Select(x => x.Properties));
+ AddMitigations(mitigations, _template?.Weaknesses);
+ AddSeverities(severities, _template?.Weaknesses);
+ AddStrengths(strengths, _template?.Weaknesses);
+ AddSchemas(schemas, _template?.Weaknesses?.Select(x => x.Properties));
}
else
{
@@ -392,7 +394,7 @@ private void AddMitigations([NotNull] DuplicationDefinition definition,
if (_fullyMitigations.Checked)
{
definition.AllMitigations = true;
- AddSchemas(schemas, _template.Mitigations?.Select(x => x.Properties));
+ AddSchemas(schemas, _template?.Mitigations?.Select(x => x.Properties));
}
else
{
@@ -412,7 +414,7 @@ private void AddMitigations([NotNull] DuplicationDefinition definition,
}
definition.Mitigations = mitigationIds;
- AddSchemas(schemas, _template.Mitigations
+ AddSchemas(schemas, _template?.Mitigations
.Where(x => mitigationIds?.Contains(x.Id) ?? false)
.Select(x => x.Properties));
}
@@ -425,9 +427,9 @@ private void AddItemTemplates([NotNull] DuplicationDefinition definition, [NotNu
definition.AllEntityTemplates = true;
definition.AllFlowTemplates = true;
definition.AllTrustBoundaryTemplates = true;
- AddSchemas(schemas, _template.EntityTemplates?.Select(x => x.Properties));
- AddSchemas(schemas, _template.FlowTemplates?.Select(x => x.Properties));
- AddSchemas(schemas, _template.TrustBoundaryTemplates?.Select(x => x.Properties));
+ AddSchemas(schemas, _template?.EntityTemplates?.Select(x => x.Properties));
+ AddSchemas(schemas, _template?.FlowTemplates?.Select(x => x.Properties));
+ AddSchemas(schemas, _template?.TrustBoundaryTemplates?.Select(x => x.Properties));
}
else
{
@@ -459,7 +461,7 @@ private void AddPropertySchemas([NotNull] DuplicationDefinition definition, [Not
IEnumerable additional;
if (_fullySchemas.Checked)
{
- additional = _template.Schemas?.Where(x => !x.System).Select(x => x.Id).ToArray();
+ additional = _template?.Schemas?.Where(x => !x.System).Select(x => x.Id).ToArray();
}
else
{
@@ -597,7 +599,7 @@ private void AddSchemas([NotNull] List schemas, IEnumerable x.PropertyTypeId).ToArray();
if (sourceList?.Any() ?? false)
{
+ List toBeRemoved = null;
if (targetList?.Any() ?? false)
{
- // Merge of the two lists.
- var toBeRemoved = new List(targetList);
- foreach (var prop in sourceList)
- {
- var t = targetList.FirstOrDefault(x => x.PropertyTypeId == prop.PropertyTypeId);
- if (t != null)
- {
- ApplyProperty(prop, t);
- toBeRemoved.Remove(t);
- }
- else
- {
- AddProperty(target, prop);
- }
- }
+ toBeRemoved = new List(targetList);
+ }
- if (toBeRemoved.Any())
+ foreach (var prop in sourceList)
+ {
+ var sourcePropertyType = prop.PropertyType;
+ if (sourcePropertyType != null)
{
- foreach (var item in toBeRemoved)
+ var sourceSchema = _comparison.GetSchema(sourcePropertyType.SchemaId);
+ if (sourceSchema != null)
{
- target.RemoveProperty(item.PropertyTypeId);
+ var targetSchema = _model.GetSchema(sourceSchema.Name, sourceSchema.Namespace);
+ if (targetSchema != null)
+ {
+ var targetPropertyType = targetSchema.GetPropertyType(sourcePropertyType.Name);
+ if (targetPropertyType != null)
+ {
+ toBeRemoved?.Remove(targetPropertyType.Id);
+ var property = target.GetProperty(targetPropertyType);
+ if (property == null)
+ {
+ property = target.AddProperty(targetPropertyType, prop.StringValue);
+ }
+ else
+ {
+
+ property.StringValue = prop.StringValue;
+ }
+ }
+ else
+ {
+ targetPropertyType = sourcePropertyType.Clone(targetSchema);
+ target.AddProperty(targetPropertyType, prop.StringValue);
+ }
+ }
+ else
+ {
+ targetSchema = sourceSchema.Clone(_model);
+ var targetPropertyType = targetSchema.GetPropertyType(sourcePropertyType.Name);
+ target.AddProperty(targetPropertyType, prop.StringValue);
+ }
}
}
}
- else
+
+ if (toBeRemoved.Any())
{
- // All properties in sourceList must be added.
- foreach (var prop in sourceList)
+ foreach (var propTypeId in toBeRemoved)
{
- AddProperty(target, prop);
+ target.RemoveProperty(propTypeId);
}
}
}
else if (targetList?.Any() ?? false)
{
// All properties in targetList must be removed.
- foreach (var prop in targetList)
+ foreach (var propTypeId in targetList)
{
- target.RemoveProperty(prop.PropertyTypeId);
+ target.RemoveProperty(propTypeId);
}
}
}
- private void AddProperty(IPropertiesContainer target, IProperty prop)
- {
- var propertyType = _model.GetPropertyType(prop.PropertyTypeId);
- if (propertyType == null)
- {
- var schemaId = prop.PropertyType?.SchemaId;
- IPropertySchema targetSchema = null;
- if (schemaId.HasValue)
- {
- var sourceSchema = _comparison.GetSchema(schemaId.Value);
- targetSchema = _model.GetSchema(schemaId.Value);
- if (sourceSchema != null)
- {
- if (targetSchema != null)
- {
- ApplyPropertyTypesContainer(sourceSchema, targetSchema);
- }
- else
- {
- targetSchema = sourceSchema.Clone(_model);
- }
- }
- }
-
- if (targetSchema != null)
- {
- propertyType = prop.PropertyType?.Clone(targetSchema);
- }
- }
-
- if (propertyType != null)
- target.AddProperty(propertyType, prop.StringValue);
- }
-
- private void ApplyProperty([NotNull] IProperty source, [NotNull] IProperty target)
- {
- if (string.CompareOrdinal(source.StringValue, target.StringValue) != 0)
- target.StringValue = source.StringValue;
- if (source.ReadOnly != target.ReadOnly)
- target.ReadOnly = source.ReadOnly;
- }
-
private void ApplyThreatEventsContainer([NotNull] IThreatEventsContainer source,
[NotNull] IThreatEventsContainer target)
{
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.ContextAwareExtension.cs
index 9aea10c9..7444cc9a 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.ContextAwareExtension.cs
@@ -14,14 +14,15 @@ public partial class DataFlowListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.DataFlow;
public void SetContextAwareActions(IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.Designer.cs
index fb826562..a4106d90 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataFlowList/DataFlowListPanel.Designer.cs
@@ -58,6 +58,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.ContextAwareExtension.cs
index 3e3d3858..95093b21 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.ContextAwareExtension.cs
@@ -15,14 +15,15 @@ public partial class DataStoreListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.DataStore;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.Designer.cs
index 063937bd..94f6a0b0 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DataStoreList/DataStoreListPanel.Designer.cs
@@ -57,6 +57,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedDiagramMarker.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedDiagramMarker.cs
index 97d4ed01..4ed33b35 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedDiagramMarker.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedDiagramMarker.cs
@@ -26,6 +26,7 @@ private AssociatedDiagramMarker() {
Deletable = false;
Copyable = false;
Selectable = false;
+ AutoRescales = false;
Image = Resources.model_big;
MarkerStatusTrigger.MarkerStatusUpdated += MarkerStatusTriggerOnMarkerStatusUpdated;
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedPanelItemMarker.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedPanelItemMarker.cs
index 622958ac..65c18f68 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedPanelItemMarker.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/AssociatedPanelItemMarker.cs
@@ -25,6 +25,7 @@ private AssociatedPanelItemMarker() {
Deletable = false;
Copyable = false;
Selectable = false;
+ AutoRescales = false;
MarkerStatusTrigger.MarkerStatusUpdated += MarkerStatusTriggerOnMarkerStatusUpdated;
PanelItemListFormTrigger.PanelStatusUpdated += PanelItemListFormTrigger_ShowPanels;
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphDoc.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphDoc.cs
index 0f96eea2..18c86cbc 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphDoc.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphDoc.cs
@@ -1,6 +1,9 @@
using System;
+using System.Collections;
+using System.Collections.Generic;
using System.Drawing;
using System.IO;
+using System.Linq;
using Northwoods.Go;
namespace ThreatsManager.Extensions.Panels.Diagram
@@ -18,5 +21,217 @@ public GraphDoc()
LinksLayer.AllowSelect = true;
Layers.CreateNewLayerBefore(Layers.Default).Identifier = "bottom";
}
+
+ #region Public methods.
+ public IEnumerable GetGroups()
+ {
+ IEnumerable result = null;
+
+ var groups = this.OfType()?.ToArray();
+
+ if (groups?.Any() ?? false)
+ {
+ var list = new List();
+
+ foreach (var group in groups)
+ {
+ var children = GetChildren(group)?.ToArray();
+ if (children?.Any() ?? false)
+ list.AddRange(children);
+ list.Add(group);
+ }
+
+ if (list.Any())
+ result = list;
+ }
+
+ return result;
+ }
+
+ public GraphGroup GetGroup(Guid groupId)
+ {
+ GraphGroup result = null;
+
+ var groups = this.OfType()?.ToArray();
+
+ if (groups?.Any() ?? false)
+ {
+ result = groups
+ .FirstOrDefault(x => x.GroupShape?.AssociatedId == groupId);
+
+ if (result == null)
+ {
+ foreach (var group in groups)
+ {
+ result = RecursiveSearch(group, groupId);
+ if (result != null)
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ public IEnumerable GetEntities()
+ {
+ IEnumerable result = null;
+
+ List list = new List();
+
+ var entities = this.OfType()?.ToArray();
+ if (entities?.Any() ?? false)
+ {
+ list.AddRange(entities);
+ }
+
+ var groups = this.OfType()?.ToArray();
+
+ if (groups?.Any() ?? false)
+ {
+ foreach (var group in groups)
+ {
+ entities = GetEntities(group)?.ToArray();
+ if (entities?.Any() ?? false)
+ {
+ list.AddRange(entities);
+ }
+ }
+ }
+
+ if (list.Any())
+ result = list;
+
+ return result;
+ }
+
+ public GraphEntity GetEntity(Guid entityId)
+ {
+ GraphEntity result = this.OfType()?
+ .FirstOrDefault(x => (x.EntityShape?.AssociatedId ?? Guid.Empty) == entityId);
+
+ if (result == null)
+ {
+ var groups = this.OfType()?.ToArray();
+
+ if (groups?.Any() ?? false)
+ {
+ foreach (var group in groups)
+ {
+ result = RecursiveEntitySearch(group, entityId);
+ if (result != null)
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+ #endregion
+
+ #region Private auxiliary methods.
+ private IEnumerable GetChildren(GraphGroup group)
+ {
+ IEnumerable result = null;
+
+ var children = group.OfType()?.ToArray();
+ if (children?.Any() ?? false)
+ {
+ var list = new List();
+
+ foreach (var child in children)
+ {
+ var grandchildren = GetChildren(child)?.ToArray();
+ if (grandchildren?.Any() ?? false)
+ list.AddRange(grandchildren);
+ list.Add(child);
+ }
+
+ if (list.Any())
+ result = list;
+ }
+
+ return result;
+ }
+
+ private GraphGroup RecursiveSearch(GraphGroup group, Guid groupId)
+ {
+ GraphGroup result = null;
+
+ var children = group.OfType()?.ToArray();
+ if (children?.Any() ?? false)
+ {
+ result = children
+ .FirstOrDefault(x => x.GroupShape?.AssociatedId == groupId);
+
+ if (result == null)
+ {
+ foreach (var child in children)
+ {
+ result = RecursiveSearch(child, groupId);
+ if (result != null)
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ private IEnumerable GetEntities(GraphGroup group)
+ {
+ IEnumerable result = null;
+
+ List list = new List();
+
+ var entities = group.OfType()?.ToArray();
+ if (entities?.Any() ?? false)
+ {
+ list.AddRange(entities);
+ }
+
+ var groups = group.OfType()?.ToArray();
+
+ if (groups?.Any() ?? false)
+ {
+ foreach (var child in groups)
+ {
+ entities = GetEntities(child)?.ToArray();
+ if (entities?.Any() ?? false)
+ {
+ list.AddRange(entities);
+ }
+ }
+ }
+
+ if (list.Any())
+ result = list;
+
+ return result;
+ }
+
+ private GraphEntity RecursiveEntitySearch(GraphGroup group, Guid entityId)
+ {
+ GraphEntity result = group.OfType()?
+ .FirstOrDefault(x => (x.EntityShape?.AssociatedId ?? Guid.Empty) == entityId);
+
+ if (result == null)
+ {
+ var children = group.OfType()?.ToArray();
+
+ if (children?.Any() ?? false)
+ {
+ foreach (var child in children)
+ {
+ result = RecursiveEntitySearch(child, entityId);
+ if (result != null)
+ break;
+ }
+ }
+ }
+
+ return result;
+ }
+ #endregion
}
}
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphEntity.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphEntity.cs
index e1661fe4..cff8b0a6 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphEntity.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphEntity.cs
@@ -58,7 +58,8 @@ public void Dispose()
#region Initialization.
public GraphEntity([NotNull] IEntityShape shape,
[StrictlyPositive] float dpiFactor, [Range(32, 256)] int iconSize,
- [Range(8, 248)] int iconCenterSize, ImageSize sourceSize, [Range(8, 128)] int markerSize) : base()
+ [Range(8, 248)] int iconCenterSize, ImageSize sourceSize, [Range(8, 128)] int markerSize,
+ [Range(100, 400)] int wrapWidth) : base()
{
_shape = shape;
var identity = shape.Identity;
@@ -75,8 +76,12 @@ public GraphEntity([NotNull] IEntityShape shape,
//OutPort.IsValidDuplicateLinks = false;
Icon.Resizable = false;
+ Icon.AutoRescales = false;
Reshapable = false;
Copyable = false;
+ Resizable = false;
+ Label.Wrapping = true;
+ Label.WrappingWidth = wrapWidth;
_panelItemMarker = new AssociatedPanelItemMarker(entity);
_panelItemMarker.PanelItemClicked += OnPanelItemClicked;
@@ -283,20 +288,20 @@ protected override void OnObservedChanged(GoObject observed, int subhint, int ol
}
}
- if (observed.Equals(this) && subhint == ChangedBounds)
- {
- float centerX = newRect.X + (newRect.Width / 2f);
- float centerY = newRect.Y + (newRect.Height / 2f);
-
- if (centerX != _shape.Position.X || centerY != _shape.Position.Y)
- {
- using (var scope = UndoRedoManager.OpenScope("Reposition Entity"))
- {
- _shape.Position = new PointF(centerX, centerY);
- scope?.Complete();
- }
- }
- }
+ //if (observed.Equals(this) && subhint == ChangedBounds)
+ //{
+ // float centerX = newRect.X + (newRect.Width / 2f);
+ // float centerY = newRect.Y + (newRect.Height / 2f);
+
+ // if (centerX != _shape.Position.X || centerY != _shape.Position.Y)
+ // {
+ // using (var scope = UndoRedoManager.OpenScope("Reposition Entity"))
+ // {
+ // _shape.Position = new PointF(centerX, centerY);
+ // scope?.Complete();
+ // }
+ // }
+ //}
}
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphGroup.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphGroup.cs
index f60fba78..22adaa6d 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphGroup.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphGroup.cs
@@ -100,7 +100,8 @@ public GraphGroup([NotNull] IGroupShape shape, [StrictlyPositive] float dpiFacto
Resizable = true;
Copyable = false;
Initializing = false;
- Visible = true;
+ Visible = true;
+ AutoRescales = false;
//LayoutChildren(_border);
UpdateParameters(markerSize, dpiFactor);
@@ -204,19 +205,30 @@ protected override void OnObservedChanged(GoObject observed, int subhint, int ol
}
}
- public override void DoMove(GoView view, PointF origLoc, PointF newLoc)
- {
- base.DoMove(view, origLoc, newLoc);
+ //public override void DoMove(GoView view, PointF origLoc, PointF newLoc)
+ //{
+ // base.DoMove(view, origLoc, newLoc);
+
+ // if (!UndoRedoManager.IsUndoing && !UndoRedoManager.IsRedoing)
+ // {
+ // using (var scope = UndoRedoManager.OpenScope("Move Group"))
+ // {
+ // _shape.Position = new PointF(newLoc.X, newLoc.Y);
+
+ // var children = this.OfType().ToArray();
+ // if (children?.Any() ?? false)
+ // {
+ // foreach (var child in children)
+ // {
+ // child.DoMove(view, origLoc, newLoc);
+ // }
+ // }
+
+ // scope?.Complete();
+ // }
+ // }
+ //}
- if (!UndoRedoManager.IsUndoing && !UndoRedoManager.IsRedoing)
- {
- using (var scope = UndoRedoManager.OpenScope("Move Group"))
- {
- _shape.Position = new PointF(newLoc.X, newLoc.Y);
- scope?.Complete();
- }
- }
- }
public override void OnGotSelection(GoSelection sel)
{
@@ -340,26 +352,34 @@ public override void LayoutChildren(GoObject childchanged)
}
else if (!AllowDragInOut)
{
- // compute the minimum rectangle needed to enclose the children except for the Border
- RectangleF rect = ComputeBorder();
- if (rect != RectangleF.Empty)
+ LayoutChildren();
+ }
+ }
+
+ public void LayoutChildren()
+ {
+ GoObject border = Border;
+ GoObject label = Label;
+
+ // compute the minimum rectangle needed to enclose the children except for the Border
+ RectangleF rect = ComputeBorder();
+ if (rect != RectangleF.Empty)
+ {
+ using (var scope = UndoRedoManager.OpenScope("Force Layout Group Child"))
{
- using (var scope = UndoRedoManager.OpenScope("Layout Group Children"))
+ // but don't have the box shrink to minimum size continuously
+ rect = RectangleF.Union(rect, border.Bounds);
+ border.Bounds = rect;
+ _shape.Size = new SizeF(border.Bounds.Width, border.Bounds.Height);
+ var location = Location;
+ _shape.Position = new PointF(location.X, location.Y);
+
+ if (label != null)
{
- // but don't have the box shrink to minimum size continuously
- rect = RectangleF.Union(rect, border.Bounds);
- border.Bounds = rect;
- _shape.Size = new SizeF(border.Bounds.Width, border.Bounds.Height);
- var location = Location;
- _shape.Position = new PointF(location.X, location.Y);
-
- if (label != null)
- {
- Label.SetSpotLocation(BottomLeft, new PointF(rect.X, rect.Y - 2));
- }
-
- scope?.Complete();
+ Label.SetSpotLocation(BottomLeft, new PointF(rect.X, rect.Y - 2));
}
+
+ scope?.Complete();
}
}
}
@@ -401,25 +421,6 @@ public override bool OnSelectionDropped(GoObjectEventArgs evt, GoView view)
// add all selected objects to this BoxArea
view.Selection.AddRange(AddCollection(view.Selection, false));
- // update the border to include all selected objects in case the selection crosses the border
- GoObject border = Border;
- if (border != null)
- {
- RectangleF rect = ComputeBorder();
- if (rect != RectangleF.Empty)
- {
- using (var scope = UndoRedoManager.OpenScope("Group On Selection Dropped"))
- {
- // but don't have the box shrink to minimum size continuously
- rect = RectangleF.Union(rect, border.Bounds);
- border.Bounds = rect;
- _shape.Size = new SizeF(border.Bounds.Width, border.Bounds.Height);
- var location = Location;
- _shape.Position = new PointF(location.X, location.Y);
- scope?.Complete();
- }
- }
- }
return true;
}
else
@@ -427,33 +428,6 @@ public override bool OnSelectionDropped(GoObjectEventArgs evt, GoView view)
return false;
}
}
-
- //Allow the user to interactively resize the border;
- // this ensures that the border surrounds all of the children.
- //public override void DoResize(GoView view, RectangleF origRect, PointF newPoint, int whichHandle,
- // GoInputState evttype, SizeF min, SizeF max)
- //{
- // // compute rectangle for normal resizing
- // RectangleF newRect = ComputeResize(origRect, newPoint, whichHandle, min, max, true);
- // // account for the height of the Label
- // newRect.Y += Label.Height + 2;
- // newRect.Height -= Label.Height + 2;
- // // compute rectangle required by the child objects
- // RectangleF minRect = ComputeBorder();
- // if (minRect != RectangleF.Empty)
- // {
- // newRect = RectangleF.Union(newRect, minRect);
- // }
- // using (var scope = UndoRedoManager.OpenScope("Group DoResize"))
- // {
- // // update the bounding rect of the Border
- // Border.Bounds = newRect;
- // _shape.Size = new SizeF(newRect.Size.Width, newRect.Size.Height);
- // var location = Location;
- // _shape.Position = new PointF(location.X, location.Y);
- // scope?.Complete();
- // }
- //}
#endregion
#region Context menu.
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphLink.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphLink.cs
index 1945d119..d84bd9d8 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphLink.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphLink.cs
@@ -46,11 +46,13 @@ public GraphLink()
Selectable = true;
DragsNode = false;
Relinkable = false;
+ AutoRescales = false;
PenWidth = 1.5f * Dpi.Factor.Width;
var textControl = new GraphText(this);
textControl.Movable = false;
textControl.Copyable = true;
+ textControl.Wrapping = true;
textControl.AddObserver(this);
MidLabel = textControl;
@@ -71,8 +73,13 @@ public GraphLink()
AddObserver(this);
}
- public GraphLink([NotNull] ILink link, [StrictlyPositive] float dpiFactor, [Range(8, 128)] int markerSize) : this()
+ public GraphLink([NotNull] ILink link, [StrictlyPositive] float dpiFactor, [Range(8, 128)] int markerSize,
+ [Range(100, 400)] int wrapWidth) : this()
{
+ if (MidLabel is GraphText text)
+ {
+ text.WrappingWidth = wrapWidth;
+ }
AssignLink(link, markerSize, dpiFactor);
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.cs
index 56cc8ea6..952c03fd 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.cs
@@ -10,11 +10,11 @@
using Northwoods.Go;
using Northwoods.Go.Layout;
using PostSharp.Patterns.Contracts;
-using PostSharp.Patterns.Recording;
using ThreatsManager.Extensions.Schemas;
using ThreatsManager.Interfaces;
using ThreatsManager.Interfaces.Extensions.Actions;
using ThreatsManager.Interfaces.ObjectModel.Diagrams;
+using ThreatsManager.Interfaces.ObjectModel.Entities;
using ThreatsManager.Interfaces.ObjectModel.Properties;
using ThreatsManager.Utilities;
@@ -46,6 +46,8 @@ private void GraphView_ObjectResized(object sender, GoSelectionEventArgs e)
{
using (var scope = UndoRedoManager.OpenScope("Resize Group"))
{
+ group.LayoutChildren();
+
SaveGroupData(group);
var groups = group.OfType().ToArray();
@@ -104,11 +106,22 @@ private static void SaveGroupData([NotNull] GraphGroup group)
var location = group.Location;
float centerX = location.X;
- float centerY = location.Y + group.Label.Height / 2f;
+ float centerY = location.Y + group.Label.Height / 2f - 8.0f * Dpi.Factor.Height;
if (centerX != shape.Position.X || centerY != shape.Position.Y)
{
- shape.Position = new PointF(centerX, centerY - 8.0f * Dpi.Factor.Height);
+ shape.Position = new PointF(centerX, centerY);
+ }
+ }
+
+ private static void SaveEntityData([NotNull] GraphEntity entity)
+ {
+ var shape = entity.EntityShape;
+ var location = entity.Location;
+
+ if (location.X != shape.Position.X || location.Y != shape.Position.Y)
+ {
+ shape.Position = new PointF(location.X, location.Y);
}
}
@@ -262,67 +275,116 @@ protected override void OnExternalObjectsDropped(GoInputEventArgs evt)
if (Selection.Primary is GoSimpleNode simpleNode)
{
- var parent = GetParentGroup(point);
- simpleNode.Remove();
- switch (simpleNode.Text)
+ using (var scope = UndoRedoManager.OpenScope("Dropped a new standard item to the Diagram"))
{
- case "ExternalInteractor":
- CreateExternalInteractor?.Invoke(point, parent);
- break;
- case "Process":
- CreateProcess?.Invoke(point, parent);
- break;
- case "DataStore":
- CreateDataStore?.Invoke(point, parent);
- break;
- case "TrustBoundary":
- CreateTrustBoundary?.Invoke(point, parent);
- break;
- default:
- if (Guid.TryParse(simpleNode.Text, out Guid id))
- {
- CreateIdentity?.Invoke(id, point, parent);
- }
- break;
+ var parent = GetParentGroup(point);
+ simpleNode.Remove();
+ switch (simpleNode.Text)
+ {
+ case "ExternalInteractor":
+ CreateExternalInteractor?.Invoke(point, parent);
+ break;
+ case "Process":
+ CreateProcess?.Invoke(point, parent);
+ break;
+ case "DataStore":
+ CreateDataStore?.Invoke(point, parent);
+ break;
+ case "TrustBoundary":
+ CreateTrustBoundary?.Invoke(point, parent);
+ break;
+ default:
+ if (Guid.TryParse(simpleNode.Text, out Guid id))
+ {
+ CreateIdentity?.Invoke(id, point, parent);
+
+ var entity = _diagram.Model?.GetEntity(id);
+ IGroup p = null;
+ if (entity != null)
+ {
+ p = entity.Parent;
+ }
+ else
+ {
+ var group = _diagram.Model?.GetGroup(id);
+ if (group is IGroupElement element)
+ {
+ p = element.Parent;
+ }
+ }
+
+ if (p != null)
+ {
+ parent = Doc.GetGroup(p.Id);
+ }
+ }
+ break;
+ }
+
+ RecurseLayoutParent(parent);
+
+ scope?.Complete();
}
}
else if (Selection.Primary is GraphPaletteItemNode paletteItemNode)
{
- var item = paletteItemNode.Item;
- paletteItemNode.Remove();
-
- var nodes = Document.PickObjects(point, false, null, 100);
- foreach (var node in nodes)
+ using (var scope = UndoRedoManager.OpenScope("Added an advanced item to the Diagram"))
{
- var parent = node?.ParentNode;
- if (parent is GraphEntity gnode)
+ var item = paletteItemNode.Item;
+ paletteItemNode.Remove();
+
+ var nodes = Document.PickObjects(point, false, null, 100);
+ foreach (var node in nodes)
{
- var entity = _diagram.Model?.GetEntity(gnode.EntityShape.AssociatedId);
- if (entity != null)
+ var parentNode = node?.ParentNode;
+ if (parentNode is GraphEntity gnode)
{
- item.Apply(entity);
- gnode.ShowThreats(this);
+ var entity = _diagram.Model?.GetEntity(gnode.EntityShape.AssociatedId);
+ if (entity != null)
+ {
+ item.Apply(entity);
+ gnode.ShowThreats(this);
+ }
}
- }
- else if (parent is GraphLink glink)
- {
- var dataFlow = _diagram.Model?.GetDataFlow(glink.Link.AssociatedId);
- if (dataFlow != null)
+ else if (parentNode is GraphLink glink)
{
- item.Apply(dataFlow);
+ var dataFlow = _diagram.Model?.GetDataFlow(glink.Link.AssociatedId);
+ if (dataFlow != null)
+ {
+ item.Apply(dataFlow);
- glink.ShowThreats(this, point);
+ glink.ShowThreats(this, point);
+ }
}
- }
- else if (parent is GraphGroup ggroup)
- {
- var group = _diagram.Model?.GetGroup(ggroup.GroupShape.AssociatedId);
- if (group != null)
+ else if (parentNode is GraphGroup ggroup)
{
- item.Apply(group);
- //ggroup.ShowThreats(this);
+ var group = _diagram.Model?.GetGroup(ggroup.GroupShape.AssociatedId);
+ if (group != null)
+ {
+ item.Apply(group);
+ //ggroup.ShowThreats(this);
+ ggroup.LayoutChildren();
+ }
}
}
+
+ scope?.Complete();
+ }
+ }
+ else
+ {
+ }
+ }
+
+ private void RecurseLayoutParent(GraphGroup group)
+ {
+ if (group != null)
+ {
+ group.LayoutChildren();
+
+ if (group.Parent is GraphGroup parent)
+ {
+ RecurseLayoutParent(parent);
}
}
}
@@ -341,6 +403,34 @@ protected override void DoInternalDrop(DragEventArgs evt)
{
base.DoInternalDrop(evt);
+ var groups = Doc.GetGroups();
+ if (groups?.Any() ?? false)
+ {
+ foreach (var group in groups)
+ {
+ group.LayoutChildren();
+ SaveGroupData(group);
+ }
+ }
+
+ var entities = Doc.GetEntities();
+ if (entities?.Any() ?? false)
+ {
+ foreach (var entity in entities)
+ {
+ SaveEntityData(entity);
+ }
+ }
+
+ //var groups = Doc.OfType();
+ //if (groups?.Any() ?? false)
+ //{
+ // foreach (var group in groups)
+ // {
+ // group.LayoutChildren();
+ // }
+ //}
+
_moveScope?.Complete();
_moveScope = null;
}
@@ -757,5 +847,12 @@ public Metafile ToMetafile()
return new Metafile(new MemoryStream(data, false));
}
#endregion
+
+ private void InitializeComponent()
+ {
+ this.SuspendLayout();
+ this.ResumeLayout(false);
+
+ }
}
}
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.resx b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.resx
new file mode 100644
index 00000000..e5858cc2
--- /dev/null
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/GraphView.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ False
+
+
\ No newline at end of file
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.CustomRibbonExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.CustomRibbonExtension.cs
index fdafce20..eda60e85 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.CustomRibbonExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.CustomRibbonExtension.cs
@@ -324,12 +324,12 @@ public void ExecuteCustomAction([NotNull] IActionDefinition action)
CheckRefresh();
break;
case "CreateTrustBoundary":
- var p4 = GetFreePoint(new PointF(hFloat, vFloat), new SizeF(600, 300), hFloat, vFloat);
+ var p4 = GetFreePoint(new PointF(hFloat, vFloat), new SizeF(400, 200), hFloat, vFloat);
using (var scope = UndoRedoManager.OpenScope("Create Trust Boundary"))
{
var trustBoundary = _diagram.Model?.AddGroup();
- AddShape(_diagram.AddShape(trustBoundary, p4, new SizeF(600, 300)));
+ AddShape(_diagram.AddShape(trustBoundary, p4, new SizeF(400, 200)));
scope?.Complete();
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Links.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Links.cs
index d28c5b0b..8275e1fc 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Links.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Links.cs
@@ -15,7 +15,7 @@ private void AddLink([NotNull] ILink link, float dpiFactor = 1.0f)
var to = GetEntity(link.DataFlow.Target);
if (from != null && to != null)
{
- var newLink = new GraphLink(link, dpiFactor, _markerSize)
+ var newLink = new GraphLink(link, dpiFactor, _markerSize, _flowWrapWidth)
{
Loading = true,
FromPort = from.Port,
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Palette.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Palette.cs
index e1a4abd8..6ed7f9e1 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Palette.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Palette.cs
@@ -174,7 +174,7 @@ private void GraphOnCreateTrustBoundary(PointF point, GraphGroup graphGroup)
{
if (graphGroup?.GroupShape?.Identity is IGroup group)
trustBoundary.SetParent(group);
- var node = AddShape(_diagram.AddShape(trustBoundary, point, new SizeF(600, 300)));
+ var node = AddShape(_diagram.AddShape(trustBoundary, point, new SizeF(400, 200)));
if (node != null)
{
_graph.Selection.Clear();
@@ -223,7 +223,7 @@ private void GraphOnCreateTemplate(Guid id, PointF point, GraphGroup graphGroup)
var trustBoundary = tbTemplate.CreateTrustBoundary(tbTemplate.Name);
if (graphGroup?.GroupShape?.Identity is IGroup group)
trustBoundary.SetParent(group);
- var node = AddShape(_diagram.AddShape(trustBoundary, point, new SizeF(600, 300)));
+ var node = AddShape(_diagram.AddShape(trustBoundary, point, new SizeF(400, 200)));
if (node != null)
{
_graph.Selection.Clear();
@@ -395,7 +395,7 @@ private void RecurseGroupCreation([NotNull] IGroup group, PointF point, [NotNull
RecurseExistingGroups(trustBoundary.Parent, parentGroup, groups);
}
- var shape = _diagram.AddShape(trustBoundary, point, new SizeF(600, 300));
+ var shape = _diagram.AddShape(trustBoundary, point, new SizeF(400, 200));
if (shape != null && AddShape(shape) is GraphGroup currentGroup)
groups.Push(currentGroup);
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Shapes.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Shapes.cs
index 0cbf5da4..c9f5ef41 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Shapes.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.Shapes.cs
@@ -71,7 +71,8 @@ private GoNode AddShape([NotNull] IShape shape, float dpiFactor = 1.0f)
if (shape is IEntityShape entityShape)
{
- var node = new GraphEntity(entityShape, dpiFactor, _iconSize, _iconCenterSize, _imageSize, _markerSize);
+ var node = new GraphEntity(entityShape, dpiFactor, _iconSize,
+ _iconCenterSize, _imageSize, _markerSize, _entityWrapWidth);
if (_actions != null)
node.SetContextAwareActions(_actions);
node.SelectedShape += OnSelectedShape;
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.ShowDiagramPanel.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.ShowDiagramPanel.cs
index 238d109b..cc07cee2 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.ShowDiagramPanel.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/ModelPanel.ShowDiagramPanel.cs
@@ -19,6 +19,8 @@ public partial class ModelPanel
private int _iconCenterSize;
private int _markerSize;
private int _zoomFactor;
+ private int _entityWrapWidth;
+ private int _flowWrapWidth;
private ImageSize _imageSize;
public Form PanelContainer { get; set; }
@@ -65,6 +67,8 @@ internal void SetDiagram(float dpiFactor)
_iconCenterSize = configuration.DiagramIconCenterSize;
_markerSize = configuration.DiagramMarkerSize;
_zoomFactor = configuration.DiagramZoomFactor;
+ _entityWrapWidth = configuration.EntityWrappingWidth;
+ _flowWrapWidth = configuration.FlowWrappingWidth;
switch (_iconSize)
{
case 32:
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/WarningMarker.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/WarningMarker.cs
index 1c9efbc5..3cf78b6a 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/WarningMarker.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Diagram/WarningMarker.cs
@@ -13,6 +13,7 @@ public WarningMarker() {
Deletable = false;
Copyable = false;
Selectable = false;
+ AutoRescales = false;
Image = Properties.Resources.report_problem_big;
Size = new SizeF(32.0f, 32.0f);
Visible = false;
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationManager.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationManager.cs
index 34270951..7e6f887c 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationManager.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationManager.cs
@@ -210,5 +210,49 @@ public string MarkerExtension
_dirty = true;
}
}
+
+ public int FlowWrappingWidth
+ {
+ get
+ {
+ int result;
+
+ var value = _configuration?.GlobalGet("fWrap");
+ if ((value ?? 0) == 0)
+ result = 150;
+ else
+ result = value.Value;
+
+ return result;
+ }
+
+ set
+ {
+ _configuration?.GlobalSet("fWrap", value);
+ _dirty = true;
+ }
+ }
+
+ public int EntityWrappingWidth
+ {
+ get
+ {
+ int result;
+
+ var value = _configuration?.GlobalGet("eWrap");
+ if ((value ?? 0) == 0)
+ result = 150;
+ else
+ result = value.Value;
+
+ return result;
+ }
+
+ set
+ {
+ _configuration?.GlobalSet("eWrap", value);
+ _dirty = true;
+ }
+ }
}
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.Designer.cs
index a2c3b6da..02a2548d 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.Designer.cs
@@ -60,6 +60,14 @@ private void InitializeComponent()
this.layoutControlItem17 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
this.layoutControlItem9 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
this._tooltip = new System.Windows.Forms.ToolTip(this.components);
+ this._entityWrap = new System.Windows.Forms.TrackBar();
+ this.layoutControlItem2 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
+ this._entityWrapText = new System.Windows.Forms.Label();
+ this.layoutControlItem4 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
+ this._flowWrap = new System.Windows.Forms.TrackBar();
+ this.layoutControlItem8 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
+ this._flowWrapText = new System.Windows.Forms.Label();
+ this.layoutControlItem18 = new DevComponents.DotNetBar.Layout.LayoutControlItem();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this._vSpacing)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this._hSpacing)).BeginInit();
@@ -67,11 +75,17 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)(this._markerSize)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this._iconCenterSize)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this._iconSize)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this._entityWrap)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this._flowWrap)).BeginInit();
this.SuspendLayout();
//
// layoutControl1
//
this.layoutControl1.BackColor = System.Drawing.Color.White;
+ this.layoutControl1.Controls.Add(this._flowWrapText);
+ this.layoutControl1.Controls.Add(this._flowWrap);
+ this.layoutControl1.Controls.Add(this._entityWrapText);
+ this.layoutControl1.Controls.Add(this._entityWrap);
this.layoutControl1.Controls.Add(this._marker);
this.layoutControl1.Controls.Add(this._vSpacingText);
this.layoutControl1.Controls.Add(this._hSpacingText);
@@ -88,6 +102,7 @@ private void InitializeComponent()
this.layoutControl1.Controls.Add(this._iconSize);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(0, 0);
+ this.layoutControl1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.layoutControl1.Name = "layoutControl1";
//
//
@@ -106,49 +121,53 @@ private void InitializeComponent()
this.layoutControlItem16,
this.layoutControlItem15,
this.layoutControlItem17,
+ this.layoutControlItem2,
+ this.layoutControlItem4,
+ this.layoutControlItem8,
+ this.layoutControlItem18,
this.layoutControlItem9});
- this.layoutControl1.Size = new System.Drawing.Size(683, 466);
+ this.layoutControl1.Size = new System.Drawing.Size(911, 574);
this.layoutControl1.TabIndex = 0;
//
// _marker
//
this._marker.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this._marker.FormattingEnabled = true;
- this._marker.Location = new System.Drawing.Point(123, 110);
+ this._marker.Location = new System.Drawing.Point(145, 124);
this._marker.Margin = new System.Windows.Forms.Padding(0);
this._marker.Name = "_marker";
- this._marker.Size = new System.Drawing.Size(556, 21);
+ this._marker.Size = new System.Drawing.Size(761, 24);
this._marker.TabIndex = 4;
this._marker.SelectedIndexChanged += new System.EventHandler(this._marker_SelectedIndexChanged);
//
// _vSpacingText
//
this._vSpacingText.AutoSize = true;
- this._vSpacingText.Location = new System.Drawing.Point(623, 298);
+ this._vSpacingText.Location = new System.Drawing.Point(831, 340);
this._vSpacingText.Margin = new System.Windows.Forms.Padding(0);
this._vSpacingText.Name = "_vSpacingText";
- this._vSpacingText.Size = new System.Drawing.Size(56, 45);
+ this._vSpacingText.Size = new System.Drawing.Size(75, 52);
this._vSpacingText.TabIndex = 12;
this._vSpacingText.Text = "50 pixels";
//
// _hSpacingText
//
this._hSpacingText.AutoSize = true;
- this._hSpacingText.Location = new System.Drawing.Point(623, 245);
+ this._hSpacingText.Location = new System.Drawing.Point(831, 280);
this._hSpacingText.Margin = new System.Windows.Forms.Padding(0);
this._hSpacingText.Name = "_hSpacingText";
- this._hSpacingText.Size = new System.Drawing.Size(56, 45);
+ this._hSpacingText.Size = new System.Drawing.Size(75, 52);
this._hSpacingText.TabIndex = 10;
this._hSpacingText.Text = "50 pixels";
//
// _vSpacing
//
- this._vSpacing.Location = new System.Drawing.Point(123, 298);
+ this._vSpacing.Location = new System.Drawing.Point(145, 340);
this._vSpacing.Margin = new System.Windows.Forms.Padding(0);
this._vSpacing.Maximum = 200;
this._vSpacing.Minimum = 10;
this._vSpacing.Name = "_vSpacing";
- this._vSpacing.Size = new System.Drawing.Size(492, 45);
+ this._vSpacing.Size = new System.Drawing.Size(676, 56);
this._vSpacing.TabIndex = 11;
this._vSpacing.TickFrequency = 10;
this._vSpacing.Value = 50;
@@ -156,12 +175,12 @@ private void InitializeComponent()
//
// _hSpacing
//
- this._hSpacing.Location = new System.Drawing.Point(123, 245);
+ this._hSpacing.Location = new System.Drawing.Point(145, 280);
this._hSpacing.Margin = new System.Windows.Forms.Padding(0);
this._hSpacing.Maximum = 200;
this._hSpacing.Minimum = 10;
this._hSpacing.Name = "_hSpacing";
- this._hSpacing.Size = new System.Drawing.Size(492, 45);
+ this._hSpacing.Size = new System.Drawing.Size(676, 56);
this._hSpacing.TabIndex = 9;
this._hSpacing.TickFrequency = 10;
this._hSpacing.Value = 50;
@@ -170,20 +189,20 @@ private void InitializeComponent()
// _defaultZoomText
//
this._defaultZoomText.AutoSize = true;
- this._defaultZoomText.Location = new System.Drawing.Point(623, 192);
+ this._defaultZoomText.Location = new System.Drawing.Point(831, 220);
this._defaultZoomText.Margin = new System.Windows.Forms.Padding(0);
this._defaultZoomText.Name = "_defaultZoomText";
- this._defaultZoomText.Size = new System.Drawing.Size(56, 45);
+ this._defaultZoomText.Size = new System.Drawing.Size(75, 52);
this._defaultZoomText.TabIndex = 8;
this._defaultZoomText.Text = "100%";
//
// _defaultZoom
//
- this._defaultZoom.Location = new System.Drawing.Point(123, 192);
+ this._defaultZoom.Location = new System.Drawing.Point(145, 220);
this._defaultZoom.Margin = new System.Windows.Forms.Padding(0);
this._defaultZoom.Minimum = 1;
this._defaultZoom.Name = "_defaultZoom";
- this._defaultZoom.Size = new System.Drawing.Size(492, 45);
+ this._defaultZoom.Size = new System.Drawing.Size(676, 56);
this._defaultZoom.TabIndex = 7;
this._defaultZoom.Value = 4;
this._defaultZoom.ValueChanged += new System.EventHandler(this._defaultZoom_ValueChanged);
@@ -191,21 +210,21 @@ private void InitializeComponent()
// _markerSizeText
//
this._markerSizeText.AutoSize = true;
- this._markerSizeText.Location = new System.Drawing.Point(623, 139);
+ this._markerSizeText.Location = new System.Drawing.Point(831, 160);
this._markerSizeText.Margin = new System.Windows.Forms.Padding(0);
this._markerSizeText.Name = "_markerSizeText";
- this._markerSizeText.Size = new System.Drawing.Size(56, 45);
+ this._markerSizeText.Size = new System.Drawing.Size(75, 52);
this._markerSizeText.TabIndex = 6;
this._markerSizeText.Text = "16 pixels";
//
// _markerSize
//
- this._markerSize.Location = new System.Drawing.Point(123, 139);
+ this._markerSize.Location = new System.Drawing.Point(145, 160);
this._markerSize.Margin = new System.Windows.Forms.Padding(0);
this._markerSize.Maximum = 16;
this._markerSize.Minimum = 8;
this._markerSize.Name = "_markerSize";
- this._markerSize.Size = new System.Drawing.Size(492, 45);
+ this._markerSize.Size = new System.Drawing.Size(676, 56);
this._markerSize.TabIndex = 5;
this._markerSize.Value = 16;
this._markerSize.ValueChanged += new System.EventHandler(this._markerSize_ValueChanged);
@@ -213,32 +232,32 @@ private void InitializeComponent()
// label2
//
this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(4, 351);
+ this.label2.Location = new System.Drawing.Point(5, 520);
this.label2.Margin = new System.Windows.Forms.Padding(0);
this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(675, 13);
- this.label2.TabIndex = 13;
+ this.label2.Size = new System.Drawing.Size(901, 18);
+ this.label2.TabIndex = 17;
this.label2.Text = "Please reopen all diagrams after changing those parameters. Already opened diagra" +
"ms will not receive the new configuration.";
//
// _iconCenterSizeText
//
this._iconCenterSizeText.AutoSize = true;
- this._iconCenterSizeText.Location = new System.Drawing.Point(623, 57);
+ this._iconCenterSizeText.Location = new System.Drawing.Point(831, 64);
this._iconCenterSizeText.Margin = new System.Windows.Forms.Padding(0);
this._iconCenterSizeText.Name = "_iconCenterSizeText";
- this._iconCenterSizeText.Size = new System.Drawing.Size(56, 45);
+ this._iconCenterSizeText.Size = new System.Drawing.Size(75, 52);
this._iconCenterSizeText.TabIndex = 3;
this._iconCenterSizeText.Text = "16 pixels";
//
// _iconCenterSize
//
- this._iconCenterSize.Location = new System.Drawing.Point(123, 57);
+ this._iconCenterSize.Location = new System.Drawing.Point(145, 64);
this._iconCenterSize.Margin = new System.Windows.Forms.Padding(0);
this._iconCenterSize.Maximum = 24;
this._iconCenterSize.Minimum = 8;
this._iconCenterSize.Name = "_iconCenterSize";
- this._iconCenterSize.Size = new System.Drawing.Size(492, 45);
+ this._iconCenterSize.Size = new System.Drawing.Size(676, 56);
this._iconCenterSize.TabIndex = 2;
this._iconCenterSize.Value = 16;
this._iconCenterSize.ValueChanged += new System.EventHandler(this._iconCenterSize_ValueChanged);
@@ -246,21 +265,21 @@ private void InitializeComponent()
// _iconSizeText
//
this._iconSizeText.AutoSize = true;
- this._iconSizeText.Location = new System.Drawing.Point(623, 4);
+ this._iconSizeText.Location = new System.Drawing.Point(831, 4);
this._iconSizeText.Margin = new System.Windows.Forms.Padding(0);
this._iconSizeText.Name = "_iconSizeText";
- this._iconSizeText.Size = new System.Drawing.Size(56, 45);
+ this._iconSizeText.Size = new System.Drawing.Size(75, 52);
this._iconSizeText.TabIndex = 1;
this._iconSizeText.Text = "32 pixels";
//
// _iconSize
//
- this._iconSize.Location = new System.Drawing.Point(123, 4);
+ this._iconSize.Location = new System.Drawing.Point(145, 4);
this._iconSize.Margin = new System.Windows.Forms.Padding(0);
this._iconSize.Maximum = 5;
this._iconSize.Minimum = 1;
this._iconSize.Name = "_iconSize";
- this._iconSize.Size = new System.Drawing.Size(492, 45);
+ this._iconSize.Size = new System.Drawing.Size(676, 56);
this._iconSize.TabIndex = 0;
this._iconSize.Value = 1;
this._iconSize.ValueChanged += new System.EventHandler(this._iconSize_ValueChanged);
@@ -268,9 +287,10 @@ private void InitializeComponent()
// layoutControlItem3
//
this.layoutControlItem3.Control = this._iconSize;
- this.layoutControlItem3.Height = 53;
- this.layoutControlItem3.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem3.Height = 60;
+ this.layoutControlItem3.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem3.Name = "layoutControlItem3";
+ this.layoutControlItem3.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem3.Text = "Icons size in diagrams";
this.layoutControlItem3.Tooltip = "The icons size determines how big are the icons in the diagrams.";
this.layoutControlItem3.Width = 99;
@@ -279,19 +299,21 @@ private void InitializeComponent()
// layoutControlItem5
//
this.layoutControlItem5.Control = this._iconSizeText;
- this.layoutControlItem5.Height = 21;
- this.layoutControlItem5.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem5.Height = 26;
+ this.layoutControlItem5.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem5.Name = "layoutControlItem5";
+ this.layoutControlItem5.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem5.Text = "Label:";
this.layoutControlItem5.TextVisible = false;
- this.layoutControlItem5.Width = 40;
+ this.layoutControlItem5.Width = 85;
//
// layoutControlItem6
//
this.layoutControlItem6.Control = this._iconCenterSize;
- this.layoutControlItem6.Height = 53;
- this.layoutControlItem6.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem6.Height = 60;
+ this.layoutControlItem6.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem6.Name = "layoutControlItem6";
+ this.layoutControlItem6.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem6.Text = "Icon center size";
this.layoutControlItem6.Tooltip = "This parameter determines how big is the central area used to draw the arrows.";
this.layoutControlItem6.Width = 99;
@@ -300,19 +322,21 @@ private void InitializeComponent()
// layoutControlItem7
//
this.layoutControlItem7.Control = this._iconCenterSizeText;
- this.layoutControlItem7.Height = 21;
- this.layoutControlItem7.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem7.Height = 26;
+ this.layoutControlItem7.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem7.Name = "layoutControlItem7";
+ this.layoutControlItem7.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem7.Text = "Label:";
this.layoutControlItem7.TextVisible = false;
- this.layoutControlItem7.Width = 43;
+ this.layoutControlItem7.Width = 85;
//
// layoutControlItem1
//
this.layoutControlItem1.Control = this._marker;
- this.layoutControlItem1.Height = 29;
- this.layoutControlItem1.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem1.Height = 36;
+ this.layoutControlItem1.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem1.Name = "layoutControlItem1";
+ this.layoutControlItem1.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem1.Text = "Marker";
this.layoutControlItem1.Width = 100;
this.layoutControlItem1.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
@@ -320,9 +344,10 @@ private void InitializeComponent()
// layoutControlItem10
//
this.layoutControlItem10.Control = this._markerSize;
- this.layoutControlItem10.Height = 53;
- this.layoutControlItem10.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem10.Height = 60;
+ this.layoutControlItem10.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem10.Name = "layoutControlItem10";
+ this.layoutControlItem10.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem10.Text = "Markers size";
this.layoutControlItem10.Tooltip = "Size of the markers in the Diagrams.";
this.layoutControlItem10.Width = 99;
@@ -331,19 +356,21 @@ private void InitializeComponent()
// layoutControlItem11
//
this.layoutControlItem11.Control = this._markerSizeText;
- this.layoutControlItem11.Height = 21;
- this.layoutControlItem11.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem11.Height = 26;
+ this.layoutControlItem11.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem11.Name = "layoutControlItem11";
+ this.layoutControlItem11.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem11.Text = "Label:";
this.layoutControlItem11.TextVisible = false;
- this.layoutControlItem11.Width = 43;
+ this.layoutControlItem11.Width = 85;
//
// layoutControlItem12
//
this.layoutControlItem12.Control = this._defaultZoom;
- this.layoutControlItem12.Height = 53;
- this.layoutControlItem12.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem12.Height = 60;
+ this.layoutControlItem12.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem12.Name = "layoutControlItem12";
+ this.layoutControlItem12.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem12.Text = "Default zoom";
this.layoutControlItem12.Width = 99;
this.layoutControlItem12.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
@@ -351,19 +378,21 @@ private void InitializeComponent()
// layoutControlItem13
//
this.layoutControlItem13.Control = this._defaultZoomText;
- this.layoutControlItem13.Height = 21;
- this.layoutControlItem13.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem13.Height = 26;
+ this.layoutControlItem13.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem13.Name = "layoutControlItem13";
+ this.layoutControlItem13.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem13.Text = "100%";
this.layoutControlItem13.TextVisible = false;
- this.layoutControlItem13.Width = 43;
+ this.layoutControlItem13.Width = 85;
//
// layoutControlItem14
//
this.layoutControlItem14.Control = this._hSpacing;
- this.layoutControlItem14.Height = 53;
- this.layoutControlItem14.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem14.Height = 60;
+ this.layoutControlItem14.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem14.Name = "layoutControlItem14";
+ this.layoutControlItem14.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem14.Text = "Horizontal spacing";
this.layoutControlItem14.Width = 99;
this.layoutControlItem14.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
@@ -371,19 +400,21 @@ private void InitializeComponent()
// layoutControlItem16
//
this.layoutControlItem16.Control = this._hSpacingText;
- this.layoutControlItem16.Height = 21;
- this.layoutControlItem16.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem16.Height = 26;
+ this.layoutControlItem16.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem16.Name = "layoutControlItem16";
+ this.layoutControlItem16.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem16.Text = "Label:";
this.layoutControlItem16.TextVisible = false;
- this.layoutControlItem16.Width = 30;
+ this.layoutControlItem16.Width = 85;
//
// layoutControlItem15
//
this.layoutControlItem15.Control = this._vSpacing;
- this.layoutControlItem15.Height = 53;
- this.layoutControlItem15.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem15.Height = 60;
+ this.layoutControlItem15.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem15.Name = "layoutControlItem15";
+ this.layoutControlItem15.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem15.Text = "Vertical spacing";
this.layoutControlItem15.Width = 99;
this.layoutControlItem15.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
@@ -391,31 +422,124 @@ private void InitializeComponent()
// layoutControlItem17
//
this.layoutControlItem17.Control = this._vSpacingText;
- this.layoutControlItem17.Height = 21;
- this.layoutControlItem17.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem17.Height = 26;
+ this.layoutControlItem17.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem17.Name = "layoutControlItem17";
+ this.layoutControlItem17.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem17.Text = "Label:";
this.layoutControlItem17.TextVisible = false;
- this.layoutControlItem17.Width = 43;
+ this.layoutControlItem17.Width = 85;
//
// layoutControlItem9
//
this.layoutControlItem9.Control = this.label2;
- this.layoutControlItem9.Height = 21;
- this.layoutControlItem9.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem9.Height = 26;
+ this.layoutControlItem9.MinSize = new System.Drawing.Size(85, 22);
this.layoutControlItem9.Name = "layoutControlItem9";
+ this.layoutControlItem9.Padding = new System.Windows.Forms.Padding(5, 4, 5, 4);
this.layoutControlItem9.Text = "Label:";
this.layoutControlItem9.TextVisible = false;
this.layoutControlItem9.Width = 101;
this.layoutControlItem9.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
//
+ // _entityWrap
+ //
+ this._entityWrap.LargeChange = 50;
+ this._entityWrap.Location = new System.Drawing.Point(144, 400);
+ this._entityWrap.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
+ this._entityWrap.Maximum = 400;
+ this._entityWrap.Minimum = 100;
+ this._entityWrap.Name = "_entityWrap";
+ this._entityWrap.Size = new System.Drawing.Size(678, 56);
+ this._entityWrap.SmallChange = 25;
+ this._entityWrap.TabIndex = 13;
+ this._entityWrap.TickFrequency = 50;
+ this._entityWrap.Value = 150;
+ this._entityWrap.ValueChanged += new System.EventHandler(this._entityWrap_ValueChanged);
+ //
+ // layoutControlItem2
+ //
+ this.layoutControlItem2.Control = this._entityWrap;
+ this.layoutControlItem2.Height = 60;
+ this.layoutControlItem2.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem2.Name = "layoutControlItem2";
+ this.layoutControlItem2.Text = "Entity wrap width";
+ this.layoutControlItem2.Width = 99;
+ this.layoutControlItem2.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
+ //
+ // _entityWrapText
+ //
+ this._entityWrapText.AutoSize = true;
+ this._entityWrapText.Location = new System.Drawing.Point(830, 400);
+ this._entityWrapText.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
+ this._entityWrapText.Name = "_entityWrapText";
+ this._entityWrapText.Size = new System.Drawing.Size(77, 52);
+ this._entityWrapText.TabIndex = 14;
+ this._entityWrapText.Text = "150 pixels";
+ //
+ // layoutControlItem4
+ //
+ this.layoutControlItem4.Control = this._entityWrapText;
+ this.layoutControlItem4.Height = 24;
+ this.layoutControlItem4.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem4.Name = "layoutControlItem4";
+ this.layoutControlItem4.Text = "Label:";
+ this.layoutControlItem4.TextVisible = false;
+ this.layoutControlItem4.Width = 85;
+ //
+ // _flowWrap
+ //
+ this._flowWrap.LargeChange = 50;
+ this._flowWrap.Location = new System.Drawing.Point(144, 460);
+ this._flowWrap.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
+ this._flowWrap.Maximum = 400;
+ this._flowWrap.Minimum = 100;
+ this._flowWrap.Name = "_flowWrap";
+ this._flowWrap.Size = new System.Drawing.Size(678, 56);
+ this._flowWrap.SmallChange = 25;
+ this._flowWrap.TabIndex = 15;
+ this._flowWrap.TickFrequency = 50;
+ this._flowWrap.Value = 150;
+ this._flowWrap.ValueChanged += new System.EventHandler(this._flowWrap_ValueChanged);
+ //
+ // layoutControlItem8
+ //
+ this.layoutControlItem8.Control = this._flowWrap;
+ this.layoutControlItem8.Height = 60;
+ this.layoutControlItem8.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem8.Name = "layoutControlItem8";
+ this.layoutControlItem8.Text = "Flow wrap width";
+ this.layoutControlItem8.Width = 99;
+ this.layoutControlItem8.WidthType = DevComponents.DotNetBar.Layout.eLayoutSizeType.Percent;
+ //
+ // _flowWrapText
+ //
+ this._flowWrapText.AutoSize = true;
+ this._flowWrapText.Location = new System.Drawing.Point(830, 460);
+ this._flowWrapText.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
+ this._flowWrapText.Name = "_flowWrapText";
+ this._flowWrapText.Size = new System.Drawing.Size(77, 52);
+ this._flowWrapText.TabIndex = 16;
+ this._flowWrapText.Text = "150 pixels";
+ //
+ // layoutControlItem18
+ //
+ this.layoutControlItem18.Control = this._flowWrapText;
+ this.layoutControlItem18.Height = 24;
+ this.layoutControlItem18.MinSize = new System.Drawing.Size(64, 18);
+ this.layoutControlItem18.Name = "layoutControlItem18";
+ this.layoutControlItem18.Text = "Label:";
+ this.layoutControlItem18.TextVisible = false;
+ this.layoutControlItem18.Width = 85;
+ //
// DiagramConfigurationPanel
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.layoutControl1);
+ this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "DiagramConfigurationPanel";
- this.Size = new System.Drawing.Size(683, 466);
+ this.Size = new System.Drawing.Size(911, 574);
this.layoutControl1.ResumeLayout(false);
this.layoutControl1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this._vSpacing)).EndInit();
@@ -424,6 +548,8 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)(this._markerSize)).EndInit();
((System.ComponentModel.ISupportInitialize)(this._iconCenterSize)).EndInit();
((System.ComponentModel.ISupportInitialize)(this._iconSize)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this._entityWrap)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this._flowWrap)).EndInit();
this.ResumeLayout(false);
}
@@ -460,5 +586,13 @@ private void InitializeComponent()
private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem17;
private System.Windows.Forms.ComboBox _marker;
private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem1;
+ private System.Windows.Forms.Label _entityWrapText;
+ private System.Windows.Forms.TrackBar _entityWrap;
+ private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem2;
+ private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem4;
+ private System.Windows.Forms.Label _flowWrapText;
+ private System.Windows.Forms.TrackBar _flowWrap;
+ private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem8;
+ private DevComponents.DotNetBar.Layout.LayoutControlItem layoutControlItem18;
}
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.cs
index c3d929e0..0fa7916a 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/DiagramConfiguration/DiagramConfigurationPanel.cs
@@ -153,6 +153,32 @@ public void Initialize([NotNull] IThreatModel model)
var selected = _configuration.MarkerExtension;
_marker.SelectedItem = extensions.FirstOrDefault(x => string.CompareOrdinal(x.GetExtensionId(), selected) == 0);
}
+
+ var entityWrapWidth = _configuration.EntityWrappingWidth;
+ if (entityWrapWidth < _entityWrap.Minimum)
+ {
+ _configuration.EntityWrappingWidth = entityWrapWidth = _entityWrap.Minimum;
+ _configuration.Apply();
+ }
+ else if (entityWrapWidth > _entityWrap.Maximum)
+ {
+ _configuration.EntityWrappingWidth = entityWrapWidth = _entityWrap.Maximum;
+ _configuration.Apply();
+ }
+ _entityWrap.Value = entityWrapWidth;
+
+ var flowWrapWidth = _configuration.FlowWrappingWidth;
+ if (flowWrapWidth < _flowWrap.Minimum)
+ {
+ _configuration.FlowWrappingWidth = flowWrapWidth = _flowWrap.Minimum;
+ _configuration.Apply();
+ }
+ else if (flowWrapWidth > _flowWrap.Maximum)
+ {
+ _configuration.EntityWrappingWidth = flowWrapWidth = _flowWrap.Maximum;
+ _configuration.Apply();
+ }
+ _flowWrap.Value = flowWrapWidth;
}
public void Apply()
@@ -319,5 +345,27 @@ private void _marker_SelectedIndexChanged(object sender, EventArgs e)
_configuration.MarkerExtension = factory.GetExtensionId();
}
}
+
+ private void _entityWrap_ValueChanged(object sender, EventArgs e)
+ {
+ var size = _entityWrap.Value;
+
+ if (size > 0)
+ {
+ _entityWrapText.Text = $"{size} pixels";
+ _configuration.EntityWrappingWidth = size;
+ }
+ }
+
+ private void _flowWrap_ValueChanged(object sender, EventArgs e)
+ {
+ var size = _flowWrap.Value;
+
+ if (size > 0)
+ {
+ _flowWrapText.Text = $"{size} pixels";
+ _configuration.FlowWrappingWidth = size;
+ }
+ }
}
}
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.ContextAwareExtension.cs
index 103ddc60..cac78f7f 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.ContextAwareExtension.cs
@@ -15,14 +15,15 @@ public partial class ExternalInteractorListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.ExternalInteractor;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.Designer.cs
index 17084964..9261a204 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ExternalInteractorList/ExternalInteractorListPanel.Designer.cs
@@ -57,6 +57,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ImportedList/ImportedListPanelFactory.MainRibbonExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ImportedList/ImportedListPanelFactory.MainRibbonExtension.cs
index a3c41f3a..ae90451e 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ImportedList/ImportedListPanelFactory.MainRibbonExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ImportedList/ImportedListPanelFactory.MainRibbonExtension.cs
@@ -33,7 +33,7 @@ public partial class ImportedListPanelFactory
public IEnumerable RibbonActions => new List
{
- new ActionDefinition(Id, "CreatePanel", "Imported List", Properties.Resources.arrow_into_big,
+ new ActionDefinition(Id, "CreatePanel", "Imported\nList", Properties.Resources.arrow_into_big,
Properties.Resources.arrow_into)
};
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.ContextAwareExtension.cs
index e2929c2d..18664403 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.ContextAwareExtension.cs
@@ -15,14 +15,15 @@ public partial class ItemTemplateListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.ItemTemplate;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.Designer.cs
index 66dd1afa..c7012a89 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ItemTemplateList/ItemTemplateListPanel.Designer.cs
@@ -52,6 +52,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.ContextAwareExtension.cs
index 86a3572e..d47d5ec1 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.ContextAwareExtension.cs
@@ -16,18 +16,20 @@ public partial class KnownMitigationListPanel
private ContextMenuStrip _mitigationMenu;
private ContextMenuStrip _threatTypeMitigationMenu;
private IEnumerable _actions;
+ private MenuDefinition _menuMitigation;
+ private MenuDefinition _menuThreatTypeMitigation;
public Scope SupportedScopes => Scope.Mitigation | Scope.ThreatTypeMitigation;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menuMitigation = new MenuDefinition(actions, Scope.Mitigation);
- _mitigationMenu = menuMitigation.CreateMenu();
- menuMitigation.MenuClicked += OnMitigationMenuClicked;
+ _menuMitigation = new MenuDefinition(actions, Scope.Mitigation);
+ _mitigationMenu = _menuMitigation.CreateMenu();
+ _menuMitigation.MenuClicked += OnMitigationMenuClicked;
- var menuThreatTypeMitigation = new MenuDefinition(actions, Scope.ThreatTypeMitigation);
- _threatTypeMitigationMenu = menuThreatTypeMitigation.CreateMenu();
- menuThreatTypeMitigation.MenuClicked += OnThreatTypeMitigationMenuClicked;
+ _menuThreatTypeMitigation = new MenuDefinition(actions, Scope.ThreatTypeMitigation);
+ _threatTypeMitigationMenu = _menuThreatTypeMitigation.CreateMenu();
+ _menuThreatTypeMitigation.MenuClicked += OnThreatTypeMitigationMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.Designer.cs
index 7af4cdf9..8caebbca 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/KnownMitigationList/KnownMitigationListPanel.Designer.cs
@@ -66,6 +66,11 @@ protected override void Dispose(bool disposing)
_grid.RowActivated -= _grid_RowActivated;
_grid.MouseClick -= _grid_MouseClick;
+ if (_menuMitigation != null)
+ _menuMitigation.MenuClicked -= OnMitigationMenuClicked;
+ if (_menuThreatTypeMitigation != null)
+ _menuThreatTypeMitigation.MenuClicked -= OnThreatTypeMitigationMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.ContextAwareExtension.cs
index 0da494bf..0af944c3 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.ContextAwareExtension.cs
@@ -16,18 +16,20 @@ public partial class MitigationListPanel
private ContextMenuStrip _mitigationMenu;
private ContextMenuStrip _threatEventMitigationMenu;
private IEnumerable _actions;
+ private MenuDefinition _menuMitigation;
+ private MenuDefinition _menuThreatEventMitigation;
public Scope SupportedScopes => Scope.Mitigation | Scope.ThreatEventMitigation;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menuMitigation = new MenuDefinition(actions, Scope.Mitigation);
- _mitigationMenu = menuMitigation.CreateMenu();
- menuMitigation.MenuClicked += OnMitigationMenuClicked;
+ _menuMitigation = new MenuDefinition(actions, Scope.Mitigation);
+ _mitigationMenu = _menuMitigation.CreateMenu();
+ _menuMitigation.MenuClicked += OnMitigationMenuClicked;
- var menuThreatEventMitigation = new MenuDefinition(actions, Scope.ThreatEventMitigation);
- _threatEventMitigationMenu = menuThreatEventMitigation.CreateMenu();
- menuThreatEventMitigation.MenuClicked += OnThreatEventMitigationMenuClicked;
+ _menuThreatEventMitigation = new MenuDefinition(actions, Scope.ThreatEventMitigation);
+ _threatEventMitigationMenu = _menuThreatEventMitigation.CreateMenu();
+ _menuThreatEventMitigation.MenuClicked += OnThreatEventMitigationMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.Designer.cs
index bf993ab4..e4fd1769 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/MitigationList/MitigationListPanel.Designer.cs
@@ -54,6 +54,11 @@ protected override void Dispose(bool disposing)
_properties.OpenDiagram -= OpenDiagram;
_properties.Item = null;
+ if (_menuMitigation != null)
+ _menuMitigation.MenuClicked -= OnMitigationMenuClicked;
+ if (_menuThreatEventMitigation != null)
+ _menuThreatEventMitigation.MenuClicked -= OnThreatEventMitigationMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.ContextAwareExtension.cs
index 90fa1b5a..24ee0266 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.ContextAwareExtension.cs
@@ -2,6 +2,7 @@
using System.Linq;
using System.Windows.Forms;
using PostSharp.Patterns.Contracts;
+using PostSharp.Patterns.Threading;
using ThreatsManager.Interfaces;
using ThreatsManager.Interfaces.Extensions;
using ThreatsManager.Interfaces.Extensions.Actions;
@@ -15,14 +16,15 @@ public partial class ProcessListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.Process;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.Designer.cs
index 1d508b39..81338498 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ProcessList/ProcessListPanel.Designer.cs
@@ -57,6 +57,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.ContextAwareExtension.cs
index 806743e4..e74c9a4b 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.ContextAwareExtension.cs
@@ -15,14 +15,15 @@ public partial class ThreatActorListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.ThreatActor;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.Designer.cs
index 1532a05f..c7e8ae34 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatActorList/ThreatActorListPanel.Designer.cs
@@ -47,6 +47,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.ContextAwareExtension.cs
index dbbae7b6..bf1bf222 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.ContextAwareExtension.cs
@@ -20,6 +20,12 @@ public partial class ThreatEventListPanel
private ContextMenuStrip _vulnerabilityMenu;
private ContextMenuStrip _vulnerabilityMitigationMenu;
private IEnumerable _actions;
+ private MenuDefinition _menuThreatEvents;
+ private MenuDefinition _menuThreatTypes;
+ private MenuDefinition _menuScenario;
+ private MenuDefinition _menuThreatEventMitigation;
+ private MenuDefinition _menuVulnerability;
+ private MenuDefinition _menuVulnerabilityMitigation;
public Scope SupportedScopes => Scope.ThreatEvent | Scope.ThreatType |
Scope.ThreatEventScenario | Scope.ThreatEventMitigation |
@@ -27,29 +33,29 @@ public partial class ThreatEventListPanel
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menuThreatEvents = new MenuDefinition(actions, Scope.ThreatEvent);
- _threatEventMenu = menuThreatEvents.CreateMenu();
- menuThreatEvents.MenuClicked += OnThreatEventMenuClicked;
+ _menuThreatEvents = new MenuDefinition(actions, Scope.ThreatEvent);
+ _threatEventMenu = _menuThreatEvents.CreateMenu();
+ _menuThreatEvents.MenuClicked += OnThreatEventMenuClicked;
- var menuThreatTypes = new MenuDefinition(actions, Scope.ThreatType);
- _threatTypeMenu = menuThreatTypes.CreateMenu();
- menuThreatTypes.MenuClicked += OnThreatTypeMenuClicked;
+ _menuThreatTypes = new MenuDefinition(actions, Scope.ThreatType);
+ _threatTypeMenu = _menuThreatTypes.CreateMenu();
+ _menuThreatTypes.MenuClicked += OnThreatTypeMenuClicked;
- var menuScenario = new MenuDefinition(actions, Scope.ThreatEventScenario);
- _scenarioMenu = menuScenario.CreateMenu();
- menuScenario.MenuClicked += OnScenarioMenuClicked;
+ _menuScenario = new MenuDefinition(actions, Scope.ThreatEventScenario);
+ _scenarioMenu = _menuScenario.CreateMenu();
+ _menuScenario.MenuClicked += OnScenarioMenuClicked;
- var menuThreatEventMitigation = new MenuDefinition(actions, Scope.ThreatEventMitigation);
- _threatEventMitigationMenu = menuThreatEventMitigation.CreateMenu();
- menuThreatEventMitigation.MenuClicked += OnThreatEventMitigationMenuClicked;
+ _menuThreatEventMitigation = new MenuDefinition(actions, Scope.ThreatEventMitigation);
+ _threatEventMitigationMenu = _menuThreatEventMitigation.CreateMenu();
+ _menuThreatEventMitigation.MenuClicked += OnThreatEventMitigationMenuClicked;
- var menuVulnerability = new MenuDefinition(actions, Scope.Vulnerability);
- _vulnerabilityMenu = menuVulnerability.CreateMenu();
- menuVulnerability.MenuClicked += OnVulnerabilityMenuClicked;
+ _menuVulnerability = new MenuDefinition(actions, Scope.Vulnerability);
+ _vulnerabilityMenu = _menuVulnerability.CreateMenu();
+ _menuVulnerability.MenuClicked += OnVulnerabilityMenuClicked;
- var menuVulnerabilityMitigation = new MenuDefinition(actions, Scope.VulnerabilityMitigation);
- _vulnerabilityMitigationMenu = menuVulnerabilityMitigation.CreateMenu();
- menuVulnerabilityMitigation.MenuClicked += OnVulnerabilityMitigationMenuClicked;
+ _menuVulnerabilityMitigation = new MenuDefinition(actions, Scope.VulnerabilityMitigation);
+ _vulnerabilityMitigationMenu = _menuVulnerabilityMitigation.CreateMenu();
+ _menuVulnerabilityMitigation.MenuClicked += OnVulnerabilityMitigationMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.Designer.cs
index 2cd70475..5c1b6be1 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.Designer.cs
@@ -60,6 +60,19 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menuScenario != null)
+ _menuScenario.MenuClicked -= OnScenarioMenuClicked;
+ if (_menuThreatEventMitigation != null)
+ _menuThreatEventMitigation.MenuClicked -= OnThreatEventMitigationMenuClicked;
+ if (_menuThreatEvents != null)
+ _menuThreatEvents.MenuClicked -= OnThreatEventMenuClicked;
+ if (_menuThreatTypes != null)
+ _menuThreatTypes.MenuClicked -= OnThreatTypeMenuClicked;
+ if (_menuVulnerability != null)
+ _menuVulnerability.MenuClicked -= OnVulnerabilityMenuClicked;
+ if (_menuVulnerabilityMitigation != null)
+ _menuVulnerabilityMitigation.MenuClicked -= OnVulnerabilityMitigationMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.cs
index 36de0e5f..b5158166 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatEventList/ThreatEventListPanel.cs
@@ -2237,6 +2237,16 @@ private void _grid_MouseClick(object sender, MouseEventArgs e)
MenuDefinition.UpdateVisibility(_threatEventMitigationMenu, row.Tag);
_threatEventMitigationMenu?.Show(_grid.PointToScreen(e.Location));
}
+ if (row?.Tag is IVulnerability)
+ {
+ MenuDefinition.UpdateVisibility(_vulnerabilityMenu, row.Tag);
+ _vulnerabilityMenu?.Show(_grid.PointToScreen(e.Location));
+ }
+ if (row?.Tag is IVulnerabilityMitigation)
+ {
+ MenuDefinition.UpdateVisibility(_vulnerabilityMitigationMenu, row.Tag);
+ _vulnerabilityMitigationMenu?.Show(_grid.PointToScreen(e.Location));
+ }
}
}
#endregion
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.ContextAwareExtension.cs
index 1810bc1a..ea3f0d3c 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.ContextAwareExtension.cs
@@ -16,18 +16,19 @@ public partial class ThreatTypeListPanel
private ContextMenuStrip _threatTypeMenu;
private ContextMenuStrip _threatTypeMitigationMenu;
private IEnumerable _actions;
-
+ private MenuDefinition _menuThreatTypes;
+ private MenuDefinition _menuThreatTypeMitigation;
public Scope SupportedScopes => Scope.ThreatType | Scope.ThreatTypeMitigation;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menuThreatTypes = new MenuDefinition(actions, Scope.ThreatType);
- _threatTypeMenu = menuThreatTypes.CreateMenu();
- menuThreatTypes.MenuClicked += OnThreatTypeMenuClicked;
+ _menuThreatTypes = new MenuDefinition(actions, Scope.ThreatType);
+ _threatTypeMenu = _menuThreatTypes.CreateMenu();
+ _menuThreatTypes.MenuClicked += OnThreatTypeMenuClicked;
- var menuThreatTypeMitigation = new MenuDefinition(actions, Scope.ThreatTypeMitigation);
- _threatTypeMitigationMenu = menuThreatTypeMitigation.CreateMenu();
- menuThreatTypeMitigation.MenuClicked += OnThreatTypeMitigationMenuClicked;
+ _menuThreatTypeMitigation = new MenuDefinition(actions, Scope.ThreatTypeMitigation);
+ _threatTypeMitigationMenu = _menuThreatTypeMitigation.CreateMenu();
+ _menuThreatTypeMitigation.MenuClicked += OnThreatTypeMitigationMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.Designer.cs
index 9cfcd36f..3a8bf801 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/ThreatTypeList/ThreatTypeListPanel.Designer.cs
@@ -43,6 +43,11 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menuThreatTypes != null)
+ _menuThreatTypes.MenuClicked -= OnThreatTypeMenuClicked;
+ if (_menuThreatTypeMitigation != null)
+ _menuThreatTypeMitigation.MenuClicked -= OnThreatTypeMitigationMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.ContextAwareExtension.cs
index bf05d473..47cbac42 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.ContextAwareExtension.cs
@@ -15,14 +15,15 @@ public partial class TrustBoundaryListPanel
{
private ContextMenuStrip _contextMenu;
private IEnumerable _actions;
+ private MenuDefinition _menu;
public Scope SupportedScopes => Scope.TrustBoundary;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menu = new MenuDefinition(actions, SupportedScopes);
- _contextMenu = menu.CreateMenu();
- menu.MenuClicked += OnMenuClicked;
+ _menu = new MenuDefinition(actions, SupportedScopes);
+ _contextMenu = _menu.CreateMenu();
+ _menu.MenuClicked += OnMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.Designer.cs
index 3a0940e4..a7cfd404 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/TrustBoundaryList/TrustBoundaryListPanel.Designer.cs
@@ -53,6 +53,9 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menu != null)
+ _menu.MenuClicked -= OnMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.ContextAwareExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.ContextAwareExtension.cs
index db90a7ff..62fa8587 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.ContextAwareExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.ContextAwareExtension.cs
@@ -16,18 +16,20 @@ public partial class WeaknessListPanel
private ContextMenuStrip _weaknessMenu;
private ContextMenuStrip _weaknessMitigationMenu;
private IEnumerable _actions;
+ private MenuDefinition _menuWeakness;
+ private MenuDefinition _menuWeaknessMitigation;
public Scope SupportedScopes => Scope.Weakness | Scope.WeaknessMitigation;
public void SetContextAwareActions([NotNull] IEnumerable actions)
{
- var menuWeakness = new MenuDefinition(actions, Scope.Weakness);
- _weaknessMenu = menuWeakness.CreateMenu();
- menuWeakness.MenuClicked += OnWeaknessMenuClicked;
+ _menuWeakness = new MenuDefinition(actions, Scope.Weakness);
+ _weaknessMenu = _menuWeakness.CreateMenu();
+ _menuWeakness.MenuClicked += OnWeaknessMenuClicked;
- var menuWeaknessMitigation = new MenuDefinition(actions, Scope.WeaknessMitigation);
- _weaknessMitigationMenu = menuWeaknessMitigation.CreateMenu();
- menuWeaknessMitigation.MenuClicked += OnWeaknessMitigationMenuClicked;
+ _menuWeaknessMitigation = new MenuDefinition(actions, Scope.WeaknessMitigation);
+ _weaknessMitigationMenu = _menuWeaknessMitigation.CreateMenu();
+ _menuWeaknessMitigation.MenuClicked += OnWeaknessMitigationMenuClicked;
_actions = actions?.ToArray();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.Designer.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.Designer.cs
index 26026753..9ac07b8e 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.Designer.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/WeaknessList/WeaknessListPanel.Designer.cs
@@ -43,6 +43,11 @@ protected override void Dispose(bool disposing)
RemoveEventSubscriptions(row);
}
+ if (_menuWeakness != null)
+ _menuWeakness.MenuClicked -= OnWeaknessMenuClicked;
+ if (_menuWeaknessMitigation != null)
+ _menuWeaknessMitigation.MenuClicked -= OnWeaknessMitigationMenuClicked;
+
if (disposing && (components != null))
{
components.Dispose();
diff --git a/Studio/ThreatsManager.Extensions.WinForms/Panels/Word/WordReportingPanel.CustomRibbonExtension.cs b/Studio/ThreatsManager.Extensions.WinForms/Panels/Word/WordReportingPanel.CustomRibbonExtension.cs
index 2510c45b..5c1f7949 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/Panels/Word/WordReportingPanel.CustomRibbonExtension.cs
+++ b/Studio/ThreatsManager.Extensions.WinForms/Panels/Word/WordReportingPanel.CustomRibbonExtension.cs
@@ -77,8 +77,16 @@ public void ExecuteCustomAction([NotNull] IActionDefinition action)
case "GenCurrent":
_index = 0;
_count = 1;
- if (_currentRow?.Tag is WordReportDefinition definition && Generate(definition))
- text = $"'{definition.Name}' Document Generation";
+ if (_currentRow?.Tag is WordReportDefinition definition)
+ {
+ if (Generate(definition))
+ text = $"'{definition.Name}' Document Generation";
+ }
+ else
+ {
+ text = "No document is selected.";
+ warning = true;
+ }
break;
case "Open":
if (!string.IsNullOrWhiteSpace(_lastDocument) && File.Exists(_lastDocument) &&
diff --git a/Studio/ThreatsManager.Extensions.WinForms/ThreatsManager.Extensions.WinForms.csproj b/Studio/ThreatsManager.Extensions.WinForms/ThreatsManager.Extensions.WinForms.csproj
index 50e1ed41..ee939de2 100644
--- a/Studio/ThreatsManager.Extensions.WinForms/ThreatsManager.Extensions.WinForms.csproj
+++ b/Studio/ThreatsManager.Extensions.WinForms/ThreatsManager.Extensions.WinForms.csproj
@@ -18,6 +18,8 @@
+ true
+ PerMonitorV2
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 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+