pkg/jsonsign: replace JSON map with struct in verify response

This change is related to Issue #539.

Change-Id: I40feb09dd8a4270edd0daf6c267eed60f13280e7
This commit is contained in:
Fabian Reinartz 2015-05-02 14:47:01 +02:00
parent 016f3082af
commit a624d4271e
2 changed files with 37 additions and 9 deletions

View File

@ -34,6 +34,7 @@ import (
"camlistore.org/pkg/jsonsign"
"camlistore.org/pkg/osutil"
"camlistore.org/pkg/schema"
"camlistore.org/pkg/types/camtypes"
"camlistore.org/third_party/code.google.com/p/go.crypto/openpgp"
)
@ -204,25 +205,23 @@ func (h *Handler) handleVerify(rw http.ResponseWriter, req *http.Request) {
return
}
m := make(map[string]interface{})
// TODO: use a different fetcher here that checks memory, disk,
// the internet, etc.
fetcher := h.pubKeyFetcher
var res camtypes.VerifyResponse
vreq := jsonsign.NewVerificationRequest(sjson, fetcher)
if vreq.Verify() {
m["signatureValid"] = 1
m["signerKeyId"] = vreq.SignerKeyId
m["verifiedData"] = vreq.PayloadMap
res.SignatureValid = true
res.SignerKeyId = vreq.SignerKeyId
res.VerifiedData = vreq.PayloadMap
} else {
errStr := vreq.Err.Error()
m["signatureValid"] = 0
m["errorMessage"] = errStr
res.SignatureValid = false
res.ErrorMessage = vreq.Err.Error()
}
rw.WriteHeader(http.StatusOK) // no HTTP response code fun, error info in JSON
httputil.ReturnJSON(rw, m)
httputil.ReturnJSON(rw, &res)
}
func (h *Handler) handleSign(rw http.ResponseWriter, req *http.Request) {

View File

@ -0,0 +1,29 @@
/*
Copyright 2015 The Camlistore Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package camtypes
// VerifyResponse is the JSON response for a signature verification request.
type VerifyResponse struct {
// SignatureValid is true if the signature is valid.
SignatureValid bool `json:"signatureValid"`
// ErrorMessage contains the error that occurred, if any.
ErrorMessage string `json:"errorMessage,omitempty"`
// SignerKeyId is the ID of the signing key.
SignerKeyId string `json:"signerKeyId,omitempty"`
// VerifiedData contains the JSON values from the payload that we signed.
VerifiedData map[string]interface{} `json:"verifiedData,omitempty"`
}