...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package client
16
17 import (
18 "context"
19 "errors"
20 "strconv"
21
22 ct "github.com/google/certificate-transparency-go"
23 "github.com/google/certificate-transparency-go/x509"
24 )
25
26
27 func (c *LogClient) GetRawEntries(ctx context.Context, start, end int64) (*ct.GetEntriesResponse, error) {
28 if end < 0 {
29 return nil, errors.New("end should be >= 0")
30 }
31 if end < start {
32 return nil, errors.New("start should be <= end")
33 }
34
35 params := map[string]string{
36 "start": strconv.FormatInt(start, 10),
37 "end": strconv.FormatInt(end, 10),
38 }
39
40 var resp ct.GetEntriesResponse
41 if _, _, err := c.GetAndParse(ctx, ct.GetEntriesPath, params, &resp); err != nil {
42 return nil, err
43 }
44
45 return &resp, nil
46 }
47
48
49
50
51
52
53 func (c *LogClient) GetEntries(ctx context.Context, start, end int64) ([]ct.LogEntry, error) {
54 resp, err := c.GetRawEntries(ctx, start, end)
55 if err != nil {
56 return nil, err
57 }
58 entries := make([]ct.LogEntry, len(resp.Entries))
59 for i, entry := range resp.Entries {
60 index := start + int64(i)
61 logEntry, err := ct.LogEntryFromLeaf(index, &entry)
62 if x509.IsFatal(err) {
63 return nil, err
64 }
65 entries[i] = *logEntry
66 }
67 return entries, nil
68 }
69
View as plain text