darkID-prototype/serverIDsigner/main.go
serverIDsigner/main.goRaw
1package main
2
3import (
4 "crypto/rand"
5 "crypto/rsa"
6 "log"
7 "net/http"
8 "os"
9
10 mgo "gopkg.in/mgo.v2"
11
12 "github.com/fatih/color"
13 "github.com/gorilla/handlers"
14)
15
16const keysDir = "keys"
17const keysize = 2048
18const hashize = 1536
19
20var userCollection *mgo.Collection
21
22var serverKey *rsa.PrivateKey
23
24func main() {
25 color.Blue("Starting serverIDsigner")
26
27 //read configuration file
28 readConfig("config.json")
29
30 //create models directory
31 _ = os.Mkdir(keysDir, os.ModePerm)
32
33 initializeToken()
34
35 //initialize RSA
36 //generate RSA keys pair
37 reader := rand.Reader
38 k, err := rsa.GenerateKey(reader, keysize)
39 check(err)
40 serverKey = k
41
42 savePEMKey(keysDir+"/server_private.pem", k)
43 savePublicPEMKey(keysDir+"/server_public.pem", k.PublicKey)
44
45 //mongodb
46 session, err := getSession()
47 check(err)
48 userCollection = getCollection(session, "users")
49
50 //run API
51 log.Println("api server running")
52 log.Print("port: ")
53 log.Println(config.Port)
54 router := NewRouter()
55 headersOk := handlers.AllowedHeaders([]string{"X-Requested-With", "Access-Control-Allow-Origin"})
56 originsOk := handlers.AllowedOrigins([]string{"*"})
57 methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
58 log.Fatal(http.ListenAndServe(":"+config.Port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
59}