31
31
32
32
@ Slf4j
33
33
public class DownloadedFilesVerification {
34
- public static void verify (String directory , String fileName , List <String > keyIds , boolean ignoreSigningKeyInResourcesCheck ) throws IOException {
34
+ public static void verify (String directory ,
35
+ String dataFileName ,
36
+ List <String > keyIds ,
37
+ boolean ignoreSigningKeyInResourcesCheck ) throws IOException {
35
38
String signingKeyId = getSigningKeyId (directory );
36
39
checkArgument (keyIds .contains (signingKeyId ), "signingKeyId not matching any of the provided keys" );
37
40
String signingKey = getSigningKey (directory , signingKeyId );
41
+ File sigFile = Path .of (directory , dataFileName + ASC_EXTENSION ).toFile (); // E.g. Bisq-2.1.3.dmg.asc
42
+ File dataFile = Path .of (directory , dataFileName ).toFile (); // E.g. Bisq2.dmg
38
43
39
44
// We require that the signing key is provided on the Bisq webpage
40
- DownloadedFilesVerification . checkIfSigningKeyMatchesKeyFromWebpage (directory , signingKeyId , signingKey );
45
+ checkSignatureWithKeyFromWebpage (directory , signingKeyId , signingKey , sigFile , dataFile );
41
46
42
47
if (!ignoreSigningKeyInResourcesCheck ) {
43
- DownloadedFilesVerification . checkIfSigningKeyMatchesKeyInResources ( signingKeyId , signingKey );
48
+ checkSignatureWithKeyInResources ( directory , signingKeyId , signingKey , sigFile , dataFile );
44
49
}
45
50
46
- File signingKeyFile = Path .of (directory , signingKeyId + ASC_EXTENSION ).toFile ();
47
- File sigFile = Path .of (directory , fileName + ASC_EXTENSION ).toFile ();
48
- File dataFile = Path .of (directory , fileName ).toFile ();
49
- checkArgument (PgPUtils .isSignatureValid (signingKeyFile , sigFile , dataFile ), "Signature verification failed" );
51
+ String signingKeyFileName = signingKeyId + ASC_EXTENSION ;
52
+ File signingKeyFile = Path .of (directory , signingKeyId + ASC_EXTENSION ).toFile (); // E.g. E222AA02.asc
53
+ checkArgument (PgPUtils .isSignatureValid (signingKeyFile , sigFile , dataFile ), "Signature verification failed: signingKeyFileName=" + signingKeyFileName );
50
54
log .info ("signature verification succeeded" );
51
55
}
52
- private static void checkIfSigningKeyMatchesKeyFromWebpage (String directory , String keyId , String signingKey ) throws IOException {
53
- String keyFileName = FROM_BISQ_WEBPAGE_PREFIX + keyId + ASC_EXTENSION ;
54
- String keyFromWebpage = FileUtils .readStringFromFile (Path .of (directory , keyFileName ).toFile ());
55
- checkArgument (keyFromWebpage .equals (signingKey ),
56
- "Key from webpage not matching signing key. keyFromWebpage=" + keyFromWebpage + "; signingKey=" + signingKey );
57
- }
58
56
57
+ private static void checkSignatureWithKeyFromWebpage (String directory ,
58
+ String signingKeyId ,
59
+ String signingKey ,
60
+ File sigFile ,
61
+ File dataFile ) {
62
+
63
+ String signingKeyFileName = FROM_BISQ_WEBPAGE_PREFIX + signingKeyId + ASC_EXTENSION ;
64
+ File signingKeyFile = Path .of (directory , signingKeyFileName ).toFile (); // E.g. from_bisq_webpage_E222AA02.asc
65
+ checkArgument (PgPUtils .isSignatureValid (signingKeyFile , sigFile , dataFile ), "Signature verification failed: signingKeyFileName=" + signingKeyFileName );
66
+ }
59
67
60
- private static void checkIfSigningKeyMatchesKeyInResources (String keyId , String signingKey ) throws IOException {
61
- String keyFromResources = FileUtils .readStringFromResource ("keys/" + keyId + ASC_EXTENSION );
62
- checkArgument (keyFromResources .equals (signingKey ),
63
- "Key from resources not matching signing key. keyFromResources=" + keyFromResources + "; signingKey=" + signingKey );
68
+ private static void checkSignatureWithKeyInResources (String directory ,
69
+ String signingKeyId ,
70
+ String signingKey ,
71
+ File sigFile ,
72
+ File dataFile ) throws IOException {
73
+ String signingKeyFileName = FROM_RESOURCES_PREFIX + signingKeyId + ASC_EXTENSION ;
74
+ File signingKeyFile = Path .of (directory , signingKeyFileName ).toFile (); // E.g. from_resources_E222AA02.asc
75
+ FileUtils .resourceToFile ("keys/" + signingKeyId + ASC_EXTENSION , signingKeyFile ); // We copy key from resources to download directory
76
+ checkArgument (PgPUtils .isSignatureValid (signingKeyFile , sigFile , dataFile ), "Signature verification failed: signingKeyFileName=" + signingKeyFileName );
64
77
}
65
78
}
0 commit comments