aboutsummaryrefslogtreecommitdiffstats
path: root/trie
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-24 22:14:03 +0800
committerobscuren <geffobscura@gmail.com>2015-03-24 22:14:03 +0800
commitbbe795455a13c57dbba64c1082b618e791af46ce (patch)
tree7eebc9ebb2f0365a7897e384fab4973122ebd2aa /trie
parentd6da533345a397c3ea6c2bafe16e8c24765aa719 (diff)
downloaddexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar.gz
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar.bz2
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar.lz
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar.xz
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.tar.zst
dexon-bbe795455a13c57dbba64c1082b618e791af46ce.zip
Secure trie shakey / key matching
Diffstat (limited to 'trie')
-rw-r--r--trie/secure_trie.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/trie/secure_trie.go b/trie/secure_trie.go
index b9fa376b8..f7a1950e5 100644
--- a/trie/secure_trie.go
+++ b/trie/secure_trie.go
@@ -2,6 +2,8 @@ package trie
import "github.com/ethereum/go-ethereum/crypto"
+var keyPrefix = []byte("secure-key-")
+
type SecureTrie struct {
*Trie
}
@@ -11,7 +13,10 @@ func NewSecure(root []byte, backend Backend) *SecureTrie {
}
func (self *SecureTrie) Update(key, value []byte) Node {
- return self.Trie.Update(crypto.Sha3(key), value)
+ shaKey := crypto.Sha3(key)
+ self.Trie.cache.Put(append(keyPrefix, shaKey...), key)
+
+ return self.Trie.Update(shaKey, value)
}
func (self *SecureTrie) UpdateString(key, value string) Node {
return self.Update([]byte(key), []byte(value))
@@ -34,3 +39,7 @@ func (self *SecureTrie) DeleteString(key string) Node {
func (self *SecureTrie) Copy() *SecureTrie {
return &SecureTrie{self.Trie.Copy()}
}
+
+func (self *SecureTrie) GetKey(shaKey []byte) []byte {
+ return self.Trie.cache.Get(append(keyPrefix, shaKey...))
+}