From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 25 Feb 2013 08:40:30 -0500
Subject: [PATCH] Merge pull request #75 from thefake/master

---
 src/com/gitblit/authority/UserCertificateModel.java |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/authority/UserCertificateModel.java b/src/com/gitblit/authority/UserCertificateModel.java
index f5d71bb..6c69a93 100644
--- a/src/com/gitblit/authority/UserCertificateModel.java
+++ b/src/com/gitblit/authority/UserCertificateModel.java
@@ -27,6 +27,7 @@
 import com.gitblit.Constants;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.ArrayUtils;
+import com.gitblit.utils.StringUtils;
 import com.gitblit.utils.TimeUtils;
 import com.gitblit.utils.X509Utils.RevocationReason;
 
@@ -42,14 +43,20 @@
 		}
 		
 		public void update(Config config) {
-			if (expires != null) {
+			if (expires == null) {
+				config.unset("user",  user.username, "expires");
+			} else {
 				SimpleDateFormat df = new SimpleDateFormat(Constants.ISO8601);
 				config.setString("user", user.username, "expires", df.format(expires));
 			}
-			if (notes != null) {
+			if (StringUtils.isEmpty(notes)) {
+				config.unset("user",  user.username, "notes");
+			} else {
 				config.setString("user", user.username, "notes", notes);
 			}
-			if (!ArrayUtils.isEmpty(revoked)) {
+			if (ArrayUtils.isEmpty(revoked)) {
+				config.unset("user",  user.username, "revoked");
+			} else {
 				config.setStringList("user", user.username, "revoked", revoked);
 			}
 		}
@@ -64,6 +71,16 @@
 				revoked = new ArrayList<String>();
 			}
 			revoked.add(serial.toString() + ":" + reason.ordinal());
+			expires = null;
+			for (X509Certificate cert : certs) {
+				if (!isRevoked(cert.getSerialNumber())) {
+					if (!isExpired(cert.getNotAfter())) {
+						if (expires == null || cert.getNotAfter().after(expires)) {
+							expires = cert.getNotAfter();
+						}
+					}
+				}
+			}
 		}
 		
 		public boolean isRevoked(BigInteger serial) {

--
Gitblit v1.9.1