aboutsummaryrefslogtreecommitdiff
path: root/type.go
diff options
context:
space:
mode:
authorRasmus Dahlberg <rasmus.dahlberg@kau.se>2020-10-22 15:08:47 +0200
committerRasmus Dahlberg <rasmus.dahlberg@kau.se>2020-10-22 15:08:47 +0200
commit2793442e21f19fc3f764e1f848b83d96076dcfb0 (patch)
tree8b2adfcca8c9753fe463dc4ad47224c178bbe73e /type.go
parentec4741e374beeb085579ba896fdee2cd6f0f8848 (diff)
added parameter parsing for get-entries
Diffstat (limited to 'type.go')
-rw-r--r--type.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/type.go b/type.go
index 031ae8d..dcb2a9a 100644
--- a/type.go
+++ b/type.go
@@ -2,8 +2,10 @@ package stfe
import (
"fmt"
+ "strconv"
"encoding/base64"
+ "net/http"
"github.com/google/certificate-transparency-go/tls"
)
@@ -98,3 +100,32 @@ type AddEntryRequest struct {
Signature string `json:"signature"`
Certificate string `json:"certificate"`
}
+
+// GetEntriesRequest is a collection of get-entry input parameters
+type GetEntriesRequest struct {
+ Start int64
+ End int64
+}
+
+func (r *GetEntriesRequest) Unpack(httpRequest *http.Request) error {
+ var err error
+
+ r.Start, err = strconv.ParseInt(httpRequest.FormValue("start"), 10, 64)
+ if err != nil {
+ return fmt.Errorf("bad start parameter: %v", err)
+ }
+ r.End, err = strconv.ParseInt(httpRequest.FormValue("end"), 10, 64)
+ if err != nil {
+ return fmt.Errorf("bad end parameter: %v", err)
+ }
+
+ if r.Start < 0 {
+ return fmt.Errorf("bad parameters: start(%v) must have a non-negative value", r.Start)
+ }
+ if r.Start > r.End {
+ return fmt.Errorf("bad parameters: start(%v) must be larger than end(%v)", r.Start, r.End)
+ }
+ // TODO: check that range is not larger than the max range. Yes -> truncate
+ // TODO: check that end is not past the most recent STH. Yes -> truncate
+ return nil
+}