After compiling mender-artifact from source for Linux and Windows, I noticed that I cannot validate a signed image using the Windows binary. From what I can tell this is related to the use of “archive/tar” and how paths are handled between operating systems.
Behavior in Windows
get-wmiobject -class win32_operatingsystem
SystemDirectory : C:\WINDOWS\system32
Organization : $COMAPANY
BuildNumber : 17763
RegisteredUser : $COMPANY
SerialNumber : $SERIAL
Version : 10.0.17763
PS C:\path\mender-artifact-windows.exe --version
mender-artifact version 62d044b
PS C:\path\mender-artifact-windows.exe validate -k .\pub.key .\signed.mender
reader: error getting header Payload number: can not get Payload order from tar path
Behavior in Ubuntu 16.04 x64
$uname -a
Linux $MACHINE 4.4.0-17763-Microsoft #379-Microsoft Wed Mar 06 19:16:00 PST 2019 x86_64 x86_64 x86_64 GNU/Linux
$ ./mender-artifact --version
mender-artifact version 62d044b
$ ./mender-artifact validate -k /mnt/c/path/pub.key /mnt/c/path/signed.mender
Artifact file ‘/mnt/c/path/signed.mender’ validated successfully