diff --git a/security/caveat.go b/security/caveat.go
index f8e31cd..2603154 100644
--- a/security/caveat.go
+++ b/security/caveat.go
@@ -289,10 +289,10 @@
 	return nil
 }
 
-func (c *publicKeyThirdPartyCaveatParam) discharger(cxt *context.T) (PublicKey, error) {
+func (c *publicKeyThirdPartyCaveatParam) discharger(ctx *context.T) (PublicKey, error) {
 	key, err := UnmarshalPublicKey(c.DischargerKey)
 	if err != nil {
-		return nil, verror.New(errCantUnmarshalDischargeKey, cxt, fmt.Sprintf("%T", *c), err)
+		return nil, verror.New(errCantUnmarshalDischargeKey, ctx, fmt.Sprintf("%T", *c), err)
 	}
 	return key, nil
 }
@@ -309,9 +309,9 @@
 	return hash.sum(msg)
 }
 
-func (d *publicKeyDischarge) verify(cxt *context.T, key PublicKey) error {
+func (d *publicKeyDischarge) verify(ctx *context.T, key PublicKey) error {
 	if !bytes.Equal(d.Signature.Purpose, dischargePurpose) {
-		return verror.New(errInapproriateDischargeSignature, cxt, d.ThirdPartyCaveatId, d.Signature.Purpose)
+		return verror.New(errInapproriateDischargeSignature, ctx, d.ThirdPartyCaveatId, d.Signature.Purpose)
 	}
 	digest := d.digest(key.hash())
 	cachekey, err := d.signatureCacheKey(digest, key, d.Signature)
@@ -319,7 +319,7 @@
 		return nil
 	}
 	if !d.Signature.Verify(key, digest) {
-		return verror.New(errBadDischargeSignature, cxt, d.ThirdPartyCaveatId)
+		return verror.New(errBadDischargeSignature, ctx, d.ThirdPartyCaveatId)
 	}
 	dischargeSignatureCache.cache([][]byte{cachekey})
 	return nil
