...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package ctpolicy
16
17 import (
18 "github.com/google/certificate-transparency-go/loglist3"
19 "github.com/google/certificate-transparency-go/x509"
20 )
21
22
23 type ChromeCTPolicy struct {
24 }
25
26
27
28
29 func (chromeP ChromeCTPolicy) LogsByGroup(cert *x509.Certificate, approved *loglist3.LogList) (LogPolicyData, error) {
30 googGroup := LogGroupInfo{Name: "Google-operated", IsBase: false}
31 googGroup.populate(approved, func(op *loglist3.Operator) bool { return op.GoogleOperated() })
32 if err := googGroup.setMinInclusions(1); err != nil {
33 return nil, err
34 }
35
36 nonGoogGroup := LogGroupInfo{Name: "Non-Google-operated", IsBase: false}
37 nonGoogGroup.populate(approved, func(op *loglist3.Operator) bool { return !op.GoogleOperated() })
38 if err := nonGoogGroup.setMinInclusions(1); err != nil {
39 return nil, err
40 }
41 var incCount int
42 switch m := lifetimeInMonths(cert); {
43 case m < 15:
44 incCount = 2
45 case m <= 27:
46 incCount = 3
47 case m <= 39:
48 incCount = 4
49 default:
50 incCount = 5
51 }
52 baseGroup, err := BaseGroupFor(approved, incCount)
53 if err != nil {
54 return nil, err
55 }
56 groups := LogPolicyData{
57 googGroup.Name: &googGroup,
58 nonGoogGroup.Name: &nonGoogGroup,
59 baseGroup.Name: baseGroup,
60 }
61 return groups, nil
62 }
63
64
65 func (chromeP ChromeCTPolicy) Name() string {
66 return "Chrome"
67 }
68
View as plain text