forked from cerc-io/plugeth
Initial support to remove Whisper identities per #491
This commit is contained in:
parent
e5e265d024
commit
03ac0f18ae
13
rpc/api.go
13
rpc/api.go
@ -9,11 +9,11 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/core/types"
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
"github.com/ethereum/go-ethereum/common"
|
|
||||||
"github.com/ethereum/go-ethereum/event"
|
"github.com/ethereum/go-ethereum/event"
|
||||||
"github.com/ethereum/go-ethereum/event/filter"
|
"github.com/ethereum/go-ethereum/event/filter"
|
||||||
"github.com/ethereum/go-ethereum/state"
|
"github.com/ethereum/go-ethereum/state"
|
||||||
@ -371,6 +371,11 @@ func (p *EthereumApi) NewWhisperIdentity(reply *interface{}) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *EthereumApi) RemoveWhisperIdentity(args *WhisperIdentityArgs, reply *interface{}) error {
|
||||||
|
*reply = p.xeth().Whisper().RemoveIdentity(args.Identity)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *EthereumApi) NewWhisperFilter(args *WhisperFilterArgs, reply *interface{}) error {
|
func (p *EthereumApi) NewWhisperFilter(args *WhisperFilterArgs, reply *interface{}) error {
|
||||||
var id int
|
var id int
|
||||||
opts := new(xeth.Options)
|
opts := new(xeth.Options)
|
||||||
@ -751,6 +756,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
|
|||||||
return p.WhisperPost(args, reply)
|
return p.WhisperPost(args, reply)
|
||||||
case "shh_newIdentity":
|
case "shh_newIdentity":
|
||||||
return p.NewWhisperIdentity(reply)
|
return p.NewWhisperIdentity(reply)
|
||||||
|
case "shh_removeIdentity":
|
||||||
|
args := new(WhisperIdentityArgs)
|
||||||
|
if err := json.Unmarshal(req.Params, &args); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return p.RemoveWhisperIdentity(args, reply)
|
||||||
case "shh_hasIdentity":
|
case "shh_hasIdentity":
|
||||||
args := new(WhisperIdentityArgs)
|
args := new(WhisperIdentityArgs)
|
||||||
if err := json.Unmarshal(req.Params, &args); err != nil {
|
if err := json.Unmarshal(req.Params, &args); err != nil {
|
||||||
|
@ -116,6 +116,15 @@ func (self *Whisper) GetIdentity(key *ecdsa.PublicKey) *ecdsa.PrivateKey {
|
|||||||
return self.keys[string(crypto.FromECDSAPub(key))]
|
return self.keys[string(crypto.FromECDSAPub(key))]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Whisper) RemoveIdentity(key *ecdsa.PublicKey) bool {
|
||||||
|
k := string(crypto.FromECDSAPub(key))
|
||||||
|
if _, ok := self.keys[k]; ok {
|
||||||
|
delete(self.keys, k)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Whisper) Watch(opts Filter) int {
|
func (self *Whisper) Watch(opts Filter) int {
|
||||||
return self.filters.Install(filter.Generic{
|
return self.filters.Install(filter.Generic{
|
||||||
Str1: string(crypto.FromECDSAPub(opts.To)),
|
Str1: string(crypto.FromECDSAPub(opts.To)),
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/logger"
|
"github.com/ethereum/go-ethereum/logger"
|
||||||
"github.com/ethereum/go-ethereum/whisper"
|
"github.com/ethereum/go-ethereum/whisper"
|
||||||
)
|
)
|
||||||
@ -63,6 +63,10 @@ func (self *Whisper) HasIdentity(key string) bool {
|
|||||||
return self.Whisper.HasIdentity(crypto.ToECDSAPub(common.FromHex(key)))
|
return self.Whisper.HasIdentity(crypto.ToECDSAPub(common.FromHex(key)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Whisper) RemoveIdentity(key string) bool {
|
||||||
|
return self.Whisper.RemoveIdentity(crypto.ToECDSAPub(common.FromHex(key)))
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Whisper) Watch(opts *Options) int {
|
func (self *Whisper) Watch(opts *Options) int {
|
||||||
filter := whisper.Filter{
|
filter := whisper.Filter{
|
||||||
To: crypto.ToECDSAPub(common.FromHex(opts.To)),
|
To: crypto.ToECDSAPub(common.FromHex(opts.To)),
|
||||||
|
Loading…
Reference in New Issue
Block a user