署名検証結果の保存と再取得
署名検証 API は、署名検証の結果と検証に使われたデータ(署名値、署名に使用した証明書、署名に使用されたデータのダイジェスト)を返します。 同時に署名を検証した結果を識別する検証 ID を返します。 署名検証結果の取得 API を用いることで、検証 ID に紐づく署名検証の結果と検証に使われたデータをいつでも再取得することができます。
SP 事業者は、証明書の生データの保持が禁じられています。 署名に使用した証明書の生データは署名検証時に検証サーバが保存しており、 署名を再検証する必要が出てきた場合、サーバで保存している証明書データを使用して署名を再検証できます。
Verify API は、これら署名検証結果のほか、署名 に使用された証明書の生データおよび検証時刻時点での証明書失効状態も保存しています。 SP 事業者側で検証 ID と署名対象の実データを保存しておくことで、必要な場合にいつでも再検証することができます。 この機能は API として提供されておらず、再検証が必要な場合は個別にお問い合わせください。
SP 事業者側が保管している検証 ID や署名対象のデータを削除した場合や、 削除系 API を呼びだして各種データを削除した場合には、再検証ができなくなります。 契約書の保管要件などが課される事業者は十分ご注意ください。
実装例
クライアントライブラリのセットアップ方法は、クライアントライブラリをご参照ください。
- Go
- TypeScript
- Kotlin
- Swift
package main
import (
"bytes"
"context"
"crypto/sha256"
"fmt"
"log"
"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"
)
var (
// APIエンドポイントを指定します。この値は環境によって異なります。
baseUrl = "https://verify.mock.p8n.app"
// Verify APIのトークンです。ご自身のトークンに置き換えてください。
token = "<YOUR_API_TOKEN>"
// 署名対象のドキュメントです。署名作成時と同じものを指定しています。
document = "利用規約に同意します。"
// 検証IDです。この値は、署名検証の結果として取得できます。
verificationID = "80375018-3502-4eb7-b422-0898dcf140b5"
)
func run() error {
// 署名結果再取得リクエストを作成します。
request := connect.NewRequest(&verifyv2.GetVerificationRequest{
VerificationId: verificationID,
})
// リクエストにAPIトークンを設定します。
request.Header().Set("Authorization", "Bearer "+token)
// APIクライアントを作成します。
client := verifyv2connect.NewVerificationServiceClient(http.DefaultClient, baseUrl)
// 署名結果再取得リクエストを送信します。
response, err := client.GetVerification(context.Background(), request)
if err != nil {
return err
}
// 文書のハッシュ値を計算します。
digest := sha256.Sum256([]byte(document))
// 署名対象のダイジェストが一致することを確認します。
if bytes.Equal(digest[:], response.Msg.Verification.Digest) {
fmt.Println("OK: digest matches")
} else {
fmt.Println("NG: digest does not match")
}
return nil
}
func main() {
if err := run(); err != nil {
log.Fatalln(err)
}
}
このセクションは現在作成中です。
このトピックについて知りたい場合は、お問い合わせください。
このセクションは現在作成中です。
このトピックについて知りたい場合は、お問い合わせください。
このセクションは現在作成中です。
このトピックについて知りたい場合は、お問い合わせください。
リクエストに成功すると、以下のように結果が表示されます。
OK: digest matches
次のステップ
利用者の識別機能を利用して、1 人 1 アカウントの実現や、当人認証によるログインを実装しましょう。
その他、API の詳しい使い方やエラーの詳細等については、API リファレンスをご覧ください。