Verify file and reader

This commit is contained in:
Paul van Brouwershaven
2018-05-18 10:42:48 +02:00
parent ca3abfba98
commit 884b79e264

View File

@@ -2,12 +2,15 @@ package verify
import ( import (
"bytes" "bytes"
"crypto"
"crypto/x509" "crypto/x509"
"encoding/asn1" "encoding/asn1"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"log"
"os" "os"
"runtime/debug"
"time" "time"
"crypto" "crypto"
@@ -47,8 +50,16 @@ type Certificate struct {
CRLEmbedded bool CRLEmbedded bool
} }
func Verify(file *os.File) (apiResp *Response, err error) { func File(file *os.File) (apiResp *Response, err error) {
finfo, _ := file.Stat()
file.Seek(0, 0)
return Reader(file, finfo.Size())
}
func Reader(file io.ReaderAt, size int64) (apiResp *Response, err error) {
defer func() { defer func() {
log.Printf("%s\n", debug.Stack())
if r := recover(); r != nil { if r := recover(); r != nil {
apiResp = nil apiResp = nil
err = fmt.Errorf("Failed to verify file (%v)", r) err = fmt.Errorf("Failed to verify file (%v)", r)
@@ -56,11 +67,6 @@ func Verify(file *os.File) (apiResp *Response, err error) {
}() }()
apiResp = &Response{} apiResp = &Response{}
finfo, _ := file.Stat()
size := finfo.Size()
file.Seek(0, 0)
rdr, err := pdf.NewReader(file, size) rdr, err := pdf.NewReader(file, size)
if err != nil { if err != nil {
return nil, fmt.Errorf("Failed to open file: %v", err) return nil, fmt.Errorf("Failed to open file: %v", err)
@@ -146,8 +152,7 @@ func Verify(file *os.File) (apiResp *Response, err error) {
signer.TimeStamp, err = timestamp.Parse(attr.Value.Bytes) signer.TimeStamp, err = timestamp.Parse(attr.Value.Bytes)
if err != nil { if err != nil {
apiResp.Error = fmt.Sprintln("Failed to parse timestamp", err) apiResp.Error = fmt.Sprintln("Failed to parse timestamp", err)
} } else {
r := bytes.NewReader(s.EncryptedDigest) r := bytes.NewReader(s.EncryptedDigest)
h := crypto.SHA256.New() h := crypto.SHA256.New()
b := make([]byte, 32) b := make([]byte, 32)
@@ -168,6 +173,7 @@ func Verify(file *os.File) (apiResp *Response, err error) {
} }
} }
} }
}
// Directory of certificates, including OCSP // Directory of certificates, including OCSP
//var ica *x509.Certificate //var ica *x509.Certificate