Situatie: ik heb een module in Tricentis Tosca die TOTP (Time-based One Time Password, SSO dus) regelt.
Bij een update van Tosca (waarbij Tosca van .NET 6.0 naar 8.0 is gegaan) werkt deze niet meer.
Ik krijg volgende foutmelding:
Op regel 72 staat het volgende:
Hoe ik begrepen heb dat het werkt:
- de .cs file zit in in de module in Tosca.
- wanneer deze wordt aangeroepen, compileert Tosca deze on-the-fly en voert hem uit. Daar komt deze foutmelding vandaan.
- Waar je in Visual Studio de references in je project moet zetten, moet je deze in Tricentis.Automation.Agent.dll.config zetten.
Daar staat dus:
Het lijkt dus fout te gaan omdat in .NET 8 HMACSHA1 niet meer in de Cryptography bibliotheek zit.
Volgens deze link echter wel: https://learn.microsoft.c...phy.hmacsha1?view=net-8.0
Ik heb ook op mijn eigen laptop Visual Studio geïnstalleerd, een nieuwe project Class Library aangemaakt en de .cs file er in gekopieerd.
Die kan ik perfect bouwen naar een .dll.
Op mijn laptop kan ik ook in de Object Browser in Visual Studio de Cryptography bibliotheek bekijken en zien dat er wel degelijk de functies HMACSHA1() en HMACSHA1(byte[]) in zitten.
Is misschien de referentie verkeerd dan, is de publicKeytoken (b03f5f7f11d50a3a) niet juist op mijn werklaptop?
Met Powershell kan ik dit controleren, maar ook die blijkt juist te zijn:
Ik heb dus echt even geen idee meer.
Eerste vraag is: is HMACSHA1 wel of niet aanwezig in System.Security.Cryptography? Ik denk van wel, gezien wat ik zie op mijn eigen laptop.
Tweede vraag: Trekt Tosca misschien deze bibliotheek nog op een andere manier binnen dan enkel via de .config file?
Ik zie ook een Tricentis.Automation.Agent.deps.json bestand waar Crypto dingen in vermeld staan:
Die laatste regel stond er niet in. Ik heb die bijgevoegd, echter nog steeds dezelfde fout.
CoPilot zegt me dat ik in de deps.json file in de libraries sectie ook nog dit moet toevoegen:
Ik heb echter geen flauw idee wat the sha512 is. Hij verwijst dat ik moet berekenen voor de bijhorende .nupkg, maar die heb ik niet. Want geen dev environment, enkel de .NET runtime environment.
Bij een update van Tosca (waarbij Tosca van .NET 6.0 naar 8.0 is gegaan) werkt deze niet meer.
Ik krijg volgende foutmelding:
code:
1
2
| Compile Error(s) occured when trying to compile the source Code of the embedded SpecialExecutionTask. (72,32): error CS1069: The type name 'HMACSHA1' could not be found in the namespace 'System.Security.Cryptography'. This type has been forwarded to assembly 'System.Security.Cryptography, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Consider adding a reference to that assembly. |
Op regel 72 staat het volgende:
code:
1
| var hmacSha1 = new HMACSHA1(privateKey); |
Hoe ik begrepen heb dat het werkt:
- de .cs file zit in in de module in Tosca.
- wanneer deze wordt aangeroepen, compileert Tosca deze on-the-fly en voert hem uit. Daar komt deze foutmelding vandaan.
- Waar je in Visual Studio de references in je project moet zetten, moet je deze in Tricentis.Automation.Agent.dll.config zetten.
Daar staat dus:
code:
1
2
3
4
5
6
| <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Security.Cryptography" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" /> </dependentAssembly> </assemblyBinding> |
Het lijkt dus fout te gaan omdat in .NET 8 HMACSHA1 niet meer in de Cryptography bibliotheek zit.
Volgens deze link echter wel: https://learn.microsoft.c...phy.hmacsha1?view=net-8.0
Ik heb ook op mijn eigen laptop Visual Studio geïnstalleerd, een nieuwe project Class Library aangemaakt en de .cs file er in gekopieerd.
Die kan ik perfect bouwen naar een .dll.
Op mijn laptop kan ik ook in de Object Browser in Visual Studio de Cryptography bibliotheek bekijken en zien dat er wel degelijk de functies HMACSHA1() en HMACSHA1(byte[]) in zitten.
Is misschien de referentie verkeerd dan, is de publicKeytoken (b03f5f7f11d50a3a) niet juist op mijn werklaptop?
Met Powershell kan ik dit controleren, maar ook die blijkt juist te zijn:
code:
1
2
| PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a> [System.Reflection.Assembly]::LoadFile("C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Security\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Security.dll").FullName System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a |
Ik heb dus echt even geen idee meer.
Eerste vraag is: is HMACSHA1 wel of niet aanwezig in System.Security.Cryptography? Ik denk van wel, gezien wat ik zie op mijn eigen laptop.
Tweede vraag: Trekt Tosca misschien deze bibliotheek nog op een andere manier binnen dan enkel via de .config file?
Ik zie ook een Tricentis.Automation.Agent.deps.json bestand waar Crypto dingen in vermeld staan:
code:
1
2
3
4
5
6
7
| "targets": { ".NETCoreApp,Version=v8.0": { "Tricentis.Automation.Agent/1.0.0": { "dependencies": { "System.Security.Cryptography.Pkcs": "8.0.0", "System.Security.Cryptography.Xml": "8.0.0", "System.Security.Cryptography": "8.0.0", |
Die laatste regel stond er niet in. Ik heb die bijgevoegd, echter nog steeds dezelfde fout.
CoPilot zegt me dat ik in de deps.json file in de libraries sectie ook nog dit moet toevoegen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| "System.Security.Cryptography/8.0.0": { "type": "package", "serviceable": true, "sha512": "sha512-HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==", "path": "system.security.cryptography/8.0.0", "hashPath": "system.security.cryptography.8.0.0.nupkg.sha512" }, "System.Security.Cryptography.Algorithms/8.0.0": { "type": "package", "serviceable": true, "sha512": "sha512-HQSFbakswZ1OXFz2Bt3AJlC6ENDqWeVpgqhf213xqQUMDifzydOHIKVb1RV4prayobvR3ETIScMaQdDF2hwGZA==", "path": "system.security.cryptography.algorithms/8.0.0", "hashPath": "system.security.cryptography.algorithms.8.0.0.nupkg.sha512" }, |
Ik heb echter geen flauw idee wat the sha512 is. Hij verwijst dat ik moet berekenen voor de bijhorende .nupkg, maar die heb ik niet. Want geen dev environment, enkel de .NET runtime environment.
[ Voor 13% gewijzigd door Chris_147 op 09-10-2024 09:18 ]