署名検証
このページでは、デジタル認証アプリによって作成された署名データの検証を PocketSign Verify API で実行します。
シーケンス
実装例
以下のコード例では、デジタル認証アプリで作成した署名データを PocketSign Verify API に送信し、署名の正当性と証明書の情報を検証します。
package main
import (
"context"
"fmt"
"net/http"
"buf.build/gen/go/pocketsign/apis/connectrpc/go/pocketsign/verify/v2/verifyv2connect"
verifyv2 "buf.build/gen/go/pocketsign/apis/protocolbuffers/go/pocketsign/verify/v2"
"connectrpc.com/connect"
)
const (
// APIエンドポイントを指定します。テスト環境の URL を指定します。
baseUrl = "https://verify.test.p8n.app"
// Verify API のトークンです。ご自身のトークンに置き換えてください。
token = "<YOUR_API_TOKEN>"
// 署名トランザクション開始リクエストで送信したデータ(Base64 エンコード済みハッシュ)をそのまま指定してください。
data = "XIh3yqL9yiAUQkuovXqx+xKZOwameHZx7OCoTRdlJrQ="
// 署名トランザクション結果取得レスポンスから返却された `response.sign_certificate_jwe`(署名データと証明書を含む JWE トークン)をそのまま指定してください。
signCertificateJwe = "cHUwotN3V05o4sHRhA..."
)
func run() error {
// 署名検証リクエストを作成します。
// SignCertificateJwe: デジタル認証アプリから取得した JWE トークン
// Data: 署名対象データのハッシュ値
request := connect.NewRequest(&verifyv2.VerifyForDigitalIdentificationAppRequest{
SignCertificateJwe: signCertificateJwe,
Data: data,
})
// リクエストにAPIトークンを設定します。
request.Header().Set("Authorization", "Bearer "+token)
request.Header().Set("X-P8N-OptIn", "PREVIEW")
// APIクライアントを作成します。
client := verifyv2connect.NewVerificationServiceClient(http.DefaultClient, baseUrl)
// 署名検証リクエストを送信します。
response, err := client.VerifyForDigitalIdentificationApp(context.Background(), request)
if err != nil {
return err
}
// 検証結果を表示します。
// Result: 署名検証の結果(RESULT_OK = 成功)
// CommonName: 署名者の氏名(マイナンバーカードから取得)
fmt.Printf("Result: %s\n", response.Msg.Verification.Result)
fmt.Printf("CommonName: %s\n", response.Msg.CertificateContent.GetJpkiCardDigitalSignatureContent().CommonName)
return nil
}
func main() {
if err := run(); err != nil {
panic(err)
}
}
実行結果
Result: RESULT_OK
CommonName: 公的 花子
次のステップ
その他、Verify API の詳しい使い方やエラーの詳細等については、API リファレンスをご覧ください。