diff --git a/desktop/package/package.gradle b/desktop/package/package.gradle index eeab2e6c6bb..725f2b5f2b9 100644 --- a/desktop/package/package.gradle +++ b/desktop/package/package.gradle @@ -200,11 +200,8 @@ task packageInstallers { // We convert the fat jar into a deterministic one by stripping out comments with date, etc. // jar file created from https://github.com/ManfredKarrer/tools executeCmd("java -jar \"${project(':desktop').projectDir}/package/tools-1.0.jar\" ${fatJarFolderPath}/${mainJarName}") - - // Store deterministic jar SHA-256 - ant.checksum(file: "${fatJarFolderPath}/${mainJarName}", algorithm: 'SHA-256') copy { - from "${fatJarFolderPath}/${mainJarName}.SHA-256" + from "${fatJarFolderPath}/${mainJarName}" into binariesFolderPath } @@ -483,10 +480,14 @@ task packageInstallers { executeCmd("open " + envVariableSharedFolder) } - println "The binaries are ready:" - binariesFolderPath.traverse { - println it.path + // Checksum each file in the resulting binaries folder + ant.checksum(algorithm: 'SHA-256') { + ant.fileset(dir: "${binariesFolderPath}") } + + println "The binaries and checksums are ready:" + FileCollection collection = layout.files { binariesFolderPath.listFiles() } + collection.collect { it.path }.sort().each { println it } } } diff --git a/desktop/src/main/java/bisq/desktop/main/overlays/windows/downloadupdate/BisqInstaller.java b/desktop/src/main/java/bisq/desktop/main/overlays/windows/downloadupdate/BisqInstaller.java index c342995258c..cfd66c75edb 100644 --- a/desktop/src/main/java/bisq/desktop/main/overlays/windows/downloadupdate/BisqInstaller.java +++ b/desktop/src/main/java/bisq/desktop/main/overlays/windows/downloadupdate/BisqInstaller.java @@ -69,8 +69,9 @@ public boolean isSupportedOS() { public Optional download(String version) { String partialUrl = DOWNLOAD_HOST_URL + "v" + version + "/"; - // Get installer filename on all platforms + // Get installer + checksum filename on all platforms FileDescriptor installerFileDescriptor = getInstallerDescriptor(version, partialUrl); + FileDescriptor installerHashFileDescriptor = getInstallerHashDescriptor(installerFileDescriptor, partialUrl); // tells us which key was used for signing FileDescriptor signingKeyDescriptor = getSigningKeyDescriptor(partialUrl); @@ -83,6 +84,7 @@ public Optional download(String version) { List allFiles = Lists.newArrayList(); allFiles.add(installerFileDescriptor); + allFiles.add(installerHashFileDescriptor); allFiles.add(signingKeyDescriptor); allFiles.add(jarHashDescriptor); allFiles.addAll(keyFileDescriptors); @@ -224,6 +226,17 @@ else if (Utilities.isRedHatLinux()) .build(); } + @NotNull + private FileDescriptor getInstallerHashDescriptor(FileDescriptor installerDescriptor, String partialUrl) { + String fileName = installerDescriptor.getFileName() + ".SHA256"; + return FileDescriptor.builder() + .type(DownloadType.JAR_HASH) + .fileName(fileName) + .id(fileName) + .loadUrl(partialUrl.concat(fileName)) + .build(); + } + @NotNull private FileDescriptor getSigningKeyDescriptor(String url) { String fileName = "signingkey.asc";