diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-10-23 16:10:17 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-10-23 16:10:17 +0100 |
commit | 59f0d4b57448ffe9c501571a40d6a45a6ccb5ccb (patch) | |
tree | f161e7949facdccb39d15140dcabaf6afcd139da /src/ringct/rctOps.cpp | |
parent | Merge pull request #1229 (diff) | |
download | monero-59f0d4b57448ffe9c501571a40d6a45a6ccb5ccb.tar.xz |
ringct: some more small optimizations
Diffstat (limited to 'src/ringct/rctOps.cpp')
-rw-r--r-- | src/ringct/rctOps.cpp | 59 |
1 files changed, 11 insertions, 48 deletions
diff --git a/src/ringct/rctOps.cpp b/src/ringct/rctOps.cpp index 239168388..cf55897a7 100644 --- a/src/ringct/rctOps.cpp +++ b/src/ringct/rctOps.cpp @@ -37,50 +37,12 @@ namespace rct { //Various key initialization functions - //Creates a zero scalar - void zero(key &zero) { - memset(&zero, 0, 32); - } - - //Creates a zero scalar - key zero() { - static const key z = { {0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 , 0x00, 0x00, 0x00,0x00 } }; - return z; - } - - //Creates a zero elliptic curve point - void identity(key &Id) { - Id[0] = (unsigned char)(0x01); - memset(Id.bytes+1, 0, 31); - } - - //Creates a zero elliptic curve point - key identity() { - key Id; - Id[0] = (unsigned char)(0x01); - memset(Id.bytes+1, 0, 31); - return Id; - } - - //copies a scalar or point - void copy(key &AA, const key &A) { - memcpy(&AA, &A, 32); - } - - //copies a scalar or point - key copy(const key &A) { - key AA; - memcpy(&AA, &A, 32); - return AA; - } - - //initializes a key matrix; //first parameter is rows, //second is columns - keyM keyMInit(int rows, int cols) { + keyM keyMInit(size_t rows, size_t cols) { keyM rv(cols); - int i = 0; + size_t i = 0; for (i = 0 ; i < cols ; i++) { rv[i] = keyV(rows); } @@ -107,11 +69,12 @@ namespace rct { //Generates a vector of secret key //Mainly used in testing - keyV skvGen(int rows ) { + keyV skvGen(size_t rows ) { keyV rv(rows); - int i = 0; + size_t i = 0; + crypto::rand(rows * sizeof(key), (uint8_t*)&rv[0]); for (i = 0 ; i < rows ; i++) { - skGen(rv[i]); + sc_reduce32(rv[i].bytes); } return rv; } @@ -155,7 +118,7 @@ namespace rct { //generates a <secret , public> / Pedersen commitment but takes bH as input - tuple<ctkey, ctkey> ctskpkGen(key bH) { + tuple<ctkey, ctkey> ctskpkGen(const key &bH) { ctkey sk, pk; skpkGen(sk.dest, pk.dest); skpkGen(sk.mask, pk.mask); @@ -172,12 +135,12 @@ namespace rct { return mask; } - key commit(xmr_amount amount, key mask) { - mask = scalarmultBase(mask); + key commit(xmr_amount amount, const key &mask) { + key c = scalarmultBase(mask); key am = d2h(amount); key bH = scalarmultH(am); - addKeys(mask, mask, bH); - return mask; + addKeys(c, c, bH); + return c; } //generates a random uint long long (for testing) |