[Android] Recompute expiration of self-signed certificate

Robert Stone git at videolan.org
Thu Dec 5 09:16:49 UTC 2024


vlc-android | branch: master | Robert Stone <rhstone at gmail.com> | Thu Nov 14 20:28:00 2024 -0800| [deb5437ce384b4cfe136bda465ead9436c5c8c87] | committer: Nicolas Pomepuy

Recompute expiration of self-signed certificate

> https://code.videolan.org/videolan/vlc-android/commit/deb5437ce384b4cfe136bda465ead9436c5c8c87
---

 .../java/org/videolan/vlc/webserver/RemoteAccessServer.kt   | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt b/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
index c1004f0fe0..322e623f1a 100644
--- a/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
+++ b/application/webserver/src/main/java/org/videolan/vlc/webserver/RemoteAccessServer.kt
@@ -126,8 +126,8 @@ import java.security.SecureRandom
 import java.security.Security
 import java.security.cert.X509Certificate
 import java.time.Duration
+import java.util.Calendar
 import java.util.Collections
-import java.util.Date
 import java.util.Locale
 
 
@@ -326,8 +326,17 @@ class RemoteAccessServer(private val context: Context) : PlaybackService.Callbac
         //If needed, we can add a setting to let the user revoking the certificate by deleting the keystore file to start all this process over
         val cert: X509Certificate
         try {
+            val cal = Calendar.getInstance()
+            // Start Date
+            // Roll back the date by one day to prevent issues with client clock time sync
+            cal.roll(Calendar.DAY_OF_MONTH, false)
+            val notBefore = cal.time
+            // Expiration Date
+            cal.add(Calendar.YEAR, 25)
+            val notAfter = cal.time
+            // Build Certificate
             val owner = X500Name("CN=vlc-android, O=VideoLAN, L=Paris, C=France")
-            val builder: X509v3CertificateBuilder = JcaX509v3CertificateBuilder(owner, BigInteger(64, random), Date(System.currentTimeMillis() - 86400000L), Date(System.currentTimeMillis() + (25 * 86400000L)), owner, keypair.public)
+            val builder: X509v3CertificateBuilder = JcaX509v3CertificateBuilder(owner, BigInteger(64, random), notBefore, notAfter, owner, keypair.public)
 
             val signer: ContentSigner = JcaContentSignerBuilder("SHA256WithRSAEncryption").build(privateKey)
             val certHolder: X509CertificateHolder = builder.build(signer)



More information about the Android mailing list