Initial support to remove Whisper identities per #491

This commit is contained in:
Taylor Gerring 2015-03-16 14:46:46 -04:00
parent e5e265d024
commit 03ac0f18ae
3 changed files with 26 additions and 2 deletions

View File

@ -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 {

View File

@ -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)),

View File

@ -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)),