Verify confirmed hmac in web display, showing status as either 'confirmed'
authorPeter Palfrader <peter@palfrader.org>
Tue, 16 Sep 2008 20:11:07 +0000 (22:11 +0200)
committerPeter Palfrader <peter@palfrader.org>
Tue, 16 Sep 2008 20:11:07 +0000 (22:11 +0200)
(which now means also verified, i.e. it will make it to the host), or
'invalid'.

debian/changelog
update.cgi

index 0926b9c..955d81e 100644 (file)
@@ -1,3 +1,11 @@
+userdir-ldap-cgi (0.3.22) unstable; urgency=low
+
+  * Verify confirmed hmac in web display, showing status as either 'confirmed'
+    (which now means also verified, i.e. it will make it to the host), or
+    'invalid'.
+
+ -- Peter Palfrader <weasel@debian.org>  Tue, 16 Sep 2008 22:10:27 +0200
+
 userdir-ldap-cgi (0.3.21) unstable; urgency=low
 
   * Slightly change find call in cronjob.
index 8e74b3e..f78a7eb 100755 (executable)
@@ -127,7 +127,15 @@ if (!($query->param('doupdate'))) {
       $sudopassword .= "<tr><td>Unparseable line!</td></tr>\n";
       next;
     }
-    $status =~ s/:.*//; # remove verification hmac, it's just noise here.
+    if ($status =~ /^confirmed:/) {
+      my $data = join(':', 'password-is-confirmed', $uuid, $hosts, $crypted);
+      my $hmac = hmac_sha1_hex( $data, $hmac_key);
+      if ($status eq "confirmed:$hmac") {
+        $status = 'confirmed';
+      } else {
+        $status = 'INVALID';
+      }
+    }
     my $e = "<tr><td>".CGI::escapeHTML($hosts)."</td>
                  <td>".CGI::escapeHTML($status)."</td>
                  <td><small>not shown</small></td>