Skip to content

Commit 3a14d80

Browse files
sgramponeClaudia Beatriz Murialdo Garrone
authored andcommitted
GamUtils NetCore implementation + tests
(cherry picked from commit 697b55d) # Conflicts: # dotnet/DotNetStandardClasses.sln
1 parent 7e3f895 commit 3a14d80

File tree

16 files changed

+311
-7
lines changed

16 files changed

+311
-7
lines changed

dotnet/DotNetStandardClasses.sln

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GamTotpNet", "src\extension
277277
EndProject
278278
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GxEnterpriseLib", "src\dotnetcore\GxEnterpriseLib\GxEnterpriseLib.csproj", "{1D586FE0-77B5-43E9-98E5-FB66AA443F6A}"
279279
EndProject
280+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GamUtilsNet", "src\extensions\gam\src\DotNet\GamUtilsNet\GamUtilsNet.csproj", "{59D81A79-3FC9-4498-B183-78BB5648BDE0}"
281+
EndProject
282+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{B093A44F-5761-4106-A3EB-7AFA81458060}"
283+
EndProject
284+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DotNet", "DotNet", "{AB89DFE2-7E36-4075-B1DB-2BC15A5E4119}"
285+
EndProject
286+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DotNetFramework", "DotNetFramework", "{A70E9892-8223-483E-84B3-812578DA2B99}"
287+
EndProject
288+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GamTestNet", "src\extensions\gam\test\DotNet\GamTestNet\GamTestNet.csproj", "{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841}"
289+
EndProject
290+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GamTest", "src\extensions\gam\test\DotNetFramework\GamTest\GamTest.csproj", "{9E24B91A-82E1-48EE-846F-09A503B61138}"
291+
EndProject
292+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GamUtils", "src\extensions\gam\src\DotNetFramework\GamUtils\GamUtils.csproj", "{68EFFCFE-3222-4422-B64E-36A5C0A62D96}"
293+
EndProject
294+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VersionConsistencyTest", "test\VersionConsistencyTest\VersionConsistencyTest.csproj", "{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D}"
295+
EndProject
280296
Global
281297
GlobalSection(SolutionConfigurationPlatforms) = preSolution
282298
Debug|Any CPU = Debug|Any CPU
@@ -667,6 +683,26 @@ Global
667683
{1D586FE0-77B5-43E9-98E5-FB66AA443F6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
668684
{1D586FE0-77B5-43E9-98E5-FB66AA443F6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
669685
{1D586FE0-77B5-43E9-98E5-FB66AA443F6A}.Release|Any CPU.Build.0 = Release|Any CPU
686+
{59D81A79-3FC9-4498-B183-78BB5648BDE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
687+
{59D81A79-3FC9-4498-B183-78BB5648BDE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
688+
{59D81A79-3FC9-4498-B183-78BB5648BDE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
689+
{59D81A79-3FC9-4498-B183-78BB5648BDE0}.Release|Any CPU.Build.0 = Release|Any CPU
690+
{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
691+
{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841}.Debug|Any CPU.Build.0 = Debug|Any CPU
692+
{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841}.Release|Any CPU.ActiveCfg = Release|Any CPU
693+
{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841}.Release|Any CPU.Build.0 = Release|Any CPU
694+
{9E24B91A-82E1-48EE-846F-09A503B61138}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
695+
{9E24B91A-82E1-48EE-846F-09A503B61138}.Debug|Any CPU.Build.0 = Debug|Any CPU
696+
{9E24B91A-82E1-48EE-846F-09A503B61138}.Release|Any CPU.ActiveCfg = Release|Any CPU
697+
{9E24B91A-82E1-48EE-846F-09A503B61138}.Release|Any CPU.Build.0 = Release|Any CPU
698+
{68EFFCFE-3222-4422-B64E-36A5C0A62D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
699+
{68EFFCFE-3222-4422-B64E-36A5C0A62D96}.Debug|Any CPU.Build.0 = Debug|Any CPU
700+
{68EFFCFE-3222-4422-B64E-36A5C0A62D96}.Release|Any CPU.ActiveCfg = Release|Any CPU
701+
{68EFFCFE-3222-4422-B64E-36A5C0A62D96}.Release|Any CPU.Build.0 = Release|Any CPU
702+
{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
703+
{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
704+
{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
705+
{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D}.Release|Any CPU.Build.0 = Release|Any CPU
670706
EndGlobalSection
671707
GlobalSection(SolutionProperties) = preSolution
672708
HideSolutionNode = FALSE
@@ -800,6 +836,14 @@ Global
800836
{463C9F3B-ED87-43B0-A09A-E46B50BBEE6E} = {708A8C53-73A2-4D03-BC21-19EA58ACFA8B}
801837
{AA8BA0B9-E6D2-427B-BF08-7368E5602DBE} = {8CD470A6-D8A9-4BE8-95AB-9A2A0B0861B8}
802838
{1D586FE0-77B5-43E9-98E5-FB66AA443F6A} = {2261B65E-3757-4E5B-9DCD-EAE8D1E236A3}
839+
{59D81A79-3FC9-4498-B183-78BB5648BDE0} = {8CD470A6-D8A9-4BE8-95AB-9A2A0B0861B8}
840+
{B093A44F-5761-4106-A3EB-7AFA81458060} = {2A5D5796-C1AD-4611-ABBD-496431ADC705}
841+
{AB89DFE2-7E36-4075-B1DB-2BC15A5E4119} = {B093A44F-5761-4106-A3EB-7AFA81458060}
842+
{A70E9892-8223-483E-84B3-812578DA2B99} = {B093A44F-5761-4106-A3EB-7AFA81458060}
843+
{C8D4FBCD-C745-4223-AD31-1ED1C7AC3841} = {AB89DFE2-7E36-4075-B1DB-2BC15A5E4119}
844+
{9E24B91A-82E1-48EE-846F-09A503B61138} = {A70E9892-8223-483E-84B3-812578DA2B99}
845+
{68EFFCFE-3222-4422-B64E-36A5C0A62D96} = {708A8C53-73A2-4D03-BC21-19EA58ACFA8B}
846+
{E6AA03BF-B935-4165-BD1F-8B5A6EAEEE7D} = {1D6F1776-FF4B-46C2-9B3D-BC46CCF049DC}
803847
EndGlobalSection
804848
GlobalSection(ExtensibilityGlobals) = postSolution
805849
SolutionGuid = {E18684C9-7D76-45CD-BF24-E3944B7F174C}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
5+
<AssemblyName>GamUtilsNetImpl</AssemblyName>
6+
<Version>17.4.0</Version>
7+
<NoWarn>CA1031, CA1801, SYSLIB0027</NoWarn>
8+
<PackageId>GeneXxus.Gam.Utils.Net</PackageId>
9+
</PropertyGroup>
10+
11+
<PropertyGroup>
12+
<DefineConstants>NETCORE</DefineConstants>
13+
</PropertyGroup>
14+
15+
<ItemGroup>
16+
<Compile Include="..\..\DotNetFramework\GamUtils\GamUtilsEO.cs" Link="GamUtilsEO.cs" />
17+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Cryprography\Encryption.cs" Link="Utils\Cryptography\Encryption.cs" />
18+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Cryprography\Hash.cs" Link="Utils\Cryptography\Hash.cs" />
19+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Json\Jwk.cs" Link="Utils\Json\Jwk.cs" />
20+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Json\Jwks.cs" Link="Utils\Json\Jwks.cs" />
21+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Json\Jwt.cs" Link="Utils\Json\Jwt.cs" />
22+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Keys\CertificateExt.cs" Link="Utils\Keys\CertificateExt.cs" />
23+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Keys\PrivateKeyExt.cs" Link="Utils\Keys\PrivateKeyExt.cs" />
24+
<Compile Include="..\..\DotNetFramework\GamUtils\Utils\Random.cs" Link="Utils\Random.cs" />
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<PackageReference Include="BouncyCastle.Cryptography" Version="2.3.1" />
29+
<PackageReference Include="jose-jwt" Version="5.0.0" />
30+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
31+
<PackageReference Include="System.Security.Cryptography.Cng" Version="4.7.0" />
32+
</ItemGroup>
33+
34+
<ItemGroup>
35+
<ProjectReference Include="..\..\..\..\..\dotnetcore\GxClasses\GxClasses.csproj" />
36+
</ItemGroup>
37+
38+
<ItemGroup>
39+
<Folder Include="Utils\Cryptography\" />
40+
<Folder Include="Utils\Keys\" />
41+
</ItemGroup>
42+
43+
</Project>

dotnet/src/extensions/gam/src/DotNetFramework/GamUtils/Utils/Keys/PrivateKeyExt.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using Org.BouncyCastle.Security;
1414
using Org.BouncyCastle.Utilities.Encoders;
1515
using Microsoft.IdentityModel.Tokens;
16+
using System.Runtime.InteropServices;
1617

1718
namespace GamUtils.Utils.Keys
1819
{
@@ -90,7 +91,8 @@ private static PrivateKeyInfo LoadFromBase64(string base64)
9091

9192
private static RSAParameters GetPrivateRSAParameters(PrivateKeyInfo privateKeyInfo)
9293
{
93-
string serializedPrivate = Convert.ToBase64String(privateKeyInfo.ToAsn1Object().GetDerEncoded());
94+
byte[] serializedPrivateBytes = privateKeyInfo.ToAsn1Object().GetDerEncoded();
95+
string serializedPrivate = Convert.ToBase64String(serializedPrivateBytes);
9496
RsaPrivateCrtKeyParameters privateKey = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(serializedPrivate));
9597

9698
#if NETCORE
@@ -105,7 +107,7 @@ private static RSAParameters GetPrivateRSAParameters(PrivateKeyInfo privateKeyIn
105107
}catch(Exception e )
106108
{
107109
logger.Error("CastPrivateKeyInfo", e);
108-
return null;
110+
return new RSAParameters();
109111
}
110112
}
111113
#endif
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
5+
<IsPublishable>false</IsPublishable>
6+
<NoWarn>CS0618,CA1707</NoWarn>
7+
<IsPackable>false</IsPackable>
8+
</PropertyGroup>
9+
10+
<PropertyGroup Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(TargetFramework)', '^net\d'))">
11+
<DefineConstants>NETCORE</DefineConstants>
12+
</PropertyGroup>
13+
14+
<ItemGroup>
15+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\Resources\CryptographicHash.cs" Link="Utils\Resources\CryptographicHash.cs" />
16+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestCertificate.cs" Link="Utils\TestCertificate.cs" />
17+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestEncryption.cs" Link="Utils\TestEncryption.cs" />
18+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestHash.cs" Link="Utils\TestHash.cs" />
19+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestJwk.cs" Link="Utils\TestJwk.cs" />
20+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestJwks.cs" Link="Utils\TestJwks.cs" />
21+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestJwt.cs" Link="Utils\TestJwt.cs" />
22+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestPrivateKey.cs" Link="Utils\TestPrivateKey.cs" />
23+
<Compile Include="..\..\DotNetFramework\GamTest\Utils\TestRandom.cs" Link="Utils\TestRandom.cs" />
24+
</ItemGroup>
25+
26+
<ItemGroup>
27+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
28+
<PackageReference Include="NUnit" Version="3.13.2" />
29+
<PackageReference Include="NUnit.ConsoleRunner" Version="3.12.0" />
30+
<PackageReference Include="NUnit.Engine" Version="3.12.0" />
31+
<PackageReference Include="NUnit.Extension.NUnitProjectLoader" Version="3.6.0" />
32+
<PackageReference Include="NUnit3TestAdapter" Version="4.0.0" />
33+
<PackageReference Include="jose-jwt" Version="5.0.0" />
34+
</ItemGroup>
35+
36+
<ItemGroup>
37+
<Folder Include="Resources\" />
38+
<Folder Include="Utils\Resources\" />
39+
</ItemGroup>
40+
41+
<ItemGroup>
42+
<ProjectReference Include="..\..\..\src\DotNet\GamUtilsNet\GamUtilsNet.csproj" />
43+
</ItemGroup>
44+
45+
<ItemGroup>
46+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.cer">
47+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
48+
</None>
49+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.crt">
50+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
51+
</None>
52+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.key">
53+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
54+
</None>
55+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.p12">
56+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
57+
</None>
58+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.pem">
59+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
60+
</None>
61+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.pfx">
62+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
63+
</None>
64+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256_cert.pkcs12">
65+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
66+
</None>
67+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256d_key.pem">
68+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
69+
</None>
70+
<None Update="Resources\dummycerts\RSA_sha256_2048\sha256d_key.key">
71+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
72+
</None>
73+
</ItemGroup>
74+
</Project>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEATCCAumgAwIBAgIJAIAqvKHZ+gFhMA0GCSqGSIb3DQEBCwUAMIGWMQswCQYD
3+
VQQGEwJVWTETMBEGA1UECAwKTW9udGV2aWRlbzETMBEGA1UEBwwKTW9udGV2aWRl
4+
bzEQMA4GA1UECgwHR2VuZVh1czERMA8GA1UECwwIU2VjdXJpdHkxEjAQBgNVBAMM
5+
CXNncmFtcG9uZTEkMCIGCSqGSIb3DQEJARYVc2dyYW1wb25lQGdlbmV4dXMuY29t
6+
MB4XDTIwMDcwODE4NTcxN1oXDTI1MDcwNzE4NTcxN1owgZYxCzAJBgNVBAYTAlVZ
7+
MRMwEQYDVQQIDApNb250ZXZpZGVvMRMwEQYDVQQHDApNb250ZXZpZGVvMRAwDgYD
8+
VQQKDAdHZW5lWHVzMREwDwYDVQQLDAhTZWN1cml0eTESMBAGA1UEAwwJc2dyYW1w
9+
b25lMSQwIgYJKoZIhvcNAQkBFhVzZ3JhbXBvbmVAZ2VuZXh1cy5jb20wggEiMA0G
10+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1zgaU+Wh63p9DNWoAy64252EvZjN4
11+
9AY3x0QCnAa8JO9Pk7znQwrxEFUKgZzv0GHEYW7+X+uyJr7BW4TA6fuJJ8agE/bm
12+
ZRZyjdJjoue0FML6fbmCZ9Tsxpxe4pzispyWQ8jYT4Kl4I3fdZNUSn4XSidnDKBI
13+
SeC05mrcchDKhInpiYDJ481lsB4JTEti3S4Xy/ToKwY4t6attw6z5QDhBc+Yro+Y
14+
UqruliOAKqcfybe9k07jwMCvFVM1hrYYJ7hwHDSFo3MKwZ0y2gw0w6SgVBxLFo+K
15+
YP3q63b5wVhD8lzaSh+8UcyiHM2/yjEej7EnRFzdclTSNXRFNaiLnEVdAgMBAAGj
16+
UDBOMB0GA1UdDgQWBBQtQAWJRWNr/OswPSAdwCQh0Eei/DAfBgNVHSMEGDAWgBQt
17+
QAWJRWNr/OswPSAdwCQh0Eei/DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
18+
A4IBAQCjHe3JbNKv0Ywc1zlLacUNWcjLbmzvnjs8Wq5oxtf5wG5PUlhLSYZ9MPhu
19+
f95PlibnrO/xVY292P5lo4NKhS7VOonpbPQ/PrCMO84Pz1LGfM/wCWQIowh6VHq1
20+
8PiZka9zbwl6So0tgClKkFSRk4wpKrWX3+M3+Y+D0brd8sEtA6dXeYHDtqV0YgjK
21+
dZIIOx0vDT4alCoVQrQ1yAIq5INT3cSLgJezIhEadDv3Tc7bMxMFeL+81qHm9Z/9
22+
/KE6Z+JB0ZEOkF/2NSQJd+Z7MBR8CxOdTQis3ltMoXDatNkjZ2Env40sw4NICB8Y
23+
YhsWMIarew5uNT+RS28YHNlbmogh
24+
-----END CERTIFICATE-----
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEATCCAumgAwIBAgIJAIAqvKHZ+gFhMA0GCSqGSIb3DQEBCwUAMIGWMQswCQYD
3+
VQQGEwJVWTETMBEGA1UECAwKTW9udGV2aWRlbzETMBEGA1UEBwwKTW9udGV2aWRl
4+
bzEQMA4GA1UECgwHR2VuZVh1czERMA8GA1UECwwIU2VjdXJpdHkxEjAQBgNVBAMM
5+
CXNncmFtcG9uZTEkMCIGCSqGSIb3DQEJARYVc2dyYW1wb25lQGdlbmV4dXMuY29t
6+
MB4XDTIwMDcwODE4NTcxN1oXDTI1MDcwNzE4NTcxN1owgZYxCzAJBgNVBAYTAlVZ
7+
MRMwEQYDVQQIDApNb250ZXZpZGVvMRMwEQYDVQQHDApNb250ZXZpZGVvMRAwDgYD
8+
VQQKDAdHZW5lWHVzMREwDwYDVQQLDAhTZWN1cml0eTESMBAGA1UEAwwJc2dyYW1w
9+
b25lMSQwIgYJKoZIhvcNAQkBFhVzZ3JhbXBvbmVAZ2VuZXh1cy5jb20wggEiMA0G
10+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1zgaU+Wh63p9DNWoAy64252EvZjN4
11+
9AY3x0QCnAa8JO9Pk7znQwrxEFUKgZzv0GHEYW7+X+uyJr7BW4TA6fuJJ8agE/bm
12+
ZRZyjdJjoue0FML6fbmCZ9Tsxpxe4pzispyWQ8jYT4Kl4I3fdZNUSn4XSidnDKBI
13+
SeC05mrcchDKhInpiYDJ481lsB4JTEti3S4Xy/ToKwY4t6attw6z5QDhBc+Yro+Y
14+
UqruliOAKqcfybe9k07jwMCvFVM1hrYYJ7hwHDSFo3MKwZ0y2gw0w6SgVBxLFo+K
15+
YP3q63b5wVhD8lzaSh+8UcyiHM2/yjEej7EnRFzdclTSNXRFNaiLnEVdAgMBAAGj
16+
UDBOMB0GA1UdDgQWBBQtQAWJRWNr/OswPSAdwCQh0Eei/DAfBgNVHSMEGDAWgBQt
17+
QAWJRWNr/OswPSAdwCQh0Eei/DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUA
18+
A4IBAQCjHe3JbNKv0Ywc1zlLacUNWcjLbmzvnjs8Wq5oxtf5wG5PUlhLSYZ9MPhu
19+
f95PlibnrO/xVY292P5lo4NKhS7VOonpbPQ/PrCMO84Pz1LGfM/wCWQIowh6VHq1
20+
8PiZka9zbwl6So0tgClKkFSRk4wpKrWX3+M3+Y+D0brd8sEtA6dXeYHDtqV0YgjK
21+
dZIIOx0vDT4alCoVQrQ1yAIq5INT3cSLgJezIhEadDv3Tc7bMxMFeL+81qHm9Z/9
22+
/KE6Z+JB0ZEOkF/2NSQJd+Z7MBR8CxOdTQis3ltMoXDatNkjZ2Env40sw4NICB8Y
23+
YhsWMIarew5uNT+RS28YHNlbmogh
24+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)