From c5112217c7afbf48ad5472296ff1dd9f7a67e06d Mon Sep 17 00:00:00 2001 From: HAMANO Tsukasa Date: Tue, 11 Jul 2023 15:28:53 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B9=E3=83=9E=E3=83=9BJPKI=E3=81=AEpin=20s?= =?UTF-8?q?tauts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/pin.go | 37 +++++++++++++++++++++---------------- libmyna/api.go | 32 +++++++++++++++++--------------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/cmd/pin.go b/cmd/pin.go index 7fab2f6..9a85cfd 100644 --- a/cmd/pin.go +++ b/cmd/pin.go @@ -28,22 +28,27 @@ func pinStatus(cmd *cobra.Command, args []string) error { return err } - fmt.Printf("券面事項PIN(A):\tのこり%2d回\n", - status["visual_pin_a"]) - fmt.Printf("券面事項PIN(B):\tのこり%2d回\n", - status["visual_pin_b"]) - fmt.Printf("入力補助PIN:\tのこり%2d回\n", - status["text_pin"]) - fmt.Printf("入力補助PIN(A):\tのこり%2d回\n", - status["text_pin_a"]) - fmt.Printf("入力補助PIN(B):\tのこり%2d回\n", - status["text_pin_b"]) - fmt.Printf("JPKI認証用PIN:\tのこり%2d回\n", status["jpki_auth"]) - fmt.Printf("JPKI署名用PIN:\tのこり%2d回\n", status["jpki_sign"]) - /* - fmt.Printf("謎のPIN1:\tのこり%d回\n", status["unknown1"]) - fmt.Printf("謎のPIN2:\tのこり%d回\n", status["unknown2"]) - */ + if visual_pin_a, ok := status["visual_pin_a"]; ok { + fmt.Printf("券面事項PIN(A):\tのこり%2d回\n", visual_pin_a) + } + if visual_pin_b, ok := status["visual_pin_b"]; ok { + fmt.Printf("券面事項PIN(B):\tのこり%2d回\n", visual_pin_b) + } + if text_pin, ok := status["text_pin"]; ok { + fmt.Printf("入力補助PIN:\tのこり%2d回\n", text_pin) + } + if text_pin_a, ok := status["text_pin_a"]; ok { + fmt.Printf("入力補助PIN(A):\tのこり%2d回\n", text_pin_a) + } + if text_pin_b, ok := status["text_pin_b"]; ok { + fmt.Printf("入力補助PIN(B):\tのこり%2d回\n", text_pin_b) + } + if jpki_auth, ok := status["jpki_auth"]; ok { + fmt.Printf("JPKI認証用PIN:\tのこり%2d回\n", jpki_auth) + } + if jpki_sign, ok := status["jpki_sign"]; ok { + fmt.Printf("JPKI署名用PIN:\tのこり%2d回\n", jpki_sign) + } return nil } diff --git a/libmyna/api.go b/libmyna/api.go index cc50978..14ecfe1 100644 --- a/libmyna/api.go +++ b/libmyna/api.go @@ -548,6 +548,23 @@ func GetPinStatus() (map[string]int, error) { status := map[string]int{} + jpkiAP, err := reader.SelectJPKIAP() + if err != nil { + return nil, err + } + status["jpki_auth"], err = jpkiAP.LookupAuthPin() + status["jpki_sign"], err = jpkiAP.LookupSignPin() + + token, err := jpkiAP.GetToken() + if err != nil { + return nil, err + } + + if token == "JPKIAPGPSETOKEN" { + // スマホJPKI + return status, nil + } + visualAP, err := reader.SelectVisualAP() if err != nil { return nil, err @@ -563,20 +580,5 @@ func GetPinStatus() (map[string]int, error) { status["text_pin_a"], err = textAP.LookupPinA() status["text_pin_b"], err = textAP.LookupPinB() - jpkiAP, err := reader.SelectJPKIAP() - if err != nil { - return nil, err - } - status["jpki_auth"], err = jpkiAP.LookupAuthPin() - status["jpki_sign"], err = jpkiAP.LookupSignPin() - /* - reader.SelectAP("D3 92 10 00 31 00 01 01 01 00") // 謎AP - reader.SelectEF("00 1C") - status["unknown1"] = reader.LookupPin() - - reader.SelectAP("D3 92 10 00 31 00 01 01 04 01") // 謎AP - reader.SelectEF("00 1C") - status["unknown2"] = reader.LookupPin() - */ return status, nil }