From aad469c05d4d7c9d6c0cc32d725a4046d29fa0a0 Mon Sep 17 00:00:00 2001 From: Graham Date: Sat, 27 Mar 2021 22:54:56 +0000 Subject: [PATCH] Generate XTEA key zip reproducibly Signed-off-by: Graham --- .../org/openrs2/archive/web/CachesController.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt b/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt index 39bf334a..386df6ec 100644 --- a/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt +++ b/archive/src/main/kotlin/org/openrs2/archive/web/CachesController.kt @@ -12,6 +12,8 @@ import io.ktor.thymeleaf.ThymeleafContent import io.netty.buffer.ByteBufAllocator import org.openrs2.archive.cache.CacheExporter import org.openrs2.cache.DiskStoreZipWriter +import java.nio.file.attribute.FileTime +import java.time.Instant import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream import javax.inject.Inject @@ -91,12 +93,19 @@ public class CachesController @Inject constructor( call.respondOutputStream(contentType = ContentType.Application.Zip) { ZipOutputStream(this).use { output -> output.bufferedWriter().use { writer -> + val timestamp = FileTime.from(Instant.EPOCH) + for (key in exporter.exportKeys(id)) { if (key.mapSquare == null) { continue } - output.putNextEntry(ZipEntry("keys/${key.mapSquare}.txt")) + val entry = ZipEntry("keys/${key.mapSquare}.txt") + entry.creationTime = timestamp + entry.lastAccessTime = timestamp + entry.lastModifiedTime = timestamp + + output.putNextEntry(entry) writer.write(key.key.k0.toString()) writer.write('\n'.toInt())