From 5a246c6059365555665ef365045c677466e2c7dd Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 14 Feb 2024 17:49:56 +0100 Subject: [PATCH 1/9] clean up SMC proxy --- server/smc/proxy/proxy.go | 123 ---------------- server/smc/proxy/types/types.go | 9 -- server/smc/smccli/smccli.go | 3 +- server/smc/smccli/sproxy/action.go | 228 ----------------------------- server/smc/smccli/sproxy/sproxy.go | 87 ----------- 5 files changed, 1 insertion(+), 449 deletions(-) delete mode 100644 server/smc/proxy/proxy.go delete mode 100644 server/smc/proxy/types/types.go delete mode 100644 server/smc/smccli/sproxy/action.go delete mode 100644 server/smc/smccli/sproxy/sproxy.go diff --git a/server/smc/proxy/proxy.go b/server/smc/proxy/proxy.go deleted file mode 100644 index 9831b47f..00000000 --- a/server/smc/proxy/proxy.go +++ /dev/null @@ -1,123 +0,0 @@ -// Package proxy defines and implement the public APIs. -// -// Function names follow the convention used in URL helpers on rails: -// https://guides.rubyonrails.org/routing.html#path-and-url-helpers -// -// For the API specification look at /docs/api.md. -package proxy - -import ( - "encoding/json" - "fmt" - "net/http" - - "go.dedis.ch/hbt/server/smc/proxy/types" -) - -// NotFoundHandler defines a generic handler for 404 -func NotFoundHandler(w http.ResponseWriter, r *http.Request) { - err := types.HTTPError{ - Title: "Not found", - Code: http.StatusNotFound, - Message: "The requested endpoint was not found", - Args: map[string]interface{}{ - "url": r.URL.String(), - "method": r.Method, - }, - } - - buf, _ := json.MarshalIndent(&err, "", " ") - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("X-Content-Type-Options", "nosniff") - w.WriteHeader(http.StatusNotFound) - fmt.Fprintln(w, string(buf)) -} - -// NotAllowedHandler degines a generic handler for 405 -func NotAllowedHandler(w http.ResponseWriter, r *http.Request) { - err := types.HTTPError{ - Title: "Not allowed", - Code: http.StatusMethodNotAllowed, - Message: "The requested endpoint was not allowed", - Args: map[string]interface{}{ - "url": r.URL.String(), - "method": r.Method, - }, - } - - buf, _ := json.MarshalIndent(&err, "", " ") - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("X-Content-Type-Options", "nosniff") - w.WriteHeader(http.StatusMethodNotAllowed) - fmt.Fprintln(w, string(buf)) -} - -// InternalError sets an internal server error -func InternalError(w http.ResponseWriter, r *http.Request, err error, args map[string]interface{}) { - setHTTPError(w, r, err, http.StatusInternalServerError, "Internal server error", args) -} - -// BadRequestError sets an bad request error -func BadRequestError( - w http.ResponseWriter, - r *http.Request, - err error, - args map[string]interface{}, -) { - setHTTPError(w, r, err, http.StatusBadRequest, "bad request", args) -} - -// ForbiddenError sets a forbidden error error -func ForbiddenError( - w http.ResponseWriter, - r *http.Request, - err error, - args map[string]interface{}, -) { - setHTTPError(w, r, err, http.StatusForbidden, "not authorized / forbidden", args) -} - -// NotFoundErr sets a not found error -func NotFoundErr(w http.ResponseWriter, r *http.Request, err error, args map[string]interface{}) { - setHTTPError(w, r, err, http.StatusNotFound, "not found", args) -} - -func setHTTPError( - w http.ResponseWriter, - r *http.Request, - err error, - code uint, - title string, - args map[string]interface{}, -) { - if args == nil { - args = make(map[string]interface{}) - } - - args["error"] = err.Error() - args["url"] = r.URL.String() - args["method"] = r.Method - - errMsg := types.HTTPError{ - Title: title, - Code: code, - Message: "A problem occurred on the proxy", - Args: args, - } - - buf, _ := json.MarshalIndent(&errMsg, "", " ") - - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.Header().Set("X-Content-Type-Options", "nosniff") - w.WriteHeader(int(code)) - fmt.Fprintln(w, string(buf)) -} - -// AllowCORS defines a basic handler that adds wide Access Control Allow origin -// headers. -func AllowCORS(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Access-Control-Allow-Origin", "*") - w.Header().Set("Access-Control-Allow-Headers", "*") -} diff --git a/server/smc/proxy/types/types.go b/server/smc/proxy/types/types.go deleted file mode 100644 index 7af37a6e..00000000 --- a/server/smc/proxy/types/types.go +++ /dev/null @@ -1,9 +0,0 @@ -package types - -// HTTPError defines the standard error format -type HTTPError struct { - Title string - Code uint - Message string - Args map[string]interface{} -} diff --git a/server/smc/smccli/smccli.go b/server/smc/smccli/smccli.go index 62ca2c26..82167a52 100644 --- a/server/smc/smccli/smccli.go +++ b/server/smc/smccli/smccli.go @@ -11,7 +11,6 @@ import ( minogrpc "go.dedis.ch/dela/mino/minogrpc/controller" proxy "go.dedis.ch/dela/mino/proxy/http/controller" smc "go.dedis.ch/hbt/server/smc/smccli/controller" - "go.dedis.ch/hbt/server/smc/smccli/sproxy" ) type config struct { @@ -36,7 +35,7 @@ func runWithCfg(args []string, cfg config) error { cfg.Writer, kv.NewController(), proxy.NewController(), - sproxy.NewController(), + proxy.NewController(), minogrpc.NewController(), dkg.NewMinimal(), smc.NewSmcController(), diff --git a/server/smc/smccli/sproxy/action.go b/server/smc/smccli/sproxy/action.go deleted file mode 100644 index e6335b2d..00000000 --- a/server/smc/smccli/sproxy/action.go +++ /dev/null @@ -1,228 +0,0 @@ -package sproxy - -import ( - "encoding/hex" - "encoding/json" - "fmt" - "net/http" - "strings" - - "github.com/gorilla/mux" - "github.com/rs/zerolog/log" - "go.dedis.ch/dela" - "go.dedis.ch/dela/cli/node" - "go.dedis.ch/dela/dkg" - "go.dedis.ch/dela/mino/proxy" - eproxy "go.dedis.ch/hbt/server/smc/proxy" - "go.dedis.ch/kyber/v3" - "go.dedis.ch/kyber/v3/suites" - - "golang.org/x/xerrors" -) - -// suite is the Kyber suite for Pedersen. -var suite = suites.MustFind("Ed25519") - -const separator = ":" -const malformedEncoded = "malformed encoded: %s" - -/* -const ( - smcPath = "/smc" - smcPubKeyPath = "/smc/pubkey" - smcReencryptPath = "/smc/reencrypt" - resolveActorFailed = "failed to resolve actor, did you call listen?: %v" -) -*/ - -// RegisterAction is an action to register the HTTP handlers -// -// - implements node.ActionTemplate -type RegisterAction struct{} - -// Execute implements node.ActionTemplate. It registers the handlers using the -// default proxy from the the injector. -func (a *RegisterAction) Execute(ctx node.Context) error { - var p proxy.Proxy - err := ctx.Injector.Resolve(&p) - if err != nil { - return xerrors.Errorf("failed to resolve proxy: %v", err) - } - - router := mux.NewRouter() - - pk := &pubKeyHandler{&ctx} - router.HandleFunc("/smc/pubkey", pk.ServeHTTP).Methods("GET") - - re := &reencryptHandler{&ctx} - router.HandleFunc("/smc/reencrypt", re.ServeHTTP).Methods("POST") - - router.NotFoundHandler = http.HandlerFunc(eproxy.NotFoundHandler) - router.MethodNotAllowedHandler = http.HandlerFunc(eproxy.NotAllowedHandler) - - p.RegisterHandler("/smc/", router.ServeHTTP) - - dela.Logger.Info().Msg("proxy handlers registered") - - return nil -} - -type pubKeyHandler struct { - ctx *node.Context -} - -func (h *pubKeyHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) { - - c := *(h.ctx) - - var actor dkg.Actor - err := c.Injector.Resolve(&actor) - if err != nil { - http.Error(w, fmt.Sprintf("failed to resolve DKG actor: %v", err), - http.StatusInternalServerError) - return - } - - pk, err := actor.GetPublicKey() - if err != nil { - http.Error(w, fmt.Sprintf("failed retrieving public key: %v", err), - http.StatusInternalServerError) - return - } - - b, err := pk.MarshalBinary() - if err != nil { - http.Error(w, fmt.Sprintf("failed to marshal public key: %v", err), - http.StatusInternalServerError) - return - } - - encoder := json.NewEncoder(w) - err = encoder.Encode(b) - if err != nil { - http.Error(w, fmt.Sprintf("failed to respond: %v", err), - http.StatusInternalServerError) - return - } -} - -type reencryptHandler struct { - ctx *node.Context -} - -func (h *reencryptHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - c := *(h.ctx) - - var actor dkg.Actor - err := c.Injector.Resolve(&actor) - if err != nil { - http.Error(w, fmt.Sprintf("failed to resolve DKG actor: %v", err), - http.StatusInternalServerError) - return - } - - err = r.ParseForm() - if err != nil { - log.Err(err).Msg("failed to parse form") - http.Error(w, "failed to parse form", http.StatusInternalServerError) - return - } - - // XHATENC=$(smccli --config /tmp/smc1 dkg reencrypt --encrypted ${CIPHER} --pubk ${PUBK}) - - // retrieve the public key - pubkString := r.FormValue("pubk") - pubk, err := decodePublicKey(pubkString) - if err != nil { - http.Error(w, fmt.Sprintf("failed to decode public key str: %v", err), - http.StatusInternalServerError) - return - } - - // retriev the encrypted cypher - encrypted := r.FormValue("encrypted") - k, _, err := decodeEncrypted(encrypted) - if err != nil { - http.Error(w, fmt.Sprintf("failed to decode encrypted str: %v", err), - http.StatusInternalServerError) - return - } - - // re-encrypt the message - hatenc, err := actor.Reencrypt(k, pubk) - if err != nil { - http.Error(w, fmt.Sprintf("failed to re-encrypt: %v", err), - http.StatusInternalServerError) - return - } - - // write back the re-encrypted message - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusCreated) - encoder := json.NewEncoder(w) - err = encoder.Encode(hatenc) - if err != nil { - http.Error(w, fmt.Sprintf("failed to encode response: %v", err), - http.StatusInternalServerError) - return - } - - dela.Logger.Debug().Msgf("Re-encrypted message: %v", hatenc) -} - -// ----------------------------------------------------------------------------- -// Helper functions -func decodePublicKey(str string) (kyber.Point, error) { - pkbuff, err := hex.DecodeString(str) - if err != nil { - return nil, xerrors.Errorf(malformedEncoded, str) - } - - pk := suite.Point() - err = pk.UnmarshalBinary(pkbuff) - if err != nil { - return nil, xerrors.Errorf("failed to unmarshal pk: %v", err) - } - - return pk, nil -} - -func decodeEncrypted(str string) (kyber.Point, []kyber.Point, error) { - parts := strings.Split(str, separator) - if len(parts) < 2 { - return nil, nil, xerrors.Errorf(malformedEncoded, str) - } - - // Decode K - kbuff, err := hex.DecodeString(parts[0]) - if err != nil { - return nil, nil, xerrors.Errorf("failed to decode k point: %v", err) - } - - k := suite.Point() - err = k.UnmarshalBinary(kbuff) - if err != nil { - return nil, nil, xerrors.Errorf("failed to unmarshal k point: %v", err) - } - - // Decode Cs - cs := make([]kyber.Point, 0, len(parts)-1) - for _, p := range parts[1:] { - cbuff, err := hex.DecodeString(p) - if err != nil { - return nil, nil, xerrors.Errorf("failed to decode c point: %v", err) - } - - c := suite.Point() - err = c.UnmarshalBinary(cbuff) - if err != nil { - return nil, nil, xerrors.Errorf("failed to unmarshal c point: %v", err) - } - - cs = append(cs, c) - } - - dela.Logger.Debug().Msgf("Decoded K: %v and Cs: %v", k, cs) - - return k, cs, nil -} diff --git a/server/smc/smccli/sproxy/sproxy.go b/server/smc/smccli/sproxy/sproxy.go deleted file mode 100644 index 94a8b5ab..00000000 --- a/server/smc/smccli/sproxy/sproxy.go +++ /dev/null @@ -1,87 +0,0 @@ -package sproxy - -import ( - "os" - "time" - - "go.dedis.ch/dela" - "go.dedis.ch/dela/cli" - "go.dedis.ch/dela/cli/node" - "go.dedis.ch/dela/mino/proxy" - "go.dedis.ch/dela/mino/proxy/http" - "golang.org/x/xerrors" -) - -var defaultRetry = 10 -var proxyFac func(string) proxy.Proxy = http.NewHTTP - -const defaultProxyAddr = "127.0.0.1:0" - -// NewController returns a new controller initializer -func NewController() node.Initializer { - return controller{} -} - -// controller is an initializer with a set of commands. -// -// - implements node.Initializer -type controller struct{} - -// Build implements node.Initializer. -func (m controller) SetCommands(builder node.Builder) { - builder.SetStartFlags( - cli.StringFlag{ - Name: "proxyaddr", - Usage: "the proxy address", - Required: false, - Value: defaultProxyAddr, - }, - ) -} - -// OnStart implements node.Initializer. It creates and registers a pedersen DKG. -func (m controller) OnStart(ctx cli.Flags, inj node.Injector) error { - dela.Logger.Info().Msg("Installing SMC proxy") - - proxyAddr := ctx.String("proxyaddr") - - proxyhttp := proxyFac(proxyAddr) - - inj.Inject(proxyhttp) - - go proxyhttp.Listen() - - for i := 0; i < defaultRetry && proxyhttp.GetAddr() == nil; i++ { - time.Sleep(time.Second) - } - - if proxyhttp.GetAddr() == nil { - return xerrors.Errorf("failed to start proxy server") - } - - // We assume the listen worked proprely, however it might not be the case. - // The log should inform the user about that. - dela.Logger.Info().Msgf("started proxy server on %s", proxyhttp.GetAddr().String()) - - // - // Register the smc proxy handlers - // - - register := RegisterAction{} - err := register.Execute(node.Context{ - Injector: inj, - Flags: node.FlagSet{}, - Out: os.Stdout, - }) - - if err != nil { - return xerrors.Errorf("failed to register evoting handlers: %v", err) - } - - return nil -} - -// OnStop implements node.Initializer. -func (controller) OnStop(_ node.Injector) error { - return nil -} From e9b5816e2131601ead54c58ace590c5278143b80 Mon Sep 17 00:00:00 2001 From: Jean Date: Tue, 27 Feb 2024 13:10:42 +0100 Subject: [PATCH 2/9] add web api to blockchain --- server/blockchain/web/action.go | 162 +++++++++++++++++++++++++++++++ server/blockchain/web/web.go | 87 +++++++++++++++++ server/scripts/setup.sh | 9 +- server/scripts/start_chain.sh | 8 +- server/scripts/start_registry.sh | 43 ++++++++ server/scripts/start_smc.sh | 6 -- server/scripts/stop_chain.sh | 6 +- server/scripts/stop_registry.sh | 6 ++ server/scripts/stop_smc.sh | 4 +- server/scripts/teardown.sh | 1 + server/smc/smccli/smccli.go | 3 +- 11 files changed, 311 insertions(+), 24 deletions(-) create mode 100644 server/blockchain/web/action.go create mode 100644 server/blockchain/web/web.go create mode 100755 server/scripts/start_registry.sh create mode 100755 server/scripts/stop_registry.sh diff --git a/server/blockchain/web/action.go b/server/blockchain/web/action.go new file mode 100644 index 00000000..a2f0f11f --- /dev/null +++ b/server/blockchain/web/action.go @@ -0,0 +1,162 @@ +package web + +import ( + "encoding/json" + "fmt" + "net/http" + + "github.com/gorilla/mux" + "go.dedis.ch/dela" + "go.dedis.ch/dela/cli/node" + "go.dedis.ch/dela/mino/proxy" + "go.dedis.ch/kyber/v3/suites" + + "golang.org/x/xerrors" +) + +// suite is the Kyber suite for Pedersen. +var suite = suites.MustFind("Ed25519") + +const separator = ":" +const malformedEncoded = "malformed encoded: %s" + +// RegisterAction is an action to register the HTTP handlers +// +// - implements node.ActionTemplate +type RegisterAction struct{} + +// Execute implements node.ActionTemplate. It registers the handlers using the +// default proxy from the the injector. +func (a *RegisterAction) Execute(ctx node.Context) error { + var p proxy.Proxy + err := ctx.Injector.Resolve(&p) + if err != nil { + return xerrors.Errorf("failed to resolve proxy: %v", err) + } + + router := mux.NewRouter() + + s := &secretHandler{&ctx} + router.HandleFunc("/secret", s.addSecret).Methods("POST") + router.HandleFunc("/secret/list", s.listSecrets).Methods("GET") + router.HandleFunc("/secret", s.getSecret).Methods("GET") + router.HandleFunc("/secret/reveal", s.revealSecret).Methods("POST") + + router.NotFoundHandler = http.HandlerFunc(notFoundHandler) + router.MethodNotAllowedHandler = http.HandlerFunc(notAllowedHandler) + + p.RegisterHandler("/secret/", router.ServeHTTP) + + dela.Logger.Info().Msg("proxy handlers registered") + + return nil +} + +type DocID []byte + +// a secretData is a struct to hold the secret data: the document ID and the +// encrypted key to access the document +type secretData struct { + docID DocID `json:"docid"` + encryptedKey string `json:"secret"` +} + +type secretHandler struct { + ctx *node.Context +} + +// addSecret adds a new secret in the blockchain +func (s *secretHandler) addSecret(w http.ResponseWriter, r *http.Request) { + ctx := *(s.ctx) + + // Decode the request + var sec secretData + err := json.NewDecoder(r.Body).Decode(&sec) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // add the secret to the blockchain + // the secret is added to the blockchain with the document ID as the key + // and the encrypted key as the value + // TODO add it to the blockchain + dela.Logger.Info().Msgf("secret added to the blockchain: ID=%v secret=%v", sec.docID, + sec.encryptedKey) +} + +// listSecrets lists all secrets in the blockchain +func (s *secretHandler) listSecrets(w http.ResponseWriter, r *http.Request) { + ctx := *(s.ctx) + + // list all secrets from the blockchain + +} + +// getSecret gets a secret from the blockchain +func (s *secretHandler) getSecret(w http.ResponseWriter, r *http.Request) { + ctx := *(s.ctx) + + // Decode the request + var id DocID + err := json.NewDecoder(r.Body).Decode(&id) + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + // get the secret from the blockchain + // TODO + +} + +// ----------------------------------------------------------------------------- +// Helper functions + +// HTTPError defines the standard error format +type HTTPError struct { + Title string + Code uint + Message string + Args map[string]interface{} +} + +// notFoundHandler defines a generic handler for 404 +func notFoundHandler(w http.ResponseWriter, r *http.Request) { + err := HTTPError{ + Title: "Not found", + Code: http.StatusNotFound, + Message: "The requested endpoint was not found", + Args: map[string]interface{}{ + "url": r.URL.String(), + "method": r.Method, + }, + } + + buf, _ := json.MarshalIndent(&err, "", " ") + + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Header().Set("X-Content-Type-Options", "nosniff") + w.WriteHeader(http.StatusNotFound) + fmt.Fprintln(w, string(buf)) +} + +// notAllowedHandler degines a generic handler for 405 +func notAllowedHandler(w http.ResponseWriter, r *http.Request) { + err := HTTPError{ + Title: "Not allowed", + Code: http.StatusMethodNotAllowed, + Message: "The requested endpoint was not allowed", + Args: map[string]interface{}{ + "url": r.URL.String(), + "method": r.Method, + }, + } + + buf, _ := json.MarshalIndent(&err, "", " ") + + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Header().Set("X-Content-Type-Options", "nosniff") + w.WriteHeader(http.StatusMethodNotAllowed) + fmt.Fprintln(w, string(buf)) +} diff --git a/server/blockchain/web/web.go b/server/blockchain/web/web.go new file mode 100644 index 00000000..ee542cb7 --- /dev/null +++ b/server/blockchain/web/web.go @@ -0,0 +1,87 @@ +package web + +import ( + "os" + "time" + + "go.dedis.ch/dela" + "go.dedis.ch/dela/cli" + "go.dedis.ch/dela/cli/node" + "go.dedis.ch/dela/mino/proxy" + "go.dedis.ch/dela/mino/proxy/http" + "golang.org/x/xerrors" +) + +var defaultRetry = 10 +var proxyFac func(string) proxy.Proxy = http.NewHTTP + +const defaultProxyAddr = "127.0.0.1:0" + +// NewController returns a new controller initializer +func NewController() node.Initializer { + return controller{} +} + +// controller is an initializer with a set of commands. +// +// - implements node.Initializer +type controller struct{} + +// Build implements node.Initializer. +func (m controller) SetCommands(builder node.Builder) { + builder.SetStartFlags( + cli.StringFlag{ + Name: "proxyaddr", + Usage: "the proxy address", + Required: false, + Value: defaultProxyAddr, + }, + ) +} + +// OnStart implements node.Initializer. It creates and registers a pedersen DKG. +func (m controller) OnStart(ctx cli.Flags, inj node.Injector) error { + dela.Logger.Info().Msg("Installing Blockchain proxy") + + proxyAddr := ctx.String("proxyaddr") + + proxyhttp := proxyFac(proxyAddr) + + inj.Inject(proxyhttp) + + go proxyhttp.Listen() + + for i := 0; i < defaultRetry && proxyhttp.GetAddr() == nil; i++ { + time.Sleep(time.Second) + } + + if proxyhttp.GetAddr() == nil { + return xerrors.Errorf("failed to start proxy server") + } + + // We assume the listen worked proprely, however it might not be the case. + // The log should inform the user about that. + dela.Logger.Info().Msgf("started proxy server on %s", proxyhttp.GetAddr().String()) + + // + // Register the smc proxy handlers + // + + register := RegisterAction{} + err := register.Execute(node.Context{ + Injector: inj, + Flags: node.FlagSet{}, + Out: os.Stdout, + }) + + if err != nil { + return xerrors.Errorf("failed to register evoting handlers: %v", err) + } + + return nil +} + +// OnStop implements node.Initializer. +func (controller) OnStop(_ node.Injector) error { + return nil +} diff --git a/server/scripts/setup.sh b/server/scripts/setup.sh index 1e939e06..f9fe7377 100755 --- a/server/scripts/setup.sh +++ b/server/scripts/setup.sh @@ -20,12 +20,15 @@ command -v tmux >/dev/null 2>&1 || { echo >&2 "tmux is not on your PATH!"; exit tmux list-sessions 2>/dev/null | rg "^${S}" && { echo -e ${RED}"A session with the same name (${S}) already exists and will be destroyed${NC}"; tmux kill-session -t ${S};} echo -e "Create a tmux detached session: ${S} with a window 'chain'" -tmux new-session -s ${S} -n chain -d +tmux new-session -s ${S} -n blockchain -d +echo -e "Create a tmux window 'registry' in the session ${S}" +tmux new-window -t ${S} -n registry echo -e "Create a tmux window 'smc' in the session ${S}" tmux new-window -t ${S} -n smc -./start_chain.sh -t ${L} -s ${S} -w chain -./start_smc.sh -t ${L} -s ${S} -w smc +./start_chain.sh -t ${L} +./start_registry.sh -t ${L} +./start_smc.sh -t ${L} tmux send-keys -t ${S}:smc.0 "./publish_roster.sh" C-m # attach to session diff --git a/server/scripts/start_chain.sh b/server/scripts/start_chain.sh index e421b577..03c9d06c 100755 --- a/server/scripts/start_chain.sh +++ b/server/scripts/start_chain.sh @@ -14,7 +14,7 @@ RED='\033[1;31;46m' # red color NC='\033[0m' # no Color L=info # default trace level S=hbt # session name -W=chain # window name +W=blockchain N=4 # number of nodes P=10000 # base port number @@ -24,14 +24,8 @@ do case "${flag}" in # n : number of nodes n) N=${OPTARG};; - # p : starting port number - p) P=${OPTARG};; - # s : session name - s) S=${OPTARG};; # t : trace level (info, debug, ...) t) L=${OPTARG};; - # w : window name - w) W=${OPTARG};; # * : handle unknown flags *) echo -e "${RED} unknown flag ${flag} ${NC}";; esac diff --git a/server/scripts/start_registry.sh b/server/scripts/start_registry.sh new file mode 100755 index 00000000..49ed1d82 --- /dev/null +++ b/server/scripts/start_registry.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# This script creates a registration server. + +# Requirements: +# from server/registration: go install +# sudo apt install tmux ripgrep + +set -e + +GREEN='\033[0;32m' # green color +RED='\033[1;31;46m' # red color +NC='\033[0m' # no Color +L=info # default trace level +S=hbt # session name +W=registry # window name +P=12000 # base port number + +echo -e "${GREEN}[PARSE parameters]${NC}" +while getopts n:p:s:t:w: flag +do + case "${flag}" in + # t : trace level (info, debug, ...) + t) L=${OPTARG};; + # * : handle unknown flags + *) echo -e "${RED} unknown flag ${flag} ${NC}";; + esac +done + +MASTERPANE="${S}:${W}.0" +SLAVEPANE="${S}:${W}.1" + +echo -e "Split ${W} window" +tmux select-window -t ${S}:${W} +tmux splitw +tmux select-layout main-vertical + +# Start the registry server +echo -e "${GREEN}[REGISTRY SERVER]${NC} starting" +tmux send-keys -t "${SLAVEPANE}" "registration" C-m +echo -e "${GREEN}[REGISTRY SERVER]${NC} started" + +tmux select-pane -t "${MASTERPANE}" diff --git a/server/scripts/start_smc.sh b/server/scripts/start_smc.sh index 747ed2e0..cf799d9e 100755 --- a/server/scripts/start_smc.sh +++ b/server/scripts/start_smc.sh @@ -24,14 +24,8 @@ do case "${flag}" in # n : number of nodes n) N=${OPTARG};; - # p : starting port number - p) P=${OPTARG};; - # s : session name - s) S=${OPTARG};; # t : trace level (info, debug, ...) t) L=${OPTARG};; - # w : window name - w) W=${OPTARG};; # * : handle unknown flags *) echo -e "${RED} unknown flag ${flag} ${NC}";; esac diff --git a/server/scripts/stop_chain.sh b/server/scripts/stop_chain.sh index 4de28872..ff957cac 100755 --- a/server/scripts/stop_chain.sh +++ b/server/scripts/stop_chain.sh @@ -1,14 +1,12 @@ #!/usr/bin/env bash -# This script stops the blockchain created by the start_chain.sh script - -W=chain # window name +# This script stops the blockchain started by the start_chain.sh script # stop processes pkill chaincli # cleanup blockchain temporary files -rm -rf /tmp/${W}* +rm -rf /tmp/blockchain* # remove blockchain pk rm -f private.key diff --git a/server/scripts/stop_registry.sh b/server/scripts/stop_registry.sh new file mode 100755 index 00000000..2ef95880 --- /dev/null +++ b/server/scripts/stop_registry.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# This script stops the registration server started by the start_registry.sh script + +# stop processes +pkill registration diff --git a/server/scripts/stop_smc.sh b/server/scripts/stop_smc.sh index 64cfc0ae..219a65a7 100755 --- a/server/scripts/stop_smc.sh +++ b/server/scripts/stop_smc.sh @@ -2,13 +2,11 @@ # This script stops the SMC (secret management committee) created by the start_smc.sh script -W=smc # window name - # stop processes pkill smccli # cleanup temporary SMC files -rm -rf /tmp/${W}* +rm -rf /tmp/smc* # remove local public key rm -f smckey.pub diff --git a/server/scripts/teardown.sh b/server/scripts/teardown.sh index bcaf3a1c..7fe50fc1 100755 --- a/server/scripts/teardown.sh +++ b/server/scripts/teardown.sh @@ -12,6 +12,7 @@ S=hbt # session name echo -e "${GREEN}[TMUX tear down]${NC}" +./stop_registry.sh ./stop_smc.sh ./stop_chain.sh diff --git a/server/smc/smccli/smccli.go b/server/smc/smccli/smccli.go index 82167a52..fd6e17c8 100644 --- a/server/smc/smccli/smccli.go +++ b/server/smc/smccli/smccli.go @@ -11,6 +11,7 @@ import ( minogrpc "go.dedis.ch/dela/mino/minogrpc/controller" proxy "go.dedis.ch/dela/mino/proxy/http/controller" smc "go.dedis.ch/hbt/server/smc/smccli/controller" + "go.dedis.ch/hbt/server/smc/smccli/web" ) type config struct { @@ -35,7 +36,7 @@ func runWithCfg(args []string, cfg config) error { cfg.Writer, kv.NewController(), proxy.NewController(), - proxy.NewController(), + web.NewController(), minogrpc.NewController(), dkg.NewMinimal(), smc.NewSmcController(), From 0ebb5aa18b117f4443f404e5a79462af1a18b863 Mon Sep 17 00:00:00 2001 From: Jean Date: Sun, 3 Mar 2024 16:45:53 +0100 Subject: [PATCH 3/9] WIP --- server/registration/registry/crud/crud.go | 10 +- server/registration/registry/registry.go | 15 +- server/scripts/test_registration.sh | 10 + server/test/admin/blockchain.go | 36 ++++ server/test/admin/database.go | 82 +++++++++ server/test/admin/smc.go | 1 + server/test/key/asymmetric.go | 17 ++ server/test/key/symetric.go | 94 ++++++++++ server/test/passport.jpg | Bin 0 -> 189188 bytes server/test/test.go | 73 ++++++++ server/test/user/blockchain.go | 34 ++++ server/test/user/database.go | 212 ++++++++++++++++++++++ server/test/user/smc.go | 28 +++ 13 files changed, 602 insertions(+), 10 deletions(-) create mode 100644 server/scripts/test_registration.sh create mode 100644 server/test/admin/blockchain.go create mode 100644 server/test/admin/database.go create mode 100644 server/test/admin/smc.go create mode 100644 server/test/key/asymmetric.go create mode 100644 server/test/key/symetric.go create mode 100644 server/test/passport.jpg create mode 100644 server/test/test.go create mode 100644 server/test/user/blockchain.go create mode 100644 server/test/user/database.go create mode 100644 server/test/user/smc.go diff --git a/server/registration/registry/crud/crud.go b/server/registration/registry/crud/crud.go index d08ceb63..e37d45a2 100644 --- a/server/registration/registry/crud/crud.go +++ b/server/registration/registry/crud/crud.go @@ -168,12 +168,10 @@ func UpdateDocument(w http.ResponseWriter, r *http.Request, db database.Database } regData := ®istry.RegistrationData{ - Name: name, - Passport: passport, - Role: uint(role), - Picture: picData, - Hash: []byte(hash), - Registered: registered, + Name: name, + Passport: passport, + Role: uint(role), + Picture: picData, } err = db.Update(registrationID, regData) diff --git a/server/registration/registry/registry.go b/server/registration/registry/registry.go index 8fdc62aa..3f49eec7 100644 --- a/server/registration/registry/registry.go +++ b/server/registration/registry/registry.go @@ -4,15 +4,22 @@ package registry type RegistrationData struct { Name string `json:"name"` Passport string `json:"passport"` - Role uint `json:"role"` Picture []byte `json:"picture"` - Hash []byte `json:"hash"` + Role uint64 `json:"role"` Registered bool `json:"registered"` } -type DocID []byte +// EncryptedData contains the above encrypted data for a registration +// and a flag to indicate if the data has been successfully registered +type EncryptedData struct { + Name []byte `json:"name"` + Passport []byte `json:"passport"` + Picture []byte `json:"picture"` + Role []byte `json:"role"` + Registered []byte `json:"registered"` +} // RegistrationID contains the reference to the document in the database type RegistrationID struct { - ID DocID `json:"doc_id"` + ID []byte `json:"doc_id"` } diff --git a/server/scripts/test_registration.sh b/server/scripts/test_registration.sh new file mode 100644 index 00000000..14bfaf0f --- /dev/null +++ b/server/scripts/test_registration.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# This script tests the registration process + +# send the data to the registration server +curl -F "name=John Doe" -F "passport=12AB456789" -F "role=0" -F "image=@./test.jpg" -F "registered=false" localhost:3000/document + +# send the data to the registration server +curl -F "name=John Doe" -F "passport=12AB456789" -F "role=0" -F "image=@./test.jpg" -F "registered=false" localhost:3000/document + diff --git a/server/test/admin/blockchain.go b/server/test/admin/blockchain.go new file mode 100644 index 00000000..b595945b --- /dev/null +++ b/server/test/admin/blockchain.go @@ -0,0 +1,36 @@ +package admin + +import ( + "net/http" + + "github.com/rs/zerolog/log" + "go.dedis.ch/hbt/server/registration/registry" + "go.dedis.ch/kyber/v3" + "go.dedis.ch/kyber/v3/suites" +) + +const blockchainServer = "localhost:4000" + +// suite is the Kyber suite for Pedersen. +var suite = suites.MustFind("Ed25519") + +// BlockchainGetDocs polls the blockchain to get the list of encrypted documents +// adminPubkey is the public key of the admin and is used for audit purpose +func BlockchainGetDocIDs(adminPubkey kyber.Point) []registry.RegistrationID { + encoded, err := adminPubkey.MarshalBinary() + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + resp, err := http.Get(blockchainServer + "/secret/list?pubkey=" + string(encoded)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var data []string + + // TODO: Decode the response and return the list of doc IDs +} diff --git a/server/test/admin/database.go b/server/test/admin/database.go new file mode 100644 index 00000000..22646d1e --- /dev/null +++ b/server/test/admin/database.go @@ -0,0 +1,82 @@ +package admin + +import ( + "bytes" + "encoding/json" + "net/http" + + "go.dedis.ch/hbt/server/registration/registry" +) + +func RegistrationAdminGetDocument(docid registry.RegistrationID) registry.RegistrationData { + resp, err := http.Get("localhost:3000/admin/document?id=" + string(docid.ID)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var data registry.RegistrationData + err = json.NewDecoder(resp.Body).Decode(&data) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + return data +} + +func RegistrationAdminUpdateDocument(docid registry.RegistrationID) error { + resp, err := http.Get("localhost:3000/admin/document?id=" + string(docid.ID)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var data registry.RegistrationData + err = json.NewDecoder(resp.Body).Decode(&data) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + data.Registered = true + out, err := json.Marshal(data) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + req, err := http.NewRequest("PUT", "localhost:3000/admin/document?id="+string(docid.ID), + bytes.NewBuffer(out)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + ctx := context.Background() + req = req.WithContext(ctx) + resp, err = http.DefaultClient.Do(req) + if err != nil { + log.Error().Msgf("response: %v", resp) + } + + defer resp.Body.Close() + + return err +} + +func RegistrationAdminDeleteDocument(docid registry.RegistrationID) error { + req, err := http.NewRequest("DELETE", "localhost:3000/admin/document?id="+string(docid.ID), nil) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + return err +} diff --git a/server/test/admin/smc.go b/server/test/admin/smc.go new file mode 100644 index 00000000..d78da5da --- /dev/null +++ b/server/test/admin/smc.go @@ -0,0 +1 @@ +package admin diff --git a/server/test/key/asymmetric.go b/server/test/key/asymmetric.go new file mode 100644 index 00000000..e3bac76a --- /dev/null +++ b/server/test/key/asymmetric.go @@ -0,0 +1,17 @@ +package key + +import ( + "go.dedis.ch/kyber/v3" + "go.dedis.ch/kyber/v3/suites" +) + +// NewAsymmetric generates a new kyber V3 asymmetric key pair +func NewAsymmetric() (kyber.Point, kyber.Scalar) { + suite := suites.MustFind("Ed25519") + + // Create a public/private keypair + sk := suite.Scalar().Pick(suite.RandomStream()) + pk := suite.Point().Mul(sk, nil) + + return pk, sk +} diff --git a/server/test/key/symetric.go b/server/test/key/symetric.go new file mode 100644 index 00000000..d1f55d74 --- /dev/null +++ b/server/test/key/symetric.go @@ -0,0 +1,94 @@ +package key + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "fmt" + "io" + + "github.com/rs/zerolog/log" +) + +func NewSymetric(keySize int) []byte { + key := make([]byte, keySize) + if _, err := rand.Read(key); err != nil { + log.Fatal().Msgf("error while generating new symetric key: %v", err) + } + + return key +} + +func Encrypt(data []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + ciphertext := make([]byte, aes.BlockSize+len(data)) + iv := ciphertext[:aes.BlockSize] + if _, err := io.ReadFull(rand.Reader, iv); err != nil { + return nil, err + } + + mode := cipher.NewCBCEncrypter(block, iv) + mode.CryptBlocks(ciphertext[aes.BlockSize:], data) + + return ciphertext, nil +} + +func Decrypt(ciphertext []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + if len(ciphertext) < aes.BlockSize { + return nil, fmt.Errorf("ciphertext too short") + } + iv := ciphertext[:aes.BlockSize] + ciphertext = ciphertext[aes.BlockSize:] + + mode := cipher.NewCBCDecrypter(block, iv) + mode.CryptBlocks(ciphertext, ciphertext) + + return ciphertext, nil +} + +/* +func main() { + // Key size in bytes, AES-256 requires a 32-byte key + keySize := 32 + + // Generate a random symmetric key + key, err := generateRandomKey(keySize) + if err != nil { + fmt.Println("Error generating key:", err) + return + } + + // Convert the key to a hex string for storage or transmission + hexKey := hex.EncodeToString(key) + fmt.Println("Generated Symmetric Key (Hex):", hexKey) + + // Example of how to use the key for encryption and decryption + plaintext := "Hello, World!" + fmt.Println("Plaintext:", plaintext) + + // Encrypt + ciphertext, err := encrypt([]byte(plaintext), key) + if err != nil { + fmt.Println("Error encrypting:", err) + return + } + fmt.Println("Ciphertext:", ciphertext) + + // Decrypt + decryptedPlaintext, err := decrypt(ciphertext, key) + if err != nil { + fmt.Println("Error decrypting:", err) + return + } + fmt.Println("Decrypted Plaintext:", string(decryptedPlaintext)) +} +*/ diff --git a/server/test/passport.jpg b/server/test/passport.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a321c5f27c56cf5c2b42a2717d3b02d392411d3 GIT binary patch literal 189188 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 z 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 h$jZ`-5Joq$i_+MLMAZRR_4YDbi3u7*3h5 zc*G-(YCAbox_;)&XPG(ynN0kx;UJN`=8aq}E*1h}<$f+n{ZK%u1jIlzrb)wTvHs;<|R~O@?Jv*$jf{eqFK#*Jj}G903La5n4@G;Wu2@ZkEgtVnxFI zHuI0^4RMlms79werZuwJmjEf0^jj8zsi+-EfD=RZj{&>FH$iz6h?4<-5C;^u%M12u z<6w-u`f?avJ7VVRYb|iz*-}V~mVgIQQ!9IEx7vFm(X(m(U-_MrZW_0oT-O{nL-(|af^>^Py!4QxIJNK#WJGNYH+Yy zKVRu={ePu$e#c{8+qZViGRJ6tyAYZAWwmtBG|j=yq}8!7eUhGG`^JKh;CFUTnFc0Emd)H_!EEPf=QOwqhOjsiBvYG>tkmlA;F6_El`2%JQl(0jDpaY$Al9=g zAn7V1bDxsk^-&R&>M^)IjOpAkZ2;Hmi}r9y06_vo5GJr_VHc7B0LTyqK!HijikUS` z3}%DoO-~lcE~`_3kWfBqXRl`}`Fnwx7-RzH+~%_5`r)eQ*%B4|8Q0GT2DP;$p$)Xe zxbzt01XLX3mPx#6#On83(s8_}DMhk}p#le;dwOMu-Rklorfu4{&l0LmN3 zbO19X&;|O5a3e@@9*ZxB7|3Cq9`BwNtKZ{TTDSf|Sg!}^MCx@xsEZ* z4Fc1;*9uka@vJRd{{SGFyf&`ie$Z9U*@GrU#4Vq&UHO|gnie#gmWz=#PTnEUuD;Q# z=6J@V4Hli(Glc_)n90J&#ZmO$7MRQ+_b>+sdqj{3p}m2)LG5E$){kg{Px2#1=nx}j z-AvrcsagCu#-j}ugSc=7ICv{%gF~8VK}K7qW1(K5Y(oQR4o9HMJeTyZ#yMf4(03Uh zaCu>nK<<+gGU}Wh4q(b1ji6}eKt#Oq6!R*L)7%|Ccv)mqi0DXPh;Z>=iGP~fnJxII zA2WuY;dJfjG3D+it4_v)9M8B}U?LA^LGCrevBO++80qdEki$5~L5_pmY{ohda(UyR z!%^M@5J3bJO;b;jX@on0!m>E%JC{Ou^G_4i4@DAeoj_vA#7ZQ9s~>bxEuHJH(p}Fl z?GM*k<&+~u`dvp24xngMJ55JkN!#4fqP|I`2ps}X8~aWR0A-s5%!#f0wc#&{DRs;MPf6ZQzRJpR04!H@SO$ZQ!`ocg*%RP z6VO_=u3`AGbOdgxOC%fm#`OLF=Zvm4Vh%>Zf)Oh|$Z6x!E1)0$}BA_=($w&_K+ z-f*yst(hMWJ{O?FmwjRCj_A-Wv{sTnDZV1d!8+M$f21IDzynq6yDbod=ZD`fp;tri zQS(H{uR?BlCV-1F_$XVonk3NXYjFaNBsZE{lK8lB)CVV~% zBi0UzH(hQ@q-Uz4wgUVomKqE>_vRIa*Ydy73YBszUy?O!`C(=Hsz#iLGQE=#16@kb z?qxiKreAs#R(_adyf{vnXfV_E2lZk+bwbF(+Iw1Z&YG1+e7>P=9lfXB)lc0PYoDG5 zrBYRu_(wc67-&22vW}|jqWEEA1$=Cr*<{6jJ_)f~>YXZgy%Cf;pplCL#W%<-~R0v4*K|-Rr^+Vc5gN0}oqxL#_s{~*l z6LeSV3H!|;%VO1{X{K}WLZ>Y!R4?#fWqrcxa|e1IFKN6dLQU0*-Cp}{y^?^pD(}ZS) zLKP@gUf-~~$b>0{?s_Lng&Zg3ojQcV4=*T{56uJs{LOD81JU;<84%FB}C` zf-3(109zhd0IA-LGC(V%Wk8P;wg(F%L}`W5!u`cC6+;T4#EeI(8^J|+1s+2JqsS=o zz#tSL6G8weP!wTx9z(KWLy&>QMX>%-tA((>7sEU*uZ{4sx}Wq%4 zqhAzYs>g9<@kX6{IeGCT15_x5(^FAL3n7iW86bk9DE2^wZX@D_6@n<%d!b&zwl_zM zm6xss1u%OD30h!L$0eH246v#Z#Ir(X6p)0fqkLqlpsOg|YO|G9SwU7uVoI!`mPkyj z#}Wb%9;gbTbO)*f)c}C?Kp+r6dY~{E3<3xQ0s#T)h0{l>X!Tb-NFjhjxE;tr1V8m? Ma6Oa%0Oale*^s~Ru>b%7 literal 0 HcmV?d00001 diff --git a/server/test/test.go b/server/test/test.go new file mode 100644 index 00000000..9a61bcf6 --- /dev/null +++ b/server/test/test.go @@ -0,0 +1,73 @@ +package main + +import ( + "os" + + "github.com/rs/zerolog/log" + "go.dedis.ch/hbt/server/registration/registry" + "go.dedis.ch/hbt/server/test/admin" + "go.dedis.ch/hbt/server/test/key" + "go.dedis.ch/hbt/server/test/user" +) + +const keySize = 32 + +func main() { + // create a secret symmetric key + symKey := key.NewSymetric(keySize) + + // PRETEND TO BE A USER + // --------------------------------------------------------- + + // create a document and save it encrypted into the database + doc := createDocument("John Doe", "12AB456789", 0, "test/passport.jpg") + log.Info().Msg("SUCCESS! created new document") + + // add the document to the registry + docid := user.RegistrationAdd(doc, symKey) + log.Info().Msgf("SUCCESS! added document id: %v", docid) + + // get the SMC pub key + smcKey := user.SmcGetKey() + log.Info().Msgf("SUCCESS! added document id: %v", docid) + + // add secret = symKey to the blockchain + user.BlockchainEncryptAndAddSecret(smcKey, symKey, docid) + + // PRETEND TO BE AN ADMIN + // --------------------------------------------------------- + // create a new admin asymmetric key pair + pk, sk := key.NewAsymmetric() + + // fetch the list of docs from the blockchain + docIDs := admin.BlockchainGetDocIDs(pk) + + for _, id := range docIDs { + doc := admin.BlockchainGetDocument(id) + log.Info().Msgf("document: %v", doc) + + reencrypted := admin.SmcReencryptSecret(pk, id) + + encryptedDoc = admin.registrationGetDocument(id) + } +} + +// --------------------------------------------------------- +// helper functions + +// create a document from a picture file +func createDocument(name, passport string, role uint64, picture string) registry.RegistrationData { + // load picture from file named picture + picData, err := os.ReadFile(picture) + if err != nil { + log.Fatal().Msgf("error while reading picture file: %v", err) + } + + return registry.RegistrationData{ + Name: name, + Passport: passport, + Role: role, + Picture: picData, + Registered: false, + } +} diff --git a/server/test/user/blockchain.go b/server/test/user/blockchain.go new file mode 100644 index 00000000..043f87f9 --- /dev/null +++ b/server/test/user/blockchain.go @@ -0,0 +1,34 @@ +package user + +import ( + "net/http" + "net/url" + + "github.com/rs/zerolog/log" + "go.dedis.ch/hbt/server/registration/registry" + "go.dedis.ch/kyber/v3" + "go.dedis.ch/kyber/v3/suites" +) + +const blockchainServer = "localhost:4000" + +// suite is the Kyber suite for Pedersen. +var suite = suites.MustFind("Ed25519") + +func BlockchainEncryptAndAddSecret(key kyber.Point, secret []byte, id registry.RegistrationID) { + // Encrypt the secret + encryptedSecret := suite.Point().Mul(suite.Scalar().SetBytes(secret), key) + + // Add the secret to the blockchain + resp, err := http.PostForm(blockchainServer+"/secret", + url.Values{ + "secret": {encryptedSecret.String()}, + "id": {string(id.ID)}, + }) + + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() +} diff --git a/server/test/user/database.go b/server/test/user/database.go new file mode 100644 index 00000000..c3e43e81 --- /dev/null +++ b/server/test/user/database.go @@ -0,0 +1,212 @@ +package user + +import ( + "bytes" + "context" + "encoding/binary" + "encoding/json" + "net/http" + "net/url" + + "github.com/rs/zerolog/log" + "go.dedis.ch/hbt/server/registration/registry" + "go.dedis.ch/hbt/server/test/key" +) + +const registrationServer = "localhost:3000" + +// RegistrationAdd adds a new registration to the registry +func RegistrationAdd(data registry.RegistrationData, symKey []byte) registry.RegistrationID { + // Encrypt the data + encrypted, err := encryptRegistrationData(data, symKey) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + // Add the encrypted document to the registry + resp, err := http.PostForm(registrationServer+"/document", + url.Values{ + "name": {string(encrypted.Name)}, + "passport": {string(encrypted.Passport)}, + "role": {string(encrypted.Role)}, + "picture": {string(encrypted.Picture)}, + "registered": {string(encrypted.Registered)}, + }) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var docid registry.RegistrationID + err = json.NewDecoder(resp.Body).Decode(&docid) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + return docid +} + +// RegistrationGet polls the data to see if registered +func RegistrationGet(docid registry.RegistrationID, symKey []byte) registry.RegistrationData { + resp, err := http.Get(registrationServer + "/document?id=" + string(docid.ID)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var encrypted registry.EncryptedData + err = json.NewDecoder(resp.Body).Decode(&encrypted) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + // Decrypt the data + data, err := decryptRegistrationData(encrypted, symKey) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + return data +} + +// RegistrationDelete deletes the registration data from the database +func RegistrationDelete(docid registry.RegistrationID) error { + req, err := http.NewRequest("DELETE", registrationServer+"/document?id="+string(docid.ID), nil) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + ctx := context.Background() + req = req.WithContext(ctx) + resp, err := http.DefaultClient.Do(req) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + return err +} + +// --------------------------------------------------------------------------- +// The following functions are used to encrypt and decrypt the registration + +func encryptRegistrationData(data registry.RegistrationData, symKey []byte) ( + registry.EncryptedData, + error, +) { + // Convert the struct to a byte array + buf := new(bytes.Buffer) + + // encrypt the data.Name + err := binary.Write(buf, binary.LittleEndian, data.Name) + if err != nil { + return registry.EncryptedData{}, err + } + + encName, err := key.Encrypt(symKey, buf.Bytes()) + if err != nil { + return registry.EncryptedData{}, err + } + + // encrypt the data.Passport + err = binary.Write(buf, binary.LittleEndian, data.Name) + if err != nil { + return registry.EncryptedData{}, err + } + + encPassport, err := key.Encrypt(symKey, buf.Bytes()) + if err != nil { + return registry.EncryptedData{}, err + } + + // encrypt the data.Role + err = binary.Write(buf, binary.LittleEndian, data.Role) + if err != nil { + return registry.EncryptedData{}, err + } + + encRole, err := key.Encrypt(symKey, buf.Bytes()) + if err != nil { + return registry.EncryptedData{}, err + } + + // encrypt the data.Picture + err = binary.Write(buf, binary.LittleEndian, data.Picture) + if err != nil { + return registry.EncryptedData{}, err + } + + encPicture, err := key.Encrypt(symKey, buf.Bytes()) + if err != nil { + return registry.EncryptedData{}, err + } + + // encrypt the data.Registered + err = binary.Write(buf, binary.LittleEndian, data.Registered) + if err != nil { + return registry.EncryptedData{}, err + } + + encRegistered, err := key.Encrypt(symKey, buf.Bytes()) + if err != nil { + return registry.EncryptedData{}, err + } + + return registry.EncryptedData{ + Name: encName, + Passport: encPassport, + Picture: encPicture, + Role: encRole, + Registered: encRegistered, + }, nil +} + +func decryptRegistrationData(encrypted registry.EncryptedData, symKey []byte) ( + registry.RegistrationData, + error, +) { + // Decrypt the data.Name + decName, err := key.Decrypt(symKey, encrypted.Name) + if err != nil { + return registry.RegistrationData{}, err + + } + + // Decrypt the data.Passport + decPassport, err := key.Decrypt(symKey, encrypted.Passport) + if err != nil { + return registry.RegistrationData{}, err + } + + // Decrypt the data.Role + decRole, err := key.Decrypt(symKey, encrypted.Role) + if err != nil { + return registry.RegistrationData{}, err + } + + // Decrypt the data.Picture + decPicture, err := key.Decrypt(symKey, encrypted.Picture) + if err != nil { + return registry.RegistrationData{}, err + } + + // Decrypt the data.Registered + decRegistered, err := key.Decrypt(symKey, encrypted.Registered) + if err != nil { + return registry.RegistrationData{}, err + } + + return registry.RegistrationData{ + Name: string(decName), + Passport: string(decPassport), + Picture: decPicture, + Role: binary.LittleEndian.Uint64(decRole), + Registered: binary.LittleEndian.Uint64(decRegistered) == 1, + }, nil + +} diff --git a/server/test/user/smc.go b/server/test/user/smc.go new file mode 100644 index 00000000..0d2a5bbd --- /dev/null +++ b/server/test/user/smc.go @@ -0,0 +1,28 @@ +package user + +import ( + "encoding/json" + "net/http" + + "github.com/rs/zerolog/log" + "go.dedis.ch/kyber/v3" +) + +func SmcGetKey() kyber.Point { + resp, err := http.Get("localhost:3000/key") + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var data kyber.Point + + err = json.NewDecoder(resp.Body).Decode(&data) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + return data +} From 54f70248c1382ead09dcb7de72e0a98ea2b69ffe Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 6 Mar 2024 07:04:59 +0100 Subject: [PATCH 4/9] can compile scenario test --- server/smc/smc.go | 9 ++ server/smc/smccli/controller/reveal.go | 35 ----- server/test/admin/blockchain.go | 54 +++++++- server/test/admin/database.go | 2 + server/test/admin/smc.go | 175 +++++++++++++++++++++++++ server/test/test.go | 46 ++++++- server/test/user/blockchain.go | 72 +++++++++- server/test/user/smc.go | 4 +- 8 files changed, 349 insertions(+), 48 deletions(-) create mode 100644 server/smc/smc.go delete mode 100644 server/smc/smccli/controller/reveal.go diff --git a/server/smc/smc.go b/server/smc/smc.go new file mode 100644 index 00000000..9db7d232 --- /dev/null +++ b/server/smc/smc.go @@ -0,0 +1,9 @@ +package smc + +import "go.dedis.ch/hbt/server/registration/registry" + +// SmcSecret contains the secret for the SMC +type Secret struct { + Data string `json:"secret"` + Id registry.RegistrationID +} diff --git a/server/smc/smccli/controller/reveal.go b/server/smc/smccli/controller/reveal.go deleted file mode 100644 index cdfb7162..00000000 --- a/server/smc/smccli/controller/reveal.go +++ /dev/null @@ -1,35 +0,0 @@ -package controller - -import ( - "go.dedis.ch/dela" - "go.dedis.ch/kyber/v3" - "golang.org/x/xerrors" -) - -// reveal decrypts a reencrypted message. -func reveal(XhatEnc kyber.Point, dkgPk kyber.Point, userPrivateKey kyber.Scalar, Cs []kyber.Point) ([]byte, error) { - dela.Logger.Info().Msgf("XhatEnc:%v", XhatEnc) - dela.Logger.Info().Msgf("dkgPk:%v", dkgPk) - dela.Logger.Info().Msgf("Cs:%v", Cs) - - xcInv := suite.Scalar().Neg(userPrivateKey) - XhatDec := suite.Point().Mul(xcInv, dkgPk) - Xhat := suite.Point().Add(XhatEnc, XhatDec) - XhatInv := suite.Point().Neg(Xhat) - - msg := make([]byte, 0, 128*len(Cs)) - - // Decrypt Cs to keyPointHat - for _, C := range Cs { - keyPointHat := suite.Point().Add(C, XhatInv) - keyPart, err := keyPointHat.Data() - if err != nil { - e := xerrors.Errorf("Error while decrypting Cs: %v", err) - dela.Logger.Error().Err(e).Msg("Failed revealing message") - return nil, e - } - msg = append(msg, keyPart...) - } - - return msg, nil -} diff --git a/server/test/admin/blockchain.go b/server/test/admin/blockchain.go index b595945b..c503f886 100644 --- a/server/test/admin/blockchain.go +++ b/server/test/admin/blockchain.go @@ -1,10 +1,14 @@ package admin import ( + "encoding/json" + "fmt" + "io" "net/http" "github.com/rs/zerolog/log" "go.dedis.ch/hbt/server/registration/registry" + "go.dedis.ch/hbt/server/smc" "go.dedis.ch/kyber/v3" "go.dedis.ch/kyber/v3/suites" ) @@ -29,8 +33,54 @@ func BlockchainGetDocIDs(adminPubkey kyber.Point) []registry.RegistrationID { defer resp.Body.Close() + // Reading the response body + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println("Error reading response body:", err) + return nil + } + + var items []registry.RegistrationID + // Checking if the request was successful (status code 200) + if resp.StatusCode == http.StatusOK { + // Parsing JSON data + if err := json.Unmarshal(body, &items); err != nil { + fmt.Println("Error parsing JSON:", err) + return nil + } + + // Printing the list of IDs + fmt.Println("List of IDs:") + for _, item := range items { + fmt.Println(item.ID) + } + } else { + fmt.Println("Failed to fetch items. Status code:", resp.StatusCode) + } + + return items +} + +// BlockchainGetDocument polls the blockchain to get the encrypted document +func BlockchainGetSecret(id registry.RegistrationID, pk kyber.Point) smc.Secret { + encodedPk, err := pk.MarshalBinary() + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + resp, err := http.Get(blockchainServer + "/secret?pubkey=" + string(encodedPk) + "&id=" + string(id.ID)) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + // Decode the response - var data []string + var secret smc.Secret + err = json.NewDecoder(resp.Body).Decode(&secret) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } - // TODO: Decode the response and return the list of doc IDs + return secret } diff --git a/server/test/admin/database.go b/server/test/admin/database.go index 22646d1e..4d8bc991 100644 --- a/server/test/admin/database.go +++ b/server/test/admin/database.go @@ -2,9 +2,11 @@ package admin import ( "bytes" + "context" "encoding/json" "net/http" + "github.com/rs/zerolog/log" "go.dedis.ch/hbt/server/registration/registry" ) diff --git a/server/test/admin/smc.go b/server/test/admin/smc.go index d78da5da..b5e6b8bd 100644 --- a/server/test/admin/smc.go +++ b/server/test/admin/smc.go @@ -1 +1,176 @@ package admin + +import ( + "bytes" + "encoding/hex" + "encoding/json" + "net/http" + "strings" + + "github.com/rs/zerolog/log" + "go.dedis.ch/dela" + "go.dedis.ch/kyber/v3" + "go.dedis.ch/kyber/v3/suites" + "golang.org/x/xerrors" +) + +const smcServer = "localhost:4000" + +// SmcReencryptSecret re-encrypts the secret with the new public key +// and returns a xhatenc value that can be used to reveal the secret +func SmcReencryptSecret(pk kyber.Point, secret string) (kyber.Point, error) { + resp, err := http.Post(smcServer+"/reencrypt", "application/json", + bytes.NewBuffer([]byte(`{"pubk": "`+encodePublickey(pk)+`", "encrypted": "`+secret+`"}`))) + if err != nil { + log.Error().Msgf("error: %v", err) + return nil, err + } + + defer resp.Body.Close() + + // Decode the response + var xhatenc string + err = json.NewDecoder(resp.Body).Decode(&xhatenc) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + return nil, err + } + + xhatencbuff, err := decodeReencrypted(xhatenc) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + return nil, err + } + + return xhatencbuff, nil +} + +func encodePublickey(pk kyber.Point) string { + pkbuff, err := pk.MarshalBinary() + if err != nil { + return "" + } + + return hex.EncodeToString(pkbuff) +} + +func encodeSecret(secret []byte) string { + return hex.EncodeToString(secret) +} + +func decodeReencrypted(xhatencstring string) (kyber.Point, error) { + xhatencbuff, err := hex.DecodeString(xhatencstring) + if err != nil { + return nil, err + } + + var xhatenc kyber.Point + err = xhatenc.UnmarshalBinary(xhatencbuff) + if err != nil { + return nil, err + } + + return xhatenc, nil +} + +func SmcGetKey() kyber.Point { + resp, err := http.Get(smcServer + "/key") + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + defer resp.Body.Close() + + // Decode the response + var data kyber.Point + + err = json.NewDecoder(resp.Body).Decode(&data) + if err != nil { + log.Error().Msgf("error decoding response: %v", err) + } + + return data +} + +// SmcReveal decrypts a reencrypted message. +func SmcReveal( + XhatEnc kyber.Point, + dkgPk kyber.Point, + userPrivateKey kyber.Scalar, + secret string, +) ([]byte, error) { + _, Cs, err := decodeEncrypted(secret) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } + + log.Info().Msgf("XhatEnc:%v", XhatEnc) + log.Info().Msgf("dkgPk:%v", dkgPk) + log.Info().Msgf("Cs:%v", Cs) + + suite := suites.MustFind("Ed25519") + + xcInv := suite.Scalar().Neg(userPrivateKey) + XhatDec := suite.Point().Mul(xcInv, dkgPk) + Xhat := suite.Point().Add(XhatEnc, XhatDec) + XhatInv := suite.Point().Neg(Xhat) + + msg := make([]byte, 0, 128*len(Cs)) + + // Decrypt Cs to keyPointHat + for _, C := range Cs { + keyPointHat := suite.Point().Add(C, XhatInv) + keyPart, err := keyPointHat.Data() + if err != nil { + e := xerrors.Errorf("Error while decrypting Cs: %v", err) + dela.Logger.Error().Err(e).Msg("Failed revealing message") + return nil, e + } + msg = append(msg, keyPart...) + } + + return msg, nil +} + +// straight from pedersen/controller/action +func decodeEncrypted(str string) (kyber.Point, []kyber.Point, error) { + const separator = ":" + parts := strings.Split(str, separator) + if len(parts) < 2 { + return nil, nil, xerrors.Errorf("malformed encoded: %s", str) + } + + // Decode K + kbuff, err := hex.DecodeString(parts[0]) + if err != nil { + return nil, nil, xerrors.Errorf("failed to decode k point: %v", err) + } + + k := suite.Point() + + err = k.UnmarshalBinary(kbuff) + if err != nil { + return nil, nil, xerrors.Errorf("failed to unmarshal k point: %v", err) + } + + // Decode Cs + cs := make([]kyber.Point, 0, len(parts)-1) + + for _, p := range parts[1:] { + cbuff, err := hex.DecodeString(p) + if err != nil { + return nil, nil, xerrors.Errorf("failed to decode c point: %v", err) + } + + c := suite.Point() + + err = c.UnmarshalBinary(cbuff) + if err != nil { + return nil, nil, xerrors.Errorf("failed to unmarshal c point: %v", err) + } + + cs = append(cs, c) + } + + return k, cs, nil +} diff --git a/server/test/test.go b/server/test/test.go index 9a61bcf6..3a89e9ff 100644 --- a/server/test/test.go +++ b/server/test/test.go @@ -25,14 +25,15 @@ func main() { // add the document to the registry docid := user.RegistrationAdd(doc, symKey) - log.Info().Msgf("SUCCESS! added document id: %v", docid) + log.Info().Msgf("SUCCESS! added document ID=%v", docid) // get the SMC pub key smcKey := user.SmcGetKey() - log.Info().Msgf("SUCCESS! added document id: %v", docid) + log.Info().Msgf("SUCCESS! got SMC key: %v", smcKey) // add secret = symKey to the blockchain - user.BlockchainEncryptAndAddSecret(smcKey, symKey, docid) + secret := user.BlockchainEncryptAndAddSecret(smcKey, symKey, docid) + log.Info().Msgf("SUCCESS! added secret=%v with ID=%v to blockchain", secret, docid) // PRETEND TO BE AN ADMIN // --------------------------------------------------------- @@ -40,15 +41,32 @@ func main() { pk, sk := key.NewAsymmetric() // fetch the list of docs from the blockchain + // give it the admin pub key for audit purpose docIDs := admin.BlockchainGetDocIDs(pk) for _, id := range docIDs { - doc := admin.BlockchainGetDocument(id) - log.Info().Msgf("document: %v", doc) + secret := admin.BlockchainGetSecret(id, pk) + log.Info().Msgf("secret: %v", secret) - reencrypted := admin.SmcReencryptSecret(pk, id) + xhatenc, err := admin.SmcReencryptSecret(pk, secret.Data) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } - encryptedDoc = admin.registrationGetDocument(id) + smcKeyAdmin := admin.SmcGetKey() + if smcKey != smcKeyAdmin { + log.Fatal().Msg("SMC key mismatch") + } + + // secret.Data = K:Cs in a string format + symKey2, err := admin.SmcReveal(xhatenc, smcKey, sk, secret.Data) + + if false == compare2ByteArrays(symKey, symKey2) { + log.Fatal().Msg("symmetric key mismatch") + } + + // TO DO: get the encrypted document from the registry + // TO DO: decrypt the document } } @@ -71,3 +89,17 @@ func createDocument(name, passport string, role uint64, picture string) registry Registered: false, } } + +func compare2ByteArrays(a []byte, b []byte) bool { + if len(a) != len(b) { + return false + } + + for i := range a { + if a[i] != b[i] { + return false + } + } + + return true +} diff --git a/server/test/user/blockchain.go b/server/test/user/blockchain.go index 043f87f9..710fc65c 100644 --- a/server/test/user/blockchain.go +++ b/server/test/user/blockchain.go @@ -1,13 +1,16 @@ package user import ( + "encoding/hex" "net/http" "net/url" "github.com/rs/zerolog/log" + "go.dedis.ch/dela" "go.dedis.ch/hbt/server/registration/registry" "go.dedis.ch/kyber/v3" "go.dedis.ch/kyber/v3/suites" + "golang.org/x/xerrors" ) const blockchainServer = "localhost:4000" @@ -15,14 +18,21 @@ const blockchainServer = "localhost:4000" // suite is the Kyber suite for Pedersen. var suite = suites.MustFind("Ed25519") -func BlockchainEncryptAndAddSecret(key kyber.Point, secret []byte, id registry.RegistrationID) { +func BlockchainEncryptAndAddSecret( + key kyber.Point, + secret []byte, + id registry.RegistrationID, +) string { // Encrypt the secret - encryptedSecret := suite.Point().Mul(suite.Scalar().SetBytes(secret), key) + encryptedSecret, err := encryptToKCs(key, secret) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } // Add the secret to the blockchain resp, err := http.PostForm(blockchainServer+"/secret", url.Values{ - "secret": {encryptedSecret.String()}, + "secret": {encryptedSecret}, "id": {string(id.ID)}, }) @@ -31,4 +41,60 @@ func BlockchainEncryptAndAddSecret(key kyber.Point, secret []byte, id registry.R } defer resp.Body.Close() + + return encryptedSecret +} + +func encryptToKCs(key kyber.Point, msg []byte) (string, error) { + // ElGamal-encrypt the point to produce ciphertext (K,C). + r := suite.Scalar().Pick(suite.RandomStream()) + + K := suite.Point().Mul(r, nil) + dela.Logger.Debug().Msgf("K: %v", K.String()) + + C := suite.Point().Mul(r, key) + dela.Logger.Debug().Msgf("C: %v", C) + + // S: ephemeral DH shared secret + S := suite.Point().Mul(r, key) + dela.Logger.Debug().Msgf("S: %v", S.String()) + + Cs := make([]kyber.Point, 0, 16) + for len(msg) > 0 { + kp := suite.Point().Embed(msg, suite.RandomStream()) + dela.Logger.Debug().Msgf("kp: %v", kp.String()) + + // message blinded with secret + c := suite.Point().Add(C, kp) + dela.Logger.Debug().Msgf("c: %v", c) + + Cs = append(Cs, c) + dela.Logger.Debug().Msgf("Cs: %v", Cs) + + msg = msg[min(len(msg), kp.EmbedLen()):] + } + + return encodeEncrypted(K, Cs) +} + +// from pedersen/controller/action +const separator = ":" + +func encodeEncrypted(k kyber.Point, cs []kyber.Point) (string, error) { + kbuff, err := k.MarshalBinary() + if err != nil { + return "", xerrors.Errorf("failed to marshal k: %v", err) + } + + encoded := hex.EncodeToString(kbuff) + + for _, c := range cs { + cbuff, err := c.MarshalBinary() + if err != nil { + return "", xerrors.Errorf("failed to marshal c: %v", err) + } + encoded += separator + hex.EncodeToString(cbuff) + } + + return encoded, nil } diff --git a/server/test/user/smc.go b/server/test/user/smc.go index 0d2a5bbd..5e5c23c1 100644 --- a/server/test/user/smc.go +++ b/server/test/user/smc.go @@ -8,8 +8,10 @@ import ( "go.dedis.ch/kyber/v3" ) +const smcServer = "localhost:3000" + func SmcGetKey() kyber.Point { - resp, err := http.Get("localhost:3000/key") + resp, err := http.Get(smcServer + "/key") if err != nil { log.Fatal().Msgf("error: %v", err) } From 58c1a80b6c0800e9ecceda383596e149d1d29c1d Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 6 Mar 2024 07:27:03 +0100 Subject: [PATCH 5/9] added basic documentation --- server/blockchain/web/web.go | 2 +- server/registration/config/config.json | 2 +- server/smc/smc.go | 4 ++-- server/test/README.md | 10 ++++++++++ server/test/admin/blockchain.go | 2 +- server/test/admin/database.go | 2 ++ server/test/admin/smc.go | 2 +- server/test/test.go | 15 ++++++++++++--- server/test/user/blockchain.go | 2 +- server/test/user/smc.go | 2 +- 10 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 server/test/README.md diff --git a/server/blockchain/web/web.go b/server/blockchain/web/web.go index ee542cb7..8f86996c 100644 --- a/server/blockchain/web/web.go +++ b/server/blockchain/web/web.go @@ -15,7 +15,7 @@ import ( var defaultRetry = 10 var proxyFac func(string) proxy.Proxy = http.NewHTTP -const defaultProxyAddr = "127.0.0.1:0" +const defaultProxyAddr = "127.0.0.1:3003" // NewController returns a new controller initializer func NewController() node.Initializer { diff --git a/server/registration/config/config.json b/server/registration/config/config.json index ed25a621..1c9ff490 100644 --- a/server/registration/config/config.json +++ b/server/registration/config/config.json @@ -5,5 +5,5 @@ "admin_name": "admin", "admin_password": "admin", "user_port": 3000, - "admin_port": 4000 + "admin_port": 3001 } \ No newline at end of file diff --git a/server/smc/smc.go b/server/smc/smc.go index 9db7d232..3d9f7a2d 100644 --- a/server/smc/smc.go +++ b/server/smc/smc.go @@ -4,6 +4,6 @@ import "go.dedis.ch/hbt/server/registration/registry" // SmcSecret contains the secret for the SMC type Secret struct { - Data string `json:"secret"` - Id registry.RegistrationID + Data string `json:"secret"` + Id registry.RegistrationID `json:"id"` } diff --git a/server/test/README.md b/server/test/README.md new file mode 100644 index 00000000..4d74513a --- /dev/null +++ b/server/test/README.md @@ -0,0 +1,10 @@ +# Scenario test +This is an integration test for the servers. It will test the servers' ability to handle requests and responses. + +## Requirements +- The registration server is running and its proxy is listening on port 3000 (user) and 3001 (admin) +- The SMC server is running and its proxy is listening on port 3002 +- The blockchain server is running and its proxy is listening on port 3003 +- Run server/scripts/setup.sh to set up the test environment prior to running the test + + diff --git a/server/test/admin/blockchain.go b/server/test/admin/blockchain.go index c503f886..2fd98d63 100644 --- a/server/test/admin/blockchain.go +++ b/server/test/admin/blockchain.go @@ -13,7 +13,7 @@ import ( "go.dedis.ch/kyber/v3/suites" ) -const blockchainServer = "localhost:4000" +const blockchainServer = "localhost:3003" // suite is the Kyber suite for Pedersen. var suite = suites.MustFind("Ed25519") diff --git a/server/test/admin/database.go b/server/test/admin/database.go index 4d8bc991..861f3399 100644 --- a/server/test/admin/database.go +++ b/server/test/admin/database.go @@ -10,6 +10,8 @@ import ( "go.dedis.ch/hbt/server/registration/registry" ) +const registrationServer = "localhost:3001" + func RegistrationAdminGetDocument(docid registry.RegistrationID) registry.RegistrationData { resp, err := http.Get("localhost:3000/admin/document?id=" + string(docid.ID)) if err != nil { diff --git a/server/test/admin/smc.go b/server/test/admin/smc.go index b5e6b8bd..411490a3 100644 --- a/server/test/admin/smc.go +++ b/server/test/admin/smc.go @@ -14,7 +14,7 @@ import ( "golang.org/x/xerrors" ) -const smcServer = "localhost:4000" +const smcServer = "localhost:3002" // SmcReencryptSecret re-encrypts the secret with the new public key // and returns a xhatenc value that can be used to reveal the secret diff --git a/server/test/test.go b/server/test/test.go index 3a89e9ff..14a393d4 100644 --- a/server/test/test.go +++ b/server/test/test.go @@ -20,7 +20,7 @@ func main() { // --------------------------------------------------------- // create a document and save it encrypted into the database - doc := createDocument("John Doe", "12AB456789", 0, "test/passport.jpg") + doc := createDocument("John Doe", "12AB456789", 0, "passport.jpg") log.Info().Msg("SUCCESS! created new document") // add the document to the registry @@ -65,9 +65,18 @@ func main() { log.Fatal().Msg("symmetric key mismatch") } - // TO DO: get the encrypted document from the registry - // TO DO: decrypt the document + // TODO: get the encrypted document from the registry + // TODO: decrypt the document - optional + // TODO: update the document status to registered + // TODO: encrypt the document - optional + // TODO: save the document back to the registry } + + // PRETEND TO BE A USER + // --------------------------------------------------------- + // get the document from the registry to see the updated status + doc2 := user.RegistrationGet(docid, symKey) + log.Info().Msgf("SUCCESS! got document: %v", doc2) } // --------------------------------------------------------- diff --git a/server/test/user/blockchain.go b/server/test/user/blockchain.go index 710fc65c..9dde999f 100644 --- a/server/test/user/blockchain.go +++ b/server/test/user/blockchain.go @@ -13,7 +13,7 @@ import ( "golang.org/x/xerrors" ) -const blockchainServer = "localhost:4000" +const blockchainServer = "localhost:3003" // suite is the Kyber suite for Pedersen. var suite = suites.MustFind("Ed25519") diff --git a/server/test/user/smc.go b/server/test/user/smc.go index 5e5c23c1..7997a7a0 100644 --- a/server/test/user/smc.go +++ b/server/test/user/smc.go @@ -8,7 +8,7 @@ import ( "go.dedis.ch/kyber/v3" ) -const smcServer = "localhost:3000" +const smcServer = "localhost:3002" func SmcGetKey() kyber.Point { resp, err := http.Get(smcServer + "/key") From cf6320e4dd904626deb696284d769c5ff0afe723 Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 6 Mar 2024 15:02:26 +0100 Subject: [PATCH 6/9] fix servers build --- server/registration/database/mongodb/dbtypes.go | 3 +-- server/registration/database/mongodb/mongodb.go | 16 ---------------- server/registration/registry/crud/crud.go | 8 ++------ 3 files changed, 3 insertions(+), 24 deletions(-) diff --git a/server/registration/database/mongodb/dbtypes.go b/server/registration/database/mongodb/dbtypes.go index bbca846d..06b27cb9 100644 --- a/server/registration/database/mongodb/dbtypes.go +++ b/server/registration/database/mongodb/dbtypes.go @@ -4,8 +4,7 @@ package mongodb type Document struct { Name string `bson:"name"` Passport string `bson:"passport"` - Role uint `bson:"role"` + Role uint64 `bson:"role"` Picture []byte `bson:"picture"` - Hash []byte `bson:"hash"` Registered bool `bson:"registered"` } diff --git a/server/registration/database/mongodb/mongodb.go b/server/registration/database/mongodb/mongodb.go index 81bb5f68..addf7384 100644 --- a/server/registration/database/mongodb/mongodb.go +++ b/server/registration/database/mongodb/mongodb.go @@ -1,7 +1,6 @@ package mongodb import ( - "bytes" "context" "errors" @@ -42,7 +41,6 @@ func (d dbAccess) Create(data *registry.RegistrationData) (*registry.Registratio Passport: data.Passport, Role: data.Role, Picture: data.Picture, - Hash: data.Hash, Registered: false, } @@ -86,12 +84,6 @@ func (d dbAccess) Read(id registry.RegistrationID, hash []byte) ( return nil, err } - if hash != nil { - if !bytes.Equal(hash, doc.Hash) { - return nil, errors.New("hashes do not match") - } - } - data := registry.RegistrationData{ Name: doc.Name, Passport: doc.Passport, @@ -115,10 +107,6 @@ func (d dbAccess) Update( return err } - if !bytes.Equal(reg.Hash, doc.Hash) { - return errors.New("hashes do not match") - } - result, err := d.client.Database("registration").Collection("documents").UpdateOne(context.Background(), id, reg) if err != nil { @@ -142,10 +130,6 @@ func (d dbAccess) Delete(id registry.RegistrationID, hash []byte) error { return err } - if !bytes.Equal(hash, doc.Hash) { - return errors.New("hashes do not match") - } - result, err := d.client.Database("registration").Collection("documents").DeleteOne(context.Background(), id) if err != nil { diff --git a/server/registration/registry/crud/crud.go b/server/registration/registry/crud/crud.go index e37d45a2..d966e22e 100644 --- a/server/registration/registry/crud/crud.go +++ b/server/registration/registry/crud/crud.go @@ -48,14 +48,11 @@ func CreateDocument(w http.ResponseWriter, r *http.Request, db database.Database return } - hash := r.FormValue("hash") - regData := ®istry.RegistrationData{ Name: name, Passport: passport, - Role: uint(role), + Role: role, Picture: picData, - Hash: []byte(hash), Registered: false, } @@ -151,7 +148,6 @@ func UpdateDocument(w http.ResponseWriter, r *http.Request, db database.Database } return } - hash := r.FormValue("hash") log.Println(fileHeader) @@ -170,7 +166,7 @@ func UpdateDocument(w http.ResponseWriter, r *http.Request, db database.Database regData := ®istry.RegistrationData{ Name: name, Passport: passport, - Role: uint(role), + Role: role, Picture: picData, } From 417bbd56aa548e1c4a2db4f55e13271fcfbe1158 Mon Sep 17 00:00:00 2001 From: Jean Date: Wed, 6 Mar 2024 19:51:40 +0100 Subject: [PATCH 7/9] attempt to fix the test --- server/Makefile | 9 +++- server/{test => }/passport.jpg | Bin server/test/admin/blockchain.go | 4 +- server/test/admin/database.go | 4 +- server/test/admin/smc.go | 3 +- server/test/test.go | 18 +++++-- server/test/user/database.go | 87 +++++++++++++++++++++++++------- 7 files changed, 97 insertions(+), 28 deletions(-) rename server/{test => }/passport.jpg (100%) diff --git a/server/Makefile b/server/Makefile index e4c2e7e6..bdebf450 100644 --- a/server/Makefile +++ b/server/Makefile @@ -1,4 +1,4 @@ -.PHONY: all tidy generate lint vet test coverage pushdoc +.PHONY: all tidy build install lint vet test coverage # Default "make" target to check locally that everything is ok, BEFORE pushing remotely all: lint vet test build @@ -26,6 +26,13 @@ build: tidy # Building executable @go build ./smc/smccli @go build ./blockchain/chaincli + @go build ./registration + +install: tidy + # Building executable + @go install ./smc/smccli + @go install ./blockchain/chaincli + @go install ./registration coverage: tidy # Test and generate a coverage output usable by sonarcloud diff --git a/server/test/passport.jpg b/server/passport.jpg similarity index 100% rename from server/test/passport.jpg rename to server/passport.jpg diff --git a/server/test/admin/blockchain.go b/server/test/admin/blockchain.go index 2fd98d63..350c00f6 100644 --- a/server/test/admin/blockchain.go +++ b/server/test/admin/blockchain.go @@ -62,7 +62,7 @@ func BlockchainGetDocIDs(adminPubkey kyber.Point) []registry.RegistrationID { } // BlockchainGetDocument polls the blockchain to get the encrypted document -func BlockchainGetSecret(id registry.RegistrationID, pk kyber.Point) smc.Secret { +func BlockchainGetSecret(id registry.RegistrationID, pk kyber.Point) (smc.Secret, []byte) { encodedPk, err := pk.MarshalBinary() if err != nil { log.Fatal().Msgf("error: %v", err) @@ -82,5 +82,5 @@ func BlockchainGetSecret(id registry.RegistrationID, pk kyber.Point) smc.Secret log.Error().Msgf("error decoding response: %v", err) } - return secret + return secret, nil } diff --git a/server/test/admin/database.go b/server/test/admin/database.go index 861f3399..cb4de9a0 100644 --- a/server/test/admin/database.go +++ b/server/test/admin/database.go @@ -13,7 +13,7 @@ import ( const registrationServer = "localhost:3001" func RegistrationAdminGetDocument(docid registry.RegistrationID) registry.RegistrationData { - resp, err := http.Get("localhost:3000/admin/document?id=" + string(docid.ID)) + resp, err := http.Get(registrationServer + "/admin/document?id=" + string(docid.ID)) if err != nil { log.Fatal().Msgf("error: %v", err) } @@ -31,7 +31,7 @@ func RegistrationAdminGetDocument(docid registry.RegistrationID) registry.Regist } func RegistrationAdminUpdateDocument(docid registry.RegistrationID) error { - resp, err := http.Get("localhost:3000/admin/document?id=" + string(docid.ID)) + resp, err := http.Get(registrationServer + "/admin/document?id=" + string(docid.ID)) if err != nil { log.Fatal().Msgf("error: %v", err) } diff --git a/server/test/admin/smc.go b/server/test/admin/smc.go index 411490a3..af7ec085 100644 --- a/server/test/admin/smc.go +++ b/server/test/admin/smc.go @@ -18,7 +18,8 @@ const smcServer = "localhost:3002" // SmcReencryptSecret re-encrypts the secret with the new public key // and returns a xhatenc value that can be used to reveal the secret -func SmcReencryptSecret(pk kyber.Point, secret string) (kyber.Point, error) { +// first argument is supposed to be the proof +func SmcReencryptSecret(_ []byte, pk kyber.Point, secret string) (kyber.Point, error) { resp, err := http.Post(smcServer+"/reencrypt", "application/json", bytes.NewBuffer([]byte(`{"pubk": "`+encodePublickey(pk)+`", "encrypted": "`+secret+`"}`))) if err != nil { diff --git a/server/test/test.go b/server/test/test.go index 14a393d4..45ff36af 100644 --- a/server/test/test.go +++ b/server/test/test.go @@ -20,18 +20,25 @@ func main() { // --------------------------------------------------------- // create a document and save it encrypted into the database - doc := createDocument("John Doe", "12AB456789", 0, "passport.jpg") + log.Info().Msg("CREATE document for test purpose") + doc := createDocument("John Doe", "12AB456789", 0, "./passport.jpg") log.Info().Msg("SUCCESS! created new document") // add the document to the registry - docid := user.RegistrationAdd(doc, symKey) + log.Info().Msg("ADD document to the registry") + docid, err := user.RegistrationAdd(doc, symKey) + if err != nil { + log.Fatal().Msgf("error: %v", err) + } log.Info().Msgf("SUCCESS! added document ID=%v", docid) // get the SMC pub key + log.Info().Msg("FETCH SMC key") smcKey := user.SmcGetKey() log.Info().Msgf("SUCCESS! got SMC key: %v", smcKey) // add secret = symKey to the blockchain + log.Info().Msg("ADD secret to the blockchain") secret := user.BlockchainEncryptAndAddSecret(smcKey, symKey, docid) log.Info().Msgf("SUCCESS! added secret=%v with ID=%v to blockchain", secret, docid) @@ -45,10 +52,10 @@ func main() { docIDs := admin.BlockchainGetDocIDs(pk) for _, id := range docIDs { - secret := admin.BlockchainGetSecret(id, pk) + secret, proof := admin.BlockchainGetSecret(id, pk) log.Info().Msgf("secret: %v", secret) - xhatenc, err := admin.SmcReencryptSecret(pk, secret.Data) + xhatenc, err := admin.SmcReencryptSecret(proof, pk, secret.Data) if err != nil { log.Fatal().Msgf("error: %v", err) } @@ -65,6 +72,9 @@ func main() { log.Fatal().Msg("symmetric key mismatch") } + // encrypt binary array with symmetric key + // and save it to the registry + // TODO: get the encrypted document from the registry // TODO: decrypt the document - optional // TODO: update the document status to registered diff --git a/server/test/user/database.go b/server/test/user/database.go index c3e43e81..bbed2c74 100644 --- a/server/test/user/database.go +++ b/server/test/user/database.go @@ -5,35 +5,86 @@ import ( "context" "encoding/binary" "encoding/json" + "io" + "mime/multipart" "net/http" - "net/url" + "strconv" "github.com/rs/zerolog/log" "go.dedis.ch/hbt/server/registration/registry" "go.dedis.ch/hbt/server/test/key" ) -const registrationServer = "localhost:3000" +const registrationServer = "http://localhost:3000" // RegistrationAdd adds a new registration to the registry -func RegistrationAdd(data registry.RegistrationData, symKey []byte) registry.RegistrationID { - // Encrypt the data - encrypted, err := encryptRegistrationData(data, symKey) +func RegistrationAdd(data registry.RegistrationData, symKey []byte) ( + registry.RegistrationID, + error, +) { + var b bytes.Buffer + w := multipart.NewWriter(&b) + + fw, err := w.CreateFormField("pubkey") if err != nil { - log.Fatal().Msgf("error: %v", err) + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, bytes.NewReader(symKey)); err != nil { + return registry.RegistrationID{}, err } - // Add the encrypted document to the registry - resp, err := http.PostForm(registrationServer+"/document", - url.Values{ - "name": {string(encrypted.Name)}, - "passport": {string(encrypted.Passport)}, - "role": {string(encrypted.Role)}, - "picture": {string(encrypted.Picture)}, - "registered": {string(encrypted.Registered)}, - }) + fw, err = w.CreateFormField("name") if err != nil { - log.Fatal().Msgf("error: %v", err) + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, bytes.NewReader([]byte(data.Name))); err != nil { + return registry.RegistrationID{}, err + } + + fw, err = w.CreateFormField("passport") + if err != nil { + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, bytes.NewReader([]byte(data.Passport))); err != nil { + return registry.RegistrationID{}, err + } + + fw, err = w.CreateFormField("role") + if err != nil { + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, + bytes.NewReader([]byte(strconv.FormatUint(data.Role, 10)))); err != nil { + return registry.RegistrationID{}, err + } + + fw, err = w.CreateFormField("registered") + if err != nil { + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, + bytes.NewReader([]byte(strconv.FormatBool(data.Registered)))); err != nil { + return registry.RegistrationID{}, err + } + + fw, err = w.CreateFormField("picture") + if err != nil { + return registry.RegistrationID{}, err + } + if _, err = io.Copy(fw, bytes.NewReader(data.Picture)); err != nil { + return registry.RegistrationID{}, err + } + + defer w.Close() + + req, err := http.NewRequest(http.MethodPost, registrationServer+"/document", &b) + if err != nil { + return registry.RegistrationID{}, err + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + return registry.RegistrationID{}, err } defer resp.Body.Close() @@ -42,10 +93,10 @@ func RegistrationAdd(data registry.RegistrationData, symKey []byte) registry.Reg var docid registry.RegistrationID err = json.NewDecoder(resp.Body).Decode(&docid) if err != nil { - log.Error().Msgf("error decoding response: %v", err) + return registry.RegistrationID{}, err } - return docid + return docid, err } // RegistrationGet polls the data to see if registered From 1bca58c5ed951664b79e2cf45630ac6544462205 Mon Sep 17 00:00:00 2001 From: Jean Date: Mon, 11 Mar 2024 17:25:51 +0100 Subject: [PATCH 8/9] fix registration test --- server/registration/registry/crud/crud.go | 2 -- server/test/passport.jpg | Bin 0 -> 189188 bytes server/test/user/database.go | 13 ++++++++----- server/test/user/smc.go | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) create mode 100644 server/test/passport.jpg diff --git a/server/registration/registry/crud/crud.go b/server/registration/registry/crud/crud.go index d966e22e..c5c37afc 100644 --- a/server/registration/registry/crud/crud.go +++ b/server/registration/registry/crud/crud.go @@ -34,8 +34,6 @@ func CreateDocument(w http.ResponseWriter, r *http.Request, db database.Database return } - log.Println(fileHeader) - picData := make([]byte, fileHeader.Size) _, err = picture.Read(picData) if err != nil { diff --git a/server/test/passport.jpg b/server/test/passport.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a321c5f27c56cf5c2b42a2717d3b02d392411d3 GIT binary patch literal 189188 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 z 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 h$jZ`-5Joq$i_+MLMAZRR_4YDbi3u7*3h5 zc*G-(YCAbox_;)&XPG(ynN0kx;UJN`=8aq}E*1h}<$f+n{ZK%u1jIlzrb)wTvHs;<|R~O@?Jv*$jf{eqFK#*Jj}G903La5n4@G;Wu2@ZkEgtVnxFI zHuI0^4RMlms79werZuwJmjEf0^jj8zsi+-EfD=RZj{&>FH$iz6h?4<-5C;^u%M12u z<6w-u`f?avJ7VVRYb|iz*-}V~mVgIQQ!9IEx7vFm(X(m(U-_MrZW_0oT-O{nL-(|af^>^Py!4QxIJNK#WJGNYH+Yy zKVRu={ePu$e#c{8+qZViGRJ6tyAYZAWwmtBG|j=yq}8!7eUhGG`^JKh;CFUTnFc0Emd)H_!EEPf=QOwqhOjsiBvYG>tkmlA;F6_El`2%JQl(0jDpaY$Al9=g zAn7V1bDxsk^-&R&>M^)IjOpAkZ2;Hmi}r9y06_vo5GJr_VHc7B0LTyqK!HijikUS` z3}%DoO-~lcE~`_3kWfBqXRl`}`Fnwx7-RzH+~%_5`r)eQ*%B4|8Q0GT2DP;$p$)Xe zxbzt01XLX3mPx#6#On83(s8_}DMhk}p#le;dwOMu-Rklorfu4{&l0LmN3 zbO19X&;|O5a3e@@9*ZxB7|3Cq9`BwNtKZ{TTDSf|Sg!}^MCx@xsEZ* z4Fc1;*9uka@vJRd{{SGFyf&`ie$Z9U*@GrU#4Vq&UHO|gnie#gmWz=#PTnEUuD;Q# z=6J@V4Hli(Glc_)n90J&#ZmO$7MRQ+_b>+sdqj{3p}m2)LG5E$){kg{Px2#1=nx}j z-AvrcsagCu#-j}ugSc=7ICv{%gF~8VK}K7qW1(K5Y(oQR4o9HMJeTyZ#yMf4(03Uh zaCu>nK<<+gGU}Wh4q(b1ji6}eKt#Oq6!R*L)7%|Ccv)mqi0DXPh;Z>=iGP~fnJxII zA2WuY;dJfjG3D+it4_v)9M8B}U?LA^LGCrevBO++80qdEki$5~L5_pmY{ohda(UyR z!%^M@5J3bJO;b;jX@on0!m>E%JC{Ou^G_4i4@DAeoj_vA#7ZQ9s~>bxEuHJH(p}Fl z?GM*k<&+~u`dvp24xngMJ55JkN!#4fqP|I`2ps}X8~aWR0A-s5%!#f0wc#&{DRs;MPf6ZQzRJpR04!H@SO$ZQ!`ocg*%RP z6VO_=u3`AGbOdgxOC%fm#`OLF=Zvm4Vh%>Zf)Oh|$Z6x!E1)0$}BA_=($w&_K+ z-f*yst(hMWJ{O?FmwjRCj_A-Wv{sTnDZV1d!8+M$f21IDzynq6yDbod=ZD`fp;tri zQS(H{uR?BlCV-1F_$XVonk3NXYjFaNBsZE{lK8lB)CVV~% zBi0UzH(hQ@q-Uz4wgUVomKqE>_vRIa*Ydy73YBszUy?O!`C(=Hsz#iLGQE=#16@kb z?qxiKreAs#R(_adyf{vnXfV_E2lZk+bwbF(+Iw1Z&YG1+e7>P=9lfXB)lc0PYoDG5 zrBYRu_(wc67-&22vW}|jqWEEA1$=Cr*<{6jJ_)f~>YXZgy%Cf;pplCL#W%<-~R0v4*K|-Rr^+Vc5gN0}oqxL#_s{~*l z6LeSV3H!|;%VO1{X{K}WLZ>Y!R4?#fWqrcxa|e1IFKN6dLQU0*-Cp}{y^?^pD(}ZS) zLKP@gUf-~~$b>0{?s_Lng&Zg3ojQcV4=*T{56uJs{LOD81JU;<84%FB}C` zf-3(109zhd0IA-LGC(V%Wk8P;wg(F%L}`W5!u`cC6+;T4#EeI(8^J|+1s+2JqsS=o zz#tSL6G8weP!wTx9z(KWLy&>QMX>%-tA((>7sEU*uZ{4sx}Wq%4 zqhAzYs>g9<@kX6{IeGCT15_x5(^FAL3n7iW86bk9DE2^wZX@D_6@n<%d!b&zwl_zM zm6xss1u%OD30h!L$0eH246v#Z#Ir(X6p)0fqkLqlpsOg|YO|G9SwU7uVoI!`mPkyj z#}Wb%9;gbTbO)*f)c}C?Kp+r6dY~{E3<3xQ0s#T)h0{l>X!Tb-NFjhjxE;tr1V8m? Ma6Oa%0Oale*^s~Ru>b%7 literal 0 HcmV?d00001 diff --git a/server/test/user/database.go b/server/test/user/database.go index bbed2c74..f01e9dfc 100644 --- a/server/test/user/database.go +++ b/server/test/user/database.go @@ -22,8 +22,8 @@ func RegistrationAdd(data registry.RegistrationData, symKey []byte) ( registry.RegistrationID, error, ) { - var b bytes.Buffer - w := multipart.NewWriter(&b) + var body bytes.Buffer + w := multipart.NewWriter(&body) fw, err := w.CreateFormField("pubkey") if err != nil { @@ -67,7 +67,7 @@ func RegistrationAdd(data registry.RegistrationData, symKey []byte) ( return registry.RegistrationID{}, err } - fw, err = w.CreateFormField("picture") + fw, err = w.CreateFormFile("portrait", "portrait.jpg") if err != nil { return registry.RegistrationID{}, err } @@ -75,13 +75,16 @@ func RegistrationAdd(data registry.RegistrationData, symKey []byte) ( return registry.RegistrationID{}, err } - defer w.Close() + w.Close() - req, err := http.NewRequest(http.MethodPost, registrationServer+"/document", &b) + req, err := http.NewRequest(http.MethodPost, registrationServer+"/document", &body) if err != nil { return registry.RegistrationID{}, err } + // Don't forget to set the content type, this will contain the boundary. + req.Header.Set("Content-Type", w.FormDataContentType()) + resp, err := http.DefaultClient.Do(req) if err != nil { return registry.RegistrationID{}, err diff --git a/server/test/user/smc.go b/server/test/user/smc.go index 7997a7a0..cd79be7e 100644 --- a/server/test/user/smc.go +++ b/server/test/user/smc.go @@ -8,10 +8,10 @@ import ( "go.dedis.ch/kyber/v3" ) -const smcServer = "localhost:3002" +const smcServer = "http://localhost:40001" func SmcGetKey() kyber.Point { - resp, err := http.Get(smcServer + "/key") + resp, err := http.Get(smcServer + "/smc/pubkey") if err != nil { log.Fatal().Msgf("error: %v", err) } From 2afce36d62eb06c2e4b2953a28fc3ab5f4196bcc Mon Sep 17 00:00:00 2001 From: Jean Date: Mon, 11 Mar 2024 19:27:57 +0100 Subject: [PATCH 9/9] fix SMC get key via http GET --- .gitignore | 4 +- server/scripts/setup.sh | 2 +- server/scripts/start_chain.sh | 3 +- server/scripts/start_smc.sh | 2 + server/smc/smccli/web/action.go | 264 ++++++++++++++++++++++++++++++++ server/smc/smccli/web/web.go | 87 +++++++++++ 6 files changed, 358 insertions(+), 4 deletions(-) create mode 100644 server/smc/smccli/web/action.go create mode 100644 server/smc/smccli/web/web.go diff --git a/.gitignore b/.gitignore index 6745c3fe..c37d6236 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,8 @@ gradle.properties -chaincli -smccli +*/chaincli +*/smccli profile.cov report.json diff --git a/server/scripts/setup.sh b/server/scripts/setup.sh index f9fe7377..c4bbb0d2 100755 --- a/server/scripts/setup.sh +++ b/server/scripts/setup.sh @@ -35,7 +35,7 @@ tmux send-keys -t ${S}:smc.0 "./publish_roster.sh" C-m tmux select-pane -t ${S}:smc.0 tmux send-keys -t ${S}:smc.0 "# TMUX MINI CHEAT SHEET" C-m tmux send-keys -t ${S}:smc.0 "# Use 'tmux lscm' to list tmux commands" C-m -tmux send-keys -t ${S}:smc.0 "# Use 'Ctrl+B N (or P)' for next (previous) window" C-m +tmux send-keys -t ${S}:smc.0 "# Use 'Ctrl+B N (or P)' for next (or previous) window" C-m tmux send-keys -t ${S}:smc.0 "# Use 'Ctrl+B ' to select pane" C-m tmux send-keys -t ${S}:smc.0 "# './teardown.sh' to clean this tmux session" C-m tmux attach -t ${S} diff --git a/server/scripts/start_chain.sh b/server/scripts/start_chain.sh index 03c9d06c..e4a33d55 100755 --- a/server/scripts/start_chain.sh +++ b/server/scripts/start_chain.sh @@ -59,7 +59,7 @@ do echo -e "${GREEN}creating node #${i} on port ${p}${NC}" # session s, window 0, panes 1 to N tmux send-keys -t ${S}:${W}.${i} "LLVL=${L} LOGF=./${W}${i}.log chaincli --config /tmp/${W}${i} start --listen tcp://127.0.0.1:${p}" C-m - sleep 0.5 + sleep 1 i=$((i + 1)); done @@ -71,6 +71,7 @@ while [ ${i} -le ${N} ] do echo -e "joining node ${i} on master pane ${MASTERPANE}" tmux send-keys -t "${MASTERPANE}" "chaincli --config /tmp/${W}${i} minogrpc join --address //127.0.0.1:${p} $(chaincli --config /tmp/${W}1 minogrpc token)" C-m + sleep 1 i=$((i + 1)); done diff --git a/server/scripts/start_smc.sh b/server/scripts/start_smc.sh index cf799d9e..c7a340c7 100755 --- a/server/scripts/start_smc.sh +++ b/server/scripts/start_smc.sh @@ -65,7 +65,9 @@ i=2; p=$((P + 1)) while [ ${i} -le ${N} ] do + sleep 1 tmux send-keys -t "${MASTERPANE}" "smccli --config /tmp/${W}${i} minogrpc join --address //127.0.0.1:${p} $(smccli --config /tmp/${W}1 minogrpc token)" C-m + sleep 1 i=$((i + 1)); done diff --git a/server/smc/smccli/web/action.go b/server/smc/smccli/web/action.go new file mode 100644 index 00000000..5e092b36 --- /dev/null +++ b/server/smc/smccli/web/action.go @@ -0,0 +1,264 @@ +package web + +import ( + "encoding/hex" + "encoding/json" + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" + "github.com/rs/zerolog/log" + "go.dedis.ch/dela" + "go.dedis.ch/dela/cli/node" + "go.dedis.ch/dela/dkg" + "go.dedis.ch/dela/mino/proxy" + "go.dedis.ch/kyber/v3" + "go.dedis.ch/kyber/v3/suites" + + "golang.org/x/xerrors" +) + +// suite is the Kyber suite for Pedersen. +var suite = suites.MustFind("Ed25519") + +const separator = ":" +const malformedEncoded = "malformed encoded: %s" + +// RegisterAction is an action to register the HTTP handlers +// +// - implements node.ActionTemplate +type RegisterAction struct{} + +// Execute implements node.ActionTemplate. It registers the handlers using the +// default proxy from the injector. +func (a *RegisterAction) Execute(ctx node.Context) error { + var p proxy.Proxy + err := ctx.Injector.Resolve(&p) + if err != nil { + return xerrors.Errorf("failed to resolve proxy: %v", err) + } + + router := mux.NewRouter() + + pk := &pubKeyHandler{ctx} + router.HandleFunc("/smc/pubkey", pk.ServeHTTP).Methods("GET") + + re := &reencryptHandler{ctx} + router.HandleFunc("/smc/reencrypt", re.ServeHTTP).Methods("POST") + + router.NotFoundHandler = http.HandlerFunc(notFoundHandler) + router.MethodNotAllowedHandler = http.HandlerFunc(notAllowedHandler) + + p.RegisterHandler("/smc/", router.ServeHTTP) + + dela.Logger.Info().Msg("proxy handlers registered") + + return nil +} + +type pubKeyHandler struct { + ctx node.Context +} + +func (h *pubKeyHandler) ServeHTTP(w http.ResponseWriter, _ *http.Request) { + var a dkg.Actor + err := h.ctx.Injector.Resolve(&a) + if err != nil { + http.Error(w, fmt.Sprintf("failed to resolve DKG actor: %v", err), + http.StatusInternalServerError) + return + } + + pk, err := a.GetPublicKey() + if err != nil { + http.Error(w, fmt.Sprintf("failed retrieving public key: %v", err), + http.StatusInternalServerError) + return + } + + b, err := pk.MarshalBinary() + if err != nil { + http.Error(w, fmt.Sprintf("failed to marshal public key: %v", err), + http.StatusInternalServerError) + return + } + + encoder := json.NewEncoder(w) + err = encoder.Encode(b) + if err != nil { + http.Error(w, fmt.Sprintf("failed to respond: %v", err), + http.StatusInternalServerError) + return + } +} + +type reencryptHandler struct { + ctx node.Context +} + +func (h *reencryptHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + var a dkg.Actor + err := h.ctx.Injector.Resolve(&a) + if err != nil { + http.Error(w, fmt.Sprintf("failed to resolve DKG actor: %v", err), + http.StatusInternalServerError) + return + } + + err = r.ParseForm() + if err != nil { + log.Err(err).Msg("failed to parse form") + http.Error(w, "failed to parse form", http.StatusInternalServerError) + return + } + + // XHATENC=$(smccli --config /tmp/smc1 dkg reencrypt --encrypted ${CIPHER} --pubk ${PUBK}) + + // retrieve the public key + pubkString := r.FormValue("pubk") + pubk, err := decodePublicKey(pubkString) + if err != nil { + http.Error(w, fmt.Sprintf("failed to decode public key str: %v", err), + http.StatusInternalServerError) + return + } + + // retrieve the encrypted cypher + encrypted := r.FormValue("encrypted") + k, _, err := decodeEncrypted(encrypted) + if err != nil { + http.Error(w, fmt.Sprintf("failed to decode encrypted str: %v", err), + http.StatusInternalServerError) + return + } + + // re-encrypt the message + hatenc, err := a.Reencrypt(k, pubk) + if err != nil { + http.Error(w, fmt.Sprintf("failed to re-encrypt: %v", err), + http.StatusInternalServerError) + return + } + + // write back the re-encrypted message + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusCreated) + encoder := json.NewEncoder(w) + err = encoder.Encode(hatenc) + if err != nil { + http.Error(w, fmt.Sprintf("failed to encode response: %v", err), + http.StatusInternalServerError) + return + } + + dela.Logger.Debug().Msgf("Re-encrypted message: %v", hatenc) +} + +// ----------------------------------------------------------------------------- +// Helper functions +func decodePublicKey(str string) (kyber.Point, error) { + pkbuff, err := hex.DecodeString(str) + if err != nil { + return nil, xerrors.Errorf(malformedEncoded, str) + } + + pk := suite.Point() + err = pk.UnmarshalBinary(pkbuff) + if err != nil { + return nil, xerrors.Errorf("failed to unmarshal pk: %v", err) + } + + return pk, nil +} + +func decodeEncrypted(str string) (kyber.Point, []kyber.Point, error) { + parts := strings.Split(str, separator) + if len(parts) < 2 { + return nil, nil, xerrors.Errorf(malformedEncoded, str) + } + + // Decode K + kbuff, err := hex.DecodeString(parts[0]) + if err != nil { + return nil, nil, xerrors.Errorf("failed to decode k point: %v", err) + } + + k := suite.Point() + err = k.UnmarshalBinary(kbuff) + if err != nil { + return nil, nil, xerrors.Errorf("failed to unmarshal k point: %v", err) + } + + // Decode Cs + cs := make([]kyber.Point, 0, len(parts)-1) + for _, p := range parts[1:] { + cbuff, err := hex.DecodeString(p) + if err != nil { + return nil, nil, xerrors.Errorf("failed to decode c point: %v", err) + } + + c := suite.Point() + err = c.UnmarshalBinary(cbuff) + if err != nil { + return nil, nil, xerrors.Errorf("failed to unmarshal c point: %v", err) + } + + cs = append(cs, c) + } + + dela.Logger.Debug().Msgf("Decoded K: %v and Cs: %v", k, cs) + + return k, cs, nil +} + +// ----------------------------------------------------------------------------- +// Helper functions + +// HTTPError defines the standard error format +type HTTPError struct { + Title string + Code uint + Message string + Args map[string]interface{} +} + +// notFoundHandler defines a generic handler for 404 +func notFoundHandler(w http.ResponseWriter, r *http.Request) { + err := HTTPError{ + Title: "Not found", + Code: http.StatusNotFound, + Message: "The requested endpoint was not found", + Args: map[string]interface{}{ + "url": r.URL.String(), + "method": r.Method, + }, + } + + buf, _ := json.MarshalIndent(&err, "", " ") + + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Header().Set("X-Content-Type-Options", "nosniff") + w.WriteHeader(http.StatusNotFound) + fmt.Fprintln(w, string(buf)) +} + +// notAllowedHandler degines a generic handler for 405 +func notAllowedHandler(w http.ResponseWriter, r *http.Request) { + err := HTTPError{ + Title: "Not allowed", + Code: http.StatusMethodNotAllowed, + Message: "The requested endpoint was not allowed", + Args: map[string]interface{}{ + "url": r.URL.String(), + "method": r.Method, + }, + } + + buf, _ := json.MarshalIndent(&err, "", " ") + + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.Header().Set("X-Content-Type-Options", "nosniff") + w.WriteHeader(http.StatusMethodNotAllowed) + fmt.Fprintln(w, string(buf)) +} diff --git a/server/smc/smccli/web/web.go b/server/smc/smccli/web/web.go new file mode 100644 index 00000000..ded79c84 --- /dev/null +++ b/server/smc/smccli/web/web.go @@ -0,0 +1,87 @@ +package web + +import ( + "os" + "time" + + "go.dedis.ch/dela" + "go.dedis.ch/dela/cli" + "go.dedis.ch/dela/cli/node" + "go.dedis.ch/dela/mino/proxy" + "go.dedis.ch/dela/mino/proxy/http" + "golang.org/x/xerrors" +) + +var defaultRetry = 10 +var proxyFac func(string) proxy.Proxy = http.NewHTTP + +const defaultProxyAddr = "127.0.0.1:3002" + +// NewController returns a new controller initializer +func NewController() node.Initializer { + return controller{} +} + +// controller is an initializer with a set of commands. +// +// - implements node.Initializer +type controller struct{} + +// Build implements node.Initializer. +func (m controller) SetCommands(builder node.Builder) { + builder.SetStartFlags( + cli.StringFlag{ + Name: "proxyaddr", + Usage: "the proxy address", + Required: false, + Value: defaultProxyAddr, + }, + ) +} + +// OnStart implements node.Initializer. It creates and registers a pedersen DKG. +func (m controller) OnStart(ctx cli.Flags, inj node.Injector) error { + dela.Logger.Info().Msg("Installing SMC proxy") + + proxyAddr := ctx.String("proxyaddr") + + proxyhttp := proxyFac(proxyAddr) + + inj.Inject(proxyhttp) + + go proxyhttp.Listen() + + for i := 0; i < defaultRetry && proxyhttp.GetAddr() == nil; i++ { + time.Sleep(time.Second) + } + + if proxyhttp.GetAddr() == nil { + return xerrors.Errorf("failed to start proxy server") + } + + // We assume the listen worked proprely, however it might not be the case. + // The log should inform the user about that. + dela.Logger.Info().Msgf("started proxy server on %s", proxyhttp.GetAddr().String()) + + // + // Register the smc proxy handlers + // + + register := RegisterAction{} + err := register.Execute(node.Context{ + Injector: inj, + Flags: node.FlagSet{}, + Out: os.Stdout, + }) + + if err != nil { + return xerrors.Errorf("failed to register SMC web handlers: %v", err) + } + + return nil +} + +// OnStop implements node.Initializer. +func (controller) OnStop(_ node.Injector) error { + return nil +}