@@ -12,6 +12,7 @@ import (
1212 "strings"
1313
1414 "github.com/ebfe/scard"
15+ "github.com/ethereum/go-ethereum/crypto"
1516 "github.com/ethereum/go-ethereum/log"
1617)
1718
@@ -241,7 +242,7 @@ func commandInstall(card *scard.Card) error {
241242
242243func commandInfo (card * scard.Card ) error {
243244 i := NewInitializer (card )
244- info , err := i .Info ()
245+ info , cashInfo , err := i .Info ()
245246 if err != nil {
246247 return err
247248 }
@@ -251,19 +252,39 @@ func commandInfo(card *scard.Card) error {
251252 keyInitialized = true
252253 }
253254
254- fmt .Printf ("Installed: %+v\n " , info .Installed )
255- fmt .Printf ("Initialized: %+v\n " , info .Initialized )
256- fmt .Printf ("Key Initialized: %+v\n " , keyInitialized )
257- fmt .Printf ("InstanceUID: 0x%x\n " , info .InstanceUID )
258- fmt .Printf ("SecureChannelPublicKey: 0x%x\n " , info .SecureChannelPublicKey )
259- fmt .Printf ("Version: 0x%x\n " , info .Version )
260- fmt .Printf ("AvailableSlots: 0x%x\n " , info .AvailableSlots )
261- fmt .Printf ("KeyUID: 0x%x\n " , info .KeyUID )
262- fmt .Printf ("Capabilities:\n " )
263- fmt .Printf (" Secure channel:%v\n " , info .HasSecureChannelCapability ())
264- fmt .Printf (" Key management:%v\n " , info .HasKeyManagementCapability ())
265- fmt .Printf (" Credentials Management:%v\n " , info .HasCredentialsManagementCapability ())
266- fmt .Printf (" NDEF:%v\n " , info .HasNDEFCapability ())
255+ fmt .Printf ("Keycard Applet:\n " )
256+ fmt .Printf (" Installed: %+v\n " , info .Installed )
257+ fmt .Printf (" Initialized: %+v\n " , info .Initialized )
258+ fmt .Printf (" Key Initialized: %+v\n " , keyInitialized )
259+ fmt .Printf (" InstanceUID: 0x%x\n " , info .InstanceUID )
260+ fmt .Printf (" SecureChannelPublicKey: 0x%x\n " , info .SecureChannelPublicKey )
261+ fmt .Printf (" Version: 0x%x\n " , info .Version )
262+ fmt .Printf (" AvailableSlots: 0x%x\n " , info .AvailableSlots )
263+ fmt .Printf (" KeyUID: 0x%x\n " , info .KeyUID )
264+ fmt .Printf (" Capabilities:\n " )
265+ fmt .Printf (" Secure channel:%v\n " , info .HasSecureChannelCapability ())
266+ fmt .Printf (" Key management:%v\n " , info .HasKeyManagementCapability ())
267+ fmt .Printf (" Credentials Management:%v\n " , info .HasCredentialsManagementCapability ())
268+ fmt .Printf (" NDEF:%v\n " , info .HasNDEFCapability ())
269+ fmt .Printf ("Cash applet \n \n " )
270+
271+ if cashInfo == nil {
272+ fmt .Printf (" Installed: %+v\n " , false )
273+ return nil
274+ }
275+
276+ ecdsaPubKey , err := crypto .UnmarshalPubkey (cashInfo .PublicKey )
277+ if err != nil {
278+ return err
279+ }
280+
281+ cashAddress := crypto .PubkeyToAddress (* ecdsaPubKey )
282+
283+ fmt .Printf (" Installed: %+v\n " , cashInfo .Installed )
284+ fmt .Printf (" PublicKey: 0x%x\n " , cashInfo .PublicKey )
285+ fmt .Printf (" Address: 0x%x\n " , cashAddress )
286+ fmt .Printf (" Public Data: 0x%x\n " , cashInfo .PublicData )
287+ fmt .Printf (" Version: 0x%x\n " , cashInfo .Version )
267288
268289 return nil
269290}
0 commit comments