Exemple #1
0
 //Generate Signing Keys 
 //This function is called by each participant in 
 //A ring multisignature transaction. 
 //The participant will send the returned parameters 
 //to whomever is managing the transaction. 
 //returns a, aG, aHP and I 
 tuple<key, key, key, key> InitiateRMS(key x) {
     key I = scalarmultKey(hashToPoint(scalarmultBase(x)), x);
     key a, aG;
     skpkGen(a, aG);
     key aHP = scalarmultKey(hashToPoint(scalarmultBase(x)), a);
     return make_tuple(a, aG, aHP, I);
 }
 key commit(xmr_amount amount, key mask) {
     mask = scalarmultBase(mask);
     key am = d2h(amount);
     key bH = scalarmultH(am);
     addKeys(mask, mask, bH);
     return mask;
 }
Exemple #3
0
 key commit(xmr_amount amount, const key &mask) {
     key c = scalarmultBase(mask);
     key am = d2h(amount);
     key bH = scalarmultH(am);
     addKeys(c, c, bH);
     return c;
 }
 key zeroCommit(xmr_amount amount) {
     key mask = identity();
     mask = scalarmultBase(mask);
     key am = d2h(amount);
     key bH = scalarmultH(am);
     addKeys(mask, mask, bH);
     return mask;
 }
 //addKeys1
 //aGB = aG + B where a is a scalar, G is the basepoint, and B is a point
 void addKeys1(key &aGB, const key &a, const key & B) {
     key aG = scalarmultBase(a);
     addKeys(aGB, aG, B);
 }
 //generates a random secret and corresponding public key
 tuple<key, key>  skpkGen() {
     key sk = skGen();
     key pk = scalarmultBase(sk);
     return make_tuple(sk, pk);
 }
 //generates a random secret and corresponding public key
 void skpkGen(key &sk, key &pk) {
     skGen(sk);
     scalarmultBase(pk, sk);
 }
 //generates a random curve point (for testing)
 key  pkGen() {
     key sk = skGen();
     key pk = scalarmultBase(sk);
     return pk;
 }