You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Both Python and WASM bindings mirror the Rust API structure with the same modules:
88
-
-`arithmetic` - Basic arithmetic operations on scalars and group elements
89
-
-`elgamal` - ElGamal encryption and decryption
90
-
-`primitives` - Core PEP operations (`rekey`, `reshuffle`, `rerandomize`)
91
-
-`high_level` - User-friendly API with `Pseudonym` and `DataPoint` classes
92
-
-`distributed` - Distributed n-PEP operations with multiple servers
88
+
89
+
| Module | Description |
90
+
|--------|-------------|
91
+
|`arithmetic`| Basic arithmetic operations on scalars and group elements |
92
+
|`elgamal`| ElGamal encryption and decryption primitives |
93
+
|`primitives`| Core PEP operations (`rekey`, `reshuffle`, `rerandomize`) |
94
+
|`high_level`| User-friendly API with `Pseudonym` and `DataPoint` classes |
95
+
|`distributed`| Distributed n-PEP operations with multiple servers |
96
+
97
+
For detailed API documentation, see [docs.rs/libpep](https://docs.rs/libpep).
93
98
94
99
## Applications
95
100
@@ -105,9 +110,17 @@ The factor `k` is typically tied to the *current session of a user*, which we ca
105
110
When the same encrypted pseudonym is used multiple times, rerandomize is applied every time.
106
111
This way a binary compare of the encrypted pseudonym will not leak any information.
107
112
108
-
## Implementation
113
+
## Security and Implementation
114
+
115
+
This library uses the Ristretto encoding on Curve25519, implemented in the [`curve25519-dalek` crate](https://docs.rs/curve25519-dalek/latest/curve25519_dalek/), with [patches by Signal](https://github.com/signalapp/curve25519-dalek) for _lizard_ encoding of arbitrary 16 byte values into ristretto points.
109
116
110
-
This library is using the Ristretto encoding on Curve25519, implemented in the [`curve25519-dalek` crate](https://docs.rs/curve25519-dalek/latest/curve25519_dalek/), but with [patches by Signal](https://github.com/signalapp/curve25519-dalek) for _lizard_ encoding of arbitrary 16 byte values into ristretto points.
117
+
### Security Considerations
118
+
- All cryptographic operations use constant-time algorithms to prevent timing attacks
119
+
- Random number generation uses cryptographically secure sources
120
+
- The library has been designed for production use but hasn't yet undergone formal security auditing
121
+
- Users should properly secure private keys and avoid exposing sensitive cryptographic material
122
+
123
+
### Arithmetic Rules
111
124
There are a number of arithmetic rules for scalars and group elements: group elements can be added and subtracted from each other.
112
125
Scalars support addition, subtraction, and multiplication.
113
126
Division can be done by multiplying with the inverse (using `s.invert()` for non-zero scalar `s`).
@@ -132,13 +145,27 @@ Depending on the use case, you can choose the appropriate level of abstraction.
0 commit comments