@@ -189,7 +189,7 @@ func assertionRequestFromFlagsUnchecked(cc *cli.Context) (*mtc.AssertionRequest,
189189
190190 var (
191191 a mtc.Assertion
192- e mtc.Evidence
192+ el mtc.EvidenceList
193193 scheme mtc.SignatureScheme
194194 )
195195
@@ -250,8 +250,11 @@ func assertionRequestFromFlagsUnchecked(cc *cli.Context) (*mtc.AssertionRequest,
250250 return nil , fmt .Errorf ("from-x509: %s" , err )
251251 }
252252
253- e .Type = mtc .X509ChainEvidenceType
254- e .Info = mtc .X509ChainEvidenceInfo (certs )
253+ ev , err := mtc .NewX509ChainEvidence (certs )
254+ if err != nil {
255+ return nil , err
256+ }
257+ el = append (el , ev )
255258 }
256259
257260 // Setting any claim will overwrite those suggested by the
@@ -342,7 +345,7 @@ func assertionRequestFromFlagsUnchecked(cc *cli.Context) (*mtc.AssertionRequest,
342345
343346 return & mtc.AssertionRequest {
344347 Assertion : a ,
345- Evidence : e ,
348+ Evidence : el ,
346349 Checksum : checksum ,
347350 }, nil
348351}
@@ -498,7 +501,10 @@ func handleCaShowQueue(cc *cli.Context) error {
498501 if len (cs .IPv6 ) != 0 {
499502 fmt .Fprintf (w , "ip6\t %s\n " , cs .IPv6 )
500503 }
501- writeEvidence (w , ar .Evidence )
504+ err = writeEvidenceList (w , ar .Evidence )
505+ if err != nil {
506+ return err
507+ }
502508 w .Flush ()
503509 fmt .Printf ("\n " )
504510 return nil
@@ -712,26 +718,29 @@ func writeAssertion(w *tabwriter.Writer, a mtc.Assertion) {
712718 }
713719}
714720
715- func writeEvidence (w * tabwriter.Writer , e mtc.Evidence ) {
716-
717- fmt .Fprintf (w , "evidence\t " )
718- switch e .Type {
719- case mtc .EmptyEvidenceType :
720- fmt .Fprintf (w , "empty\n " )
721- case mtc .X509ChainEvidenceType :
722- fmt .Fprintf (w , "x509_chain\n " )
723- for i , cert := range e .Info .(mtc.X509ChainEvidenceInfo ) {
724- fmt .Fprintf (w , " certificate\t %d\n " , i )
725- fmt .Fprintf (w , " subject\t %s\n " , cert .Subject .String ())
726- fmt .Fprintf (w , " issuer\t %s\n " , cert .Issuer .String ())
727- fmt .Fprintf (w , " serial_no\t %x\n " , cert .SerialNumber )
728- fmt .Fprintf (w , " not_before\t %s\n " , cert .NotBefore )
729- fmt .Fprintf (w , " not_after\t %s\n " , cert .NotAfter )
721+ func writeEvidenceList (w * tabwriter.Writer , el mtc.EvidenceList ) error {
722+
723+ for _ , ev := range el {
724+ switch ev .Type () {
725+ case mtc .X509ChainEvidenceType :
726+ fmt .Fprintf (w , "x509_chain\n " )
727+ chain , err := ev .(mtc.X509ChainEvidence ).Chain ()
728+ if err != nil {
729+ return err
730+ }
731+ for j , cert := range chain {
732+ fmt .Fprintf (w , " certificate\t %d\n " , j )
733+ fmt .Fprintf (w , " subject\t %s\n " , cert .Subject .String ())
734+ fmt .Fprintf (w , " issuer\t %s\n " , cert .Issuer .String ())
735+ fmt .Fprintf (w , " serial_no\t %x\n " , cert .SerialNumber )
736+ fmt .Fprintf (w , " not_before\t %s\n " , cert .NotBefore )
737+ fmt .Fprintf (w , " not_after\t %s\n " , cert .NotAfter )
738+ }
739+ default :
740+ fmt .Fprintf (w , "unknown type=%d info=%x\n " , ev .Type (), ev .Info ())
730741 }
731- default :
732- fmt .Fprintf (w , "unknown\n " )
733- fmt .Fprintf (w , " raw\t %x" , e .Info .(mtc.UnknownEvidenceInfo ))
734742 }
743+ return nil
735744}
736745
737746func handleInspectCert (cc * cli.Context ) error {
@@ -820,7 +829,10 @@ func handleInspectAssertionRequest(cc *cli.Context) error {
820829 w := tabwriter .NewWriter (os .Stdout , 1 , 1 , 1 , ' ' , 0 )
821830 fmt .Fprintf (w , "checksum\t %x\n " , ar .Checksum )
822831 writeAssertion (w , ar .Assertion )
823- writeEvidence (w , ar .Evidence )
832+ err = writeEvidenceList (w , ar .Evidence )
833+ if err != nil {
834+ return err
835+ }
824836 w .Flush ()
825837 return nil
826838}
@@ -834,13 +846,14 @@ func handleInspectEvidence(cc *cli.Context) error {
834846 defer r .Close ()
835847
836848 count := 0
837- err = mtc .UnmarshalEvidenceEntries (
849+ err = mtc .UnmarshalEvidenceLists (
838850 bufio .NewReader (r ),
839- func (_ int , e * mtc.Evidence ) error {
851+ func (_ int , el * mtc.EvidenceList ) error {
840852 count ++
841853 w := tabwriter .NewWriter (os .Stdout , 1 , 1 , 1 , ' ' , 0 )
842- writeEvidence (w , * e )
854+ writeEvidenceList (w , * el )
843855 w .Flush ()
856+ fmt .Printf ("\n " )
844857 return nil
845858 },
846859 )
0 commit comments