| 217 | return "%s%s%s" % (value, self.sep, self.signature(value)) |
| 218 | |
| 219 | def unsign(self, signed_value): |
| 220 | if self.sep not in signed_value: |
| 221 | raise BadSignature('No "%s" found in value' % self.sep) |
| 222 | value, sig = signed_value.rsplit(self.sep, 1) |
| 223 | for key in [self.key, *self.fallback_keys]: |
| 224 | if constant_time_compare(sig, self.signature(value, key)): |
| 225 | return value |
| 226 | raise BadSignature('Signature "%s" does not match' % sig) |
| 227 | |
| 228 | def sign_object(self, obj, serializer=JSONSerializer, compress=False): |
| 229 | """ |