From f3f940408116d2d0d822b2c5cde4c60595a8d343 Mon Sep 17 00:00:00 2001 From: Andrea Torlaschi Date: Mon, 1 Aug 2016 23:19:58 +0200 Subject: [PATCH] HkpKeyserver: Fix parsing expiration status --- .../keychain/keyimport/HkpKeyserver.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java index 5e3d2ebc6..fa1622f71 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java @@ -19,12 +19,12 @@ package org.sufficientlysecure.keychain.keyimport; - import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; + import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.pgp.PgpHelper; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; @@ -310,7 +310,17 @@ public class HkpKeyserver extends Keyserver { } try { - entry.setRevoked(matcher.group(6).contains("r")); + boolean expired = false; + String expiration = matcher.group(5); + if (!expiration.isEmpty()) { + final GregorianCalendar currentGreg = new GregorianCalendar(TimeZone.getTimeZone("UTC")); + final long expirationDate = Long.parseLong(expiration); + final GregorianCalendar tmpGreg = new GregorianCalendar(TimeZone.getTimeZone("UTC")); + tmpGreg.setTimeInMillis(expirationDate * 1000); + expired = currentGreg.compareTo(tmpGreg) >= 0; + } + + entry.setRevoked(expired || matcher.group(6).contains("r")); entry.setExpired(matcher.group(6).contains("e")); } catch (NullPointerException e) { Log.e(Constants.TAG, "Check for revocation or expiry failed.", e);