Merge "ref: Make principal tool print "EXPIRED" in dumpblessings."
diff --git a/cmd/principal/main.go b/cmd/principal/main.go
index b14da0e..f2a3de6 100644
--- a/cmd/principal/main.go
+++ b/cmd/principal/main.go
@@ -127,7 +127,12 @@
if err != nil {
return fmt.Errorf("failed to decode certificate chains: %v", err)
}
- fmt.Printf("Blessings : %v\n", blessings)
+ // If the Blessings are expired, print a message saying so.
+ expiredMessage := ""
+ if exp := blessings.Expiry(); !exp.IsZero() && exp.Before(time.Now()) {
+ expiredMessage = " [EXPIRED]"
+ }
+ fmt.Printf("Blessings : %v%s\n", blessings, expiredMessage)
fmt.Printf("PublicKey : %v\n", blessings.PublicKey())
fmt.Printf("Certificate chains : %d\n", len(wire.CertificateChains))
for idx, chain := range wire.CertificateChains {
@@ -1206,7 +1211,7 @@
if err != nil {
return nil, fmt.Errorf("failed to parse caveats: %v", err)
}
- if expiry > 0 {
+ if expiry != 0 {
ecav, err := security.NewExpiryCaveat(time.Now().Add(expiry))
if err != nil {
return nil, fmt.Errorf("failed to create expiration caveat: %v", err)
diff --git a/cmd/principal/principal_v23_test.go b/cmd/principal/principal_v23_test.go
index 4a4f686..734b4d1 100644
--- a/cmd/principal/principal_v23_test.go
+++ b/cmd/principal/principal_v23_test.go
@@ -536,6 +536,22 @@
}
}
{
+ // If the Blessings are expired, dumpBlessings should print so.
+ redirect(t, bin.Start("bless", "--for=-1s", bobDir, "friend"), tmpfile)
+ got := removeCaveats(removePublicKeys(bin.Start("dumpblessings", tmpfile).Output()))
+ want := `Blessings : alice/friend [EXPIRED]
+PublicKey : XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
+Certificate chains : 1
+Chain #0 (2 certificates). Root certificate public key: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
+ Certificate #0: alice with 0 caveats
+ Certificate #1: friend with 1 caveat
+ (0) ExpiryCaveat
+`
+ if got != want {
+ t.Errorf("Got\n%vWant\n%v", got, want)
+ }
+ }
+ {
// But not if --for=0
var buf bytes.Buffer
if err := bin.Start("bless", "--for=0", bobDir, "friend").Wait(os.Stdout, &buf); err == nil {