package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/cryptoballot/rsablind"
|
|
"github.com/fatih/color"
|
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
)
|
|
|
|
type User struct {
|
|
Id bson.ObjectId `json:"id" bson:"_id,omitempty"`
|
|
Email string `json:"email"`
|
|
Password string `json:"password"`
|
|
Token string `json:"token"`
|
|
}
|
|
|
|
func Index(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Fprintln(w, "clientApp")
|
|
}
|
|
|
|
func Signup(w http.ResponseWriter, r *http.Request) {
|
|
|
|
decoder := json.NewDecoder(r.Body)
|
|
var user User
|
|
err := decoder.Decode(&user)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer r.Body.Close()
|
|
|
|
fmt.Print("user signup: ")
|
|
fmt.Println(user)
|
|
|
|
jResp, err := json.Marshal(user)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Fprintln(w, string(jResp))
|
|
}
|
|
|
|
func Login(w http.ResponseWriter, r *http.Request) {
|
|
|
|
decoder := json.NewDecoder(r.Body)
|
|
var key Key
|
|
err := decoder.Decode(&key)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer r.Body.Close()
|
|
//TODO check if the user password exists in the database
|
|
|
|
fmt.Print("key login: ")
|
|
fmt.Println(key)
|
|
token, err := newToken()
|
|
check(err)
|
|
|
|
//validate if the pubK darkID is in the blockchain
|
|
|
|
//verify that the darkID is signed
|
|
if err := rsablind.VerifyBlindSignature(key.ServerVerifier, key.Hashed, key.UnblindedSig); err != nil {
|
|
fmt.Println(err)
|
|
} else {
|
|
color.Green("blind signature verified")
|
|
}
|
|
|
|
/*jResp, err := json.Marshal(token)
|
|
if err != nil {
|
|
panic(err)
|
|
}*/
|
|
fmt.Fprintln(w, string(token))
|
|
}
|