12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /*! The various credentials used by the system.
- In each case, (P,Q) forms the MAC on the credential. This MAC is
- verifiable only by the issuing party, or if the issuing party issues a
- zero-knowledge proof of its correctness (as it does at issuing time). */
- use curve25519_dalek::ristretto::RistrettoPoint;
- use curve25519_dalek::scalar::Scalar;
- /// A migration credential. This credential authorizes the holder of
- /// the Lox credential with the given id to switch from bucket
- /// from_bucket to bucket to_bucket.
- #[derive(Debug)]
- pub struct Migration {
- pub P: RistrettoPoint,
- pub Q: RistrettoPoint,
- pub lox_id: Scalar,
- pub from_bucket: Scalar,
- pub to_bucket: Scalar,
- }
- /// The main user credential in the Lox system. Its id is jointly
- /// generated by the user and the BA (bridge authority), but known only
- /// to the user. The level_since date is the Julian date of when this
- /// user was changed to the current trust level. (P_noopmigration,
- /// Q_noopmigration) are the MAC on the implicit no-op migration
- /// credential formed by the attributes (id, bucket, bucket), which
- /// authorizes the user to switch from its current bucket to the same
- /// bucket (i.e., a no-op). This can be useful for hiding from the BA
- /// whether or not the user is performing a bucket migration.
- #[derive(Debug)]
- pub struct Lox {
- pub P: RistrettoPoint,
- pub Q: RistrettoPoint,
- pub id: Scalar,
- pub bucket: Scalar,
- pub trust_level: Scalar,
- pub level_since: Scalar,
- pub invites_remaining: Scalar,
- pub invites_issued: Scalar,
- pub P_noopmigration: RistrettoPoint,
- pub Q_noopmigration: RistrettoPoint,
- }
|