Mijn vraag
Wanneer ik via powershell openssl.exe aanroep wordt er een binary hash aangemaakt. Maar in de API beschrijving wordt ASN hash benoemd, Als ik binary hash naar base64 encodeer lijkt dat totaal niet op de hex hash die je normaal ziet. En geeft dan ook een invalid input retour
Relevante software en hardware die ik gebruik
Powershell
Wat ik al gevonden of geprobeerd heb
Met de volgende code maak is via een Start-Proces commando een hash file aan (openssl1.1.1 en openSSL3 geven dezelfde output)
Vervolgens met
Krijgt ik verification OK
Met commando openssl.exe dgst -sha512 -hex kan ik de verify niet uitvoeren maar dat staat ook in de documentatie dat dit niet werkt.
Maar ik voer dus in mijn script volgende uit:
Output.txt bevat wat additionele tekst als in RSA-SHA2-512(body.txt)= hexkey
Hex key is 512 karakters lang want aan de verwachting voldoet
Maar nu, volgende de transIP-API zou ik deze hexkey naar base64 moeten omzetten.
Dat geeft dan vervolgens een 'string' van 1369 karakters (laatste 2 zijn ==)
Maar het gekke is als ik die van Notepad++ Base64 decode doe dit totaal niet meer lijkt op de originele data. UTF8 encoding lost dit op.
Code om van SHA512 naar base64 te gaan
Als ik alles uitvoer in visual studio Code dan krijg ik de volgende error:
Als ik de invoke-webrequest vanuit los Powershell scherm doet krijg ik een 401 (niet gemachtigd retour), dan weet in ieder geval dat er iets niet klopt in mijn waardes maar hier lijkt er iets anders mis te gaan.
Zie ik iets basaal over het hoofd en zo ja wat
Wanneer ik via powershell openssl.exe aanroep wordt er een binary hash aangemaakt. Maar in de API beschrijving wordt ASN hash benoemd, Als ik binary hash naar base64 encodeer lijkt dat totaal niet op de hex hash die je normaal ziet. En geeft dan ook een invalid input retour
Relevante software en hardware die ik gebruik
Powershell
Wat ik al gevonden of geprobeerd heb
Met de volgende code maak is via een Start-Proces commando een hash file aan (openssl1.1.1 en openSSL3 geven dezelfde output)
code:
1
| .\openssl.exe dgst -sha512 -sign priv.pem -out output.txt body.txt |
Vervolgens met
code:
1
| .\openssl.exe dgst -sha512 -prverify priv.pem -signature output.txt body.txt |
Krijgt ik verification OK
Met commando openssl.exe dgst -sha512 -hex kan ik de verify niet uitvoeren maar dat staat ook in de documentatie dat dit niet werkt.
Maar ik voer dus in mijn script volgende uit:
code:
1
| .\openssl.exe dgst -hex -sha512 -sign priv.pem -out output.txt body.txt |
Output.txt bevat wat additionele tekst als in RSA-SHA2-512(body.txt)= hexkey
Hex key is 512 karakters lang want aan de verwachting voldoet
Maar nu, volgende de transIP-API zou ik deze hexkey naar base64 moeten omzetten.
Dat geeft dan vervolgens een 'string' van 1369 karakters (laatste 2 zijn ==)
Maar het gekke is als ik die van Notepad++ Base64 decode doe dit totaal niet meer lijkt op de originele data. UTF8 encoding lost dit op.
Maar ook in het voorbeeld van TransIP is mijn base64 string ook +/- dubbel in lengteSHA512 string(begin hexkey): 173211a1d2984b
Base64 origineel(begin):MQA3ADMAMgAxADEAYQAxAGQAMgA5ADgANABiAG
Base64 decode(begin van lange string spaties zijn in n++ NUL vakjes): 1 7 3 2 1 1 a 1 d 2 9 8 4 b opgelost met UTF8
Code om van SHA512 naar base64 te gaan
code:
1
2
3
4
5
6
7
| $signature = Get-Content "output.txt" -Raw $startchar = $signature.Length -514 $signature = $signature.Substring($startchar,512) $signature = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($signature)) $authURL = 'https://api.transip.nl/v6/auth' $Headers = @{ Authorization = $signature } $token = Invoke-WebRequest -URI $authURL -Headers $Headers -Body $Authbody -Method Post |
Als ik alles uitvoer in visual studio Code dan krijg ik de volgende error:
code:
1
2
3
4
5
6
| Invoke-WebRequest: TransIP.ps1:51:14 Line | 51 | … $token = Invoke-WebRequest -Uri $authURL -Headers $Headers -Body $ … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The format of value 'Signature: | MwAyADEAMQBhADEAZAADYADQAKAA==' is invalid. |
Als ik de invoke-webrequest vanuit los Powershell scherm doet krijg ik een 401 (niet gemachtigd retour), dan weet in ieder geval dat er iets niet klopt in mijn waardes maar hier lijkt er iets anders mis te gaan.
Zie ik iets basaal over het hoofd en zo ja wat
Taal fouten inbegrepen ;)
Mijn AI Art YouTube kanaal