Skip to content

Commit 5e1ad95

Browse files
security .net 8 updates
1 parent 2c3e17c commit 5e1ad95

22 files changed

+64
-88
lines changed

1_CS/Delegates/AnonymousMethods/AnonymousMethods.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/EventsSample/CarDealer.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
public class CarInfoEventArgs : EventArgs
1+
public class CarInfoEventArgs(string car) : EventArgs
22
{
3-
public CarInfoEventArgs(string car) => Car = car;
4-
5-
public string Car { get; }
3+
public string Car { get; } = car;
64
}
75

86
public class CarDealer

1_CS/Delegates/EventsSample/EventsSample.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/GetAStringDemo/Currency.cs

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
struct Currency
1+
struct Currency(uint dollars, ushort cents)
22
{
3-
public uint Dollars;
4-
public ushort Cents;
3+
public uint Dollars = dollars;
4+
public ushort Cents = cents;
55

6-
public Currency(uint dollars, ushort cents)
7-
{
8-
Dollars = dollars;
9-
Cents = cents;
10-
}
11-
12-
public override string ToString() => $"${Dollars}.{Cents,2:00}";
6+
public override readonly string ToString() => $"${Dollars}.{Cents,2:00}";
137

148
public static string GetCurrencyUnit() => "Dollar";
159

@@ -26,9 +20,8 @@ public static explicit operator Currency(float value)
2620
public static implicit operator float(Currency value) =>
2721
value.Dollars + (value.Cents / 100.0f);
2822

29-
3023
public static implicit operator Currency(uint value) =>
31-
new Currency(value, 0);
24+
new(value, 0);
3225

3326
public static implicit operator uint(Currency value) =>
3427
value.Dollars;

1_CS/Delegates/GetAStringDemo/GetAStringDemo.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/LambdaExpressions/LambdaExpressions.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/LambdaExpressions/Program.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ void ClosureWithForEach()
4949
Console.WriteLine(nameof(ClosureWithForEach));
5050
var values = new List<int>() { 10, 20, 30 };
5151
var funcs = new List<Func<int>>();
52-
foreach (var val in values)
52+
foreach (int val in values)
5353
{
5454
funcs.Add(() => val);
5555
}
56-
foreach (var f in funcs)
56+
foreach (Func<int> f in funcs)
5757
{
5858
Console.WriteLine(f());
5959
}

1_CS/Delegates/MulticastDelegates/MulticastDelegates.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/MulticastDelegates/Program.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
ProcessAndDisplayNumber(operations, 7.94);
66
ProcessAndDisplayNumber(operations, 1.414);
77

8-
void ProcessAndDisplayNumber(Action<double> action, double value)
8+
static void ProcessAndDisplayNumber(Action<double> action, double value)
99
{
1010
Console.WriteLine($"ProcessAndDisplayNumber called with value = {value}");
1111
action(value);

1_CS/Delegates/MulticastDelegatesUsingInvocationList/MulticastDelegatesUsingInvocationList.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

1_CS/Delegates/MulticastDelegatesUsingInvocationList/Program.cs

+2-5
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@
44
throw new Exception("Error in One");
55
}
66

7-
static void Two()
8-
{
9-
Console.WriteLine("Two");
10-
}
7+
static void Two() => Console.WriteLine("Two");
118

129
Action d1 = One;
1310
d1 += Two;
1411

1512
Delegate[] delegates = d1.GetInvocationList();
16-
foreach (Action d in delegates)
13+
foreach (Action d in delegates.Cast<Action>())
1714
{
1815
try
1916
{

1_CS/Delegates/SimpleDelegates/Program.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
Console.WriteLine(d2);
55

66
DoubleOp[] operations =
7-
{
7+
[
88
MathOperations.MultiplyByTwo,
99
MathOperations.Square
10-
};
10+
];
1111

1212
for (int i = 0; i < operations.Length; i++)
1313
{
@@ -18,9 +18,7 @@
1818
Console.WriteLine();
1919
}
2020

21-
void ProcessAndDisplayNumber(DoubleOp action, double value)
22-
{
21+
static void ProcessAndDisplayNumber(DoubleOp action, double value) =>
2322
Console.WriteLine($"Value is {value}, result of operation is {action(value)}");
24-
}
2523

2624
delegate double DoubleOp(double x);

1_CS/Delegates/SimpleDelegates/SimpleDelegates.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>

2_Libs/Security/SecureTransfer/AliceRunner.cs

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1-
sealed class AliceRunner : IDisposable
1+
sealed class AliceRunner(ILogger<AliceRunner> logger) : IDisposable
22
{
3-
private readonly ILogger _logger;
4-
private readonly ECDiffieHellman _algorithm;
5-
public AliceRunner(ILogger<AliceRunner> logger)
6-
{
7-
_logger = logger;
8-
_algorithm = ECDiffieHellman.Create();
9-
_logger.LogInformation($"Using this ECDiffieHellman class: {_algorithm.GetType().Name}");
10-
}
3+
private readonly ILogger _logger = logger;
4+
private readonly ECDiffieHellman _algorithm = ECDiffieHellman.Create();
115

126
public void Dispose() => _algorithm.Dispose();
137

148
public ECDiffieHellmanPublicKey GetPublicKey() => _algorithm.PublicKey;
159

1610
public async Task<(byte[] Iv, byte[] EncryptedData)> GetSecretMessageAsync(ECDiffieHellmanPublicKey otherPublicKey)
1711
{
12+
_logger.LogInformation("Using this ECDiffieHellman class: {type}", _algorithm.GetType().Name);
13+
1814
string message = "secret message from Alice";
1915
_logger.LogInformation("Alice sends message {message}", message);
2016

@@ -25,7 +21,7 @@ public AliceRunner(ILogger<AliceRunner> logger)
2521
"Bobs public key information: {key}", Convert.ToBase64String(symmKey));
2622

2723
using Aes aes = Aes.Create();
28-
_logger.LogInformation("Using this Aes class: {class}", aes.GetType().Name);
24+
_logger.LogInformation("Using this Aes class: {type}", aes.GetType().Name);
2925
aes.Key = symmKey;
3026
aes.GenerateIV();
3127
using ICryptoTransform encryptor = aes.CreateEncryptor();

2_Libs/Security/SecureTransfer/BobRunner.cs

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
sealed class BobRunner
1+
sealed class BobRunner(ILogger<BobRunner> logger) : IDisposable
22
{
3-
private readonly ILogger _logger;
4-
private readonly ECDiffieHellman _algorithm;
5-
public BobRunner(ILogger<BobRunner> logger)
6-
{
7-
_logger = logger;
8-
_algorithm = ECDiffieHellman.Create();
9-
}
3+
private readonly ILogger _logger = logger;
4+
private readonly ECDiffieHellman _algorithm = ECDiffieHellman.Create();
105

116
public void Dispose() => _algorithm.Dispose();
127

2_Libs/Security/SecureTransfer/Program.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
.CreateDefaultBuilder(args)
66
.ConfigureServices(services =>
77
{
8-
services.AddTransient<AliceRunner>();
9-
services.AddTransient<BobRunner>();
8+
services.AddScoped<AliceRunner>();
9+
services.AddScoped<BobRunner>();
1010
})
1111
.Build();
1212

13-
var alice = host.Services.GetRequiredService<AliceRunner>();
14-
var bob = host.Services.GetRequiredService<BobRunner>();
13+
using var scope = host.Services.CreateScope();
14+
15+
var alice = scope.ServiceProvider.GetRequiredService<AliceRunner>();
16+
var bob = scope.ServiceProvider.GetRequiredService<BobRunner>();
1517
var keyAlice = alice.GetPublicKey();
1618
var keyBob = bob.GetPublicKey();
1719
(byte[] iv, byte[] encryptedData) = await alice.GetSecretMessageAsync(keyBob);
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<OutputType>Exe</OutputType>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
<UserSecretsId>080d7485-fc68-4aa9-a3f0-4bd93efef352</UserSecretsId>
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
12+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
1313
</ItemGroup>
1414

1515
</Project>
+5-10
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
sealed class AliceRunner : IDisposable
1+
sealed class AliceRunner(ILogger<AliceRunner> logger) : IDisposable
22
{
3-
private readonly ILogger _logger;
4-
private readonly ECDsa _signAlgorithm;
5-
public AliceRunner(ILogger<AliceRunner> logger)
6-
{
7-
_logger = logger;
8-
_signAlgorithm = ECDsa.Create();
9-
_logger.LogInformation($"Using this ECDsa class: {_signAlgorithm.GetType().Name}");
10-
}
3+
private readonly ILogger _logger = logger;
4+
private readonly ECDsa _signAlgorithm = ECDsa.Create();
115

126
public void Dispose() => _signAlgorithm.Dispose();
137

148
public byte[] GetPublicKey() => _signAlgorithm.ExportSubjectPublicKeyInfo();
159

1610
public (byte[] Data, byte[] Sign) GetDocumentAndSignature()
1711
{
12+
_logger.LogInformation($"Using this ECDsa class: {_signAlgorithm.GetType().Name}");
13+
1814
byte[] aliceData = Encoding.UTF8.GetBytes("I'm Alice");
1915
byte[] aliceDataSignature = _signAlgorithm.SignData(aliceData, HashAlgorithmName.SHA512);
2016
return (aliceData, aliceDataSignature);
2117
}
22-
2318
}
2419

2_Libs/Security/SigningDemo/Program.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
using var host = Host.CreateDefaultBuilder(args)
55
.ConfigureServices(services =>
66
{
7-
services.AddTransient<AliceRunner>();
8-
services.AddTransient<BobRunner>();
7+
services.AddScoped<AliceRunner>();
8+
services.AddScoped<BobRunner>();
99
})
1010
.Build();
1111

12-
var alice = host.Services.GetRequiredService<AliceRunner>();
13-
var bob = host.Services.GetRequiredService<BobRunner>();
12+
using var scope1 = host.Services.CreateScope();
13+
14+
var alice = scope1.ServiceProvider.GetRequiredService<AliceRunner>();
15+
var bob = scope1.ServiceProvider.GetRequiredService<BobRunner>();
1416
var keyAlice = alice.GetPublicKey();
1517
var aliceData = alice.GetDocumentAndSignature();
1618
bob.VerifySignature(aliceData.Data, aliceData.Sign, keyAlice);

2_Libs/Security/SigningDemo/SigningDemo.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
11+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
1212
</ItemGroup>
1313

1414
</Project>

2_Libs/Security/X509CertificateSample/Program.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
using Microsoft.Extensions.Configuration;
2-
using Microsoft.Extensions.Configuration.UserSecrets;
1+
using System.Security.Cryptography;
2+
using System.Security.Cryptography.X509Certificates;
3+
34
using Microsoft.Extensions.DependencyInjection;
45
using Microsoft.Extensions.Hosting;
5-
using System.Reflection;
6-
using System.Security.Cryptography;
7-
using System.Security.Cryptography.X509Certificates;
86

97
using var host = Host
108
.CreateDefaultBuilder(args)
119
.ConfigureServices(services =>
1210
{
13-
services.AddSingleton<KeyVaultService>();
11+
services.AddScoped<KeyVaultService>();
1412
}).Build();
1513

16-
var service = host.Services.GetRequiredService<KeyVaultService>();
14+
using var scope = host.Services.CreateScope();
15+
16+
var service = scope.ServiceProvider.GetRequiredService<KeyVaultService>();
1717
using var certificate = await service.GetCertificateAsync("AliceCert");
1818

1919
ShowCertificate(certificate);

2_Libs/Security/X509CertificateSample/X509CertificateSample.csproj

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net7.0</TargetFramework>
5+
<TargetFramework>net8.0</TargetFramework>
66
<Nullable>enable</Nullable>
77
<ImplicitUsings>enable</ImplicitUsings>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Azure.Identity" Version="1.8.0" />
12-
<PackageReference Include="Azure.Security.KeyVault.Certificates" Version="4.4.0" />
13-
<PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.4.0" />
14-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.0" />
11+
<PackageReference Include="Azure.Identity" Version="1.10.4" />
12+
<PackageReference Include="Azure.Security.KeyVault.Certificates" Version="4.5.1" />
13+
<PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.5.0" />
14+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
1515
</ItemGroup>
1616

1717
<ItemGroup>

0 commit comments

Comments
 (0)