@@ -19,24 +19,40 @@ import (
1919 "net"
2020 "testing"
2121
22+ "github.com/gogo/protobuf/proto"
2223 "github.com/golang/protobuf/ptypes"
24+ "github.com/golang/protobuf/ptypes/any"
2325 "github.com/golang/protobuf/ptypes/empty"
2426 "github.com/google/trillian"
27+ "github.com/google/trillian/crypto/keys"
2528 "github.com/google/trillian/crypto/keyspb"
2629 "github.com/google/trillian/crypto/sigpb"
2730 "github.com/kylelemons/godebug/pretty"
2831 "golang.org/x/net/context"
2932 "google.golang.org/grpc"
3033)
3134
35+ func marshalAny (p proto.Message ) * any.Any {
36+ anyKey , err := ptypes .MarshalAny (p )
37+ if err != nil {
38+ panic (err )
39+ }
40+ return anyKey
41+ }
42+
3243func TestRun (t * testing.T ) {
33- pemKey := & keyspb.PEMKeyFile {
34- Path : "../../testdata/log-rpc-server.privkey.pem" ,
35- Password : "towel" ,
44+ pemPath , pemPassword := "../../testdata/log-rpc-server.privkey.pem" , "towel"
45+ pemSigner , err := keys .NewFromPrivatePEMFile (pemPath , pemPassword )
46+ if err != nil {
47+ t .Fatalf ("NewFromPrivatPEM(): %v" , err )
3648 }
37- anyKey , err := ptypes . MarshalAny ( pemKey )
49+ pemDer , err := keys . MarshalPrivateKey ( pemSigner )
3850 if err != nil {
39- t .Fatalf ("Can't marshall pemKey: %v" , err )
51+ t .Fatalf ("MashalPrivateKey(): %v" , err )
52+ }
53+ anyPrivKey , err := ptypes .MarshalAny (& keyspb.PrivateKey {Der : pemDer })
54+ if err != nil {
55+ t .Fatalf ("MarshalAny(%v): %v" , pemDer , err )
4056 }
4157
4258 // defaultTree reflects all flag defaults with the addition of a valid pk
@@ -46,7 +62,7 @@ func TestRun(t *testing.T) {
4662 HashStrategy : trillian .HashStrategy_RFC_6962 ,
4763 HashAlgorithm : sigpb .DigitallySigned_SHA256 ,
4864 SignatureAlgorithm : sigpb .DigitallySigned_RSA ,
49- PrivateKey : anyKey ,
65+ PrivateKey : anyPrivKey ,
5066 }
5167
5268 server , lis , stopFn , err := startFakeServer ()
@@ -57,8 +73,8 @@ func TestRun(t *testing.T) {
5773
5874 validOpts := newOptsFromFlags ()
5975 validOpts .addr = lis .Addr ().String ()
60- validOpts .pemKeyPath = pemKey . Path
61- validOpts .pemKeyPass = pemKey . Password
76+ validOpts .pemKeyPath = pemPath
77+ validOpts .pemKeyPass = pemPassword
6278
6379 nonDefaultTree := * defaultTree
6480 nonDefaultTree .TreeType = trillian .TreeType_MAP
@@ -87,60 +103,33 @@ func TestRun(t *testing.T) {
87103 emptyPEMPass := * validOpts
88104 emptyPEMPass .pemKeyPass = ""
89105
106+ pemKeyOpts := * validOpts
107+ pemKeyOpts .privateKeyType = "PEMKeyFile"
108+ pemKeyTree := * defaultTree
109+ pemKeyTree .PrivateKey , err = ptypes .MarshalAny (& keyspb.PEMKeyFile {
110+ Path : pemPath ,
111+ Password : pemPassword ,
112+ })
113+ if err != nil {
114+ t .Fatalf ("MarshalAny(PEMKeyFile): %v" , err )
115+ }
90116 tests := []struct {
91117 desc string
92118 opts * createOpts
93119 createErr error
94120 wantErr bool
95121 wantTree * trillian.Tree
96122 }{
97- {
98- desc : "validOpts" ,
99- opts : validOpts ,
100- wantTree : defaultTree ,
101- },
102- {
103- desc : "nonDefaultOpts" ,
104- opts : & nonDefaultOpts ,
105- wantTree : & nonDefaultTree ,
106- },
107- {
108- // No mandatory opts provided
109- desc : "defaultOptsOnly" ,
110- opts : newOptsFromFlags (),
111- wantErr : true ,
112- },
113- {
114- desc : "emptyAddr" ,
115- opts : & emptyAddr ,
116- wantErr : true ,
117- },
118- {
119- desc : "invalidEnumOpts" ,
120- opts : & invalidEnumOpts ,
121- wantErr : true ,
122- },
123- {
124- desc : "invalidKeyTypeOpts" ,
125- opts : & invalidKeyTypeOpts ,
126- wantErr : true ,
127- },
128- {
129- desc : "emptyPEMPath" ,
130- opts : & emptyPEMPath ,
131- wantErr : true ,
132- },
133- {
134- desc : "emptyPEMPass" ,
135- opts : & emptyPEMPass ,
136- wantErr : true ,
137- },
138- {
139- desc : "createErr" ,
140- opts : validOpts ,
141- createErr : errors .New ("create tree failed" ),
142- wantErr : true ,
143- },
123+ {desc : "validOpts" , opts : validOpts , wantTree : defaultTree },
124+ {desc : "nonDefaultOpts" , opts : & nonDefaultOpts , wantTree : & nonDefaultTree },
125+ {desc : "defaultOptsOnly" , opts : newOptsFromFlags (), wantErr : true }, // No mandatory opts provided
126+ {desc : "emptyAddr" , opts : & emptyAddr , wantErr : true },
127+ {desc : "invalidEnumOpts" , opts : & invalidEnumOpts , wantErr : true },
128+ {desc : "invalidKeyTypeOpts" , opts : & invalidKeyTypeOpts , wantErr : true },
129+ {desc : "emptyPEMPath" , opts : & emptyPEMPath , wantErr : true },
130+ {desc : "emptyPEMPass" , opts : & emptyPEMPass , wantErr : true },
131+ {desc : "PEMKeyFile" , opts : & pemKeyOpts , wantErr : false , wantTree : & pemKeyTree },
132+ {desc : "createErr" , opts : validOpts , createErr : errors .New ("create tree failed" ), wantErr : true },
144133 }
145134
146135 ctx := context .Background ()
0 commit comments