mirror of
https://github.com/monero-project/monero.git
synced 2026-01-03 16:27:50 -08:00
rct amount key modified as per luigi1111's recommendations
This allows the key to be not the same for two outputs sent to the same address (eg, if you pay yourself, and also get change back). Also remove the key amounts lists and return parameters since we don't actually generate random ones, so we don't need to save them as we can recalculate them when needed if we have the correct keys.
This commit is contained in:
@@ -741,28 +741,18 @@ void fe_mul(fe h,const fe f,const fe g)
|
||||
|
||||
//Elliptic Curve Diffie Helman: encodes and decodes the amount b and mask a
|
||||
// where C= aG + bH
|
||||
void ecdhEncodeFromSharedSecret(ecdhTuple & unmasked, const key & sharedSec1) {
|
||||
void ecdhEncode(ecdhTuple & unmasked, const key & sharedSec) {
|
||||
key sharedSec1 = hash_to_scalar(sharedSec);
|
||||
key sharedSec2 = hash_to_scalar(sharedSec1);
|
||||
//encode
|
||||
sc_add(unmasked.mask.bytes, unmasked.mask.bytes, sharedSec1.bytes);
|
||||
sc_add(unmasked.amount.bytes, unmasked.amount.bytes, sharedSec2.bytes);
|
||||
}
|
||||
void ecdhEncode(ecdhTuple & unmasked, const key & receiverPk) {
|
||||
key esk;
|
||||
//compute shared secret
|
||||
skpkGen(esk, unmasked.senderPk);
|
||||
key sharedSec1 = hash_to_scalar(scalarmultKey(receiverPk, esk));
|
||||
ecdhEncodeFromSharedSecret(unmasked, sharedSec1);
|
||||
}
|
||||
void ecdhDecodeFromSharedSecret(ecdhTuple & masked, const key & sharedSec1) {
|
||||
void ecdhDecode(ecdhTuple & masked, const key & sharedSec) {
|
||||
key sharedSec1 = hash_to_scalar(sharedSec);
|
||||
key sharedSec2 = hash_to_scalar(sharedSec1);
|
||||
//decode
|
||||
sc_sub(masked.mask.bytes, masked.mask.bytes, sharedSec1.bytes);
|
||||
sc_sub(masked.amount.bytes, masked.amount.bytes, sharedSec2.bytes);
|
||||
}
|
||||
void ecdhDecode(ecdhTuple & masked, const key & receiverSk) {
|
||||
//compute shared secret
|
||||
key sharedSec1 = hash_to_scalar(scalarmultKey(masked.senderPk, receiverSk));
|
||||
ecdhDecodeFromSharedSecret(masked, sharedSec1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user