エラーコード ​

DAT 実装は、人間が読めるメッセージとは別に安定したエラーコードを提供します。プログラムはメッセージ文字列を比較せず、コードと再試行分類に基づいて判断してください。

コード形式 ​

text
DAT_<AREA>_<CAUSE>
接頭辞領域
DAT_TOKEN_DAT 文字列と有効期限
DAT_CERT_証明書文字列と状態
DAT_SIG_署名と検証
DAT_CRYPTO_暗号化と復号
DAT_KEY_鍵の形式と権限
DAT_MANAGER_証明書マネージャー
DAT_CONFIG_呼び出し引数と設定
DAT_INTERNAL_ランタイム内部
DAT_CMS_CMS クライアントの同期
DAT_AUTH_, DAT_REQ_, DAT_STORE_CMS サーバー

_UNKNOWN は、その領域の他のコードに分類できない場合にのみ使用します。同じ原因には領域をまたいで同じ名前を使います。

再試行分類 ​

分類意味対処
一時的外部条件が回復すれば成功する可能性があるバックオフを使って限定回数再試行
状態証明書の同期や時間変化後に成功する可能性がある必要な状態を更新して再試行
永続的同じ入力では再び失敗する入力、設定、コードを修正

トークンと証明書 ​

DAT_TOKEN_MALFORMED影響なし永続的

DAT のフィールド数、数値、または Base64Url 表現が無効です。入力を破棄してください。

DAT_TOKEN_EXPIRED影響なし永続的

DAT の有効期限が現在時刻以下です。新しい DAT を取得してください。

DAT_CERT_MALFORMED影響なし永続的

証明書文字列の構造またはフィールド表現が無効です。

DAT_CERT_NOT_FOUND影響なし状態

DAT の `cid` に対応する証明書がありません。証明書の同期状態を確認してください。

DAT_CERT_NOT_SYNCED影響なし状態

必要な証明書がまだサービスに届いていない可能性があります。すぐに同期し、再評価してください。

DAT_CERT_NOT_YET_VALID影響なし状態

証明書の開始時刻に達していません。システム時計と証明書の配布タイミングを確認してください。

DAT_CERT_EXPIRED影響なし永続的

証明書の検証期間が終了しました。

DAT_CERT_DUPLICATE部分的永続的

同じ `cid` が 1 つのインポートリストに複数回現れます。インポート全体を拒否してください。

署名、暗号化、鍵 ​

DAT_SIG_MISMATCH影響なし永続的shield疑わしい

署名が本文と一致しません。DAT が改ざんされたか、異なる鍵で署名されています。

DAT_CRYPTO_TAG_MISMATCH影響なし永続的shield疑わしい

AES-GCM 認証タグが一致しません。暗号文の改ざんまたは証明書の不一致を確認してください。

DAT_KEY_INVALID影響なし永続的

鍵の長さ、形式、またはアルゴリズムの組み合わせが無効です。

DAT_SIG_KEY_MISSING影響なし永続的

検証専用証明書で DAT を発行しようとしました。発行サービスには完全な証明書が必要です。

DAT_SIG_MISMATCH と DAT_CRYPTO_TAG_MISMATCH は、公開セキュリティイベント API が true と分類するエラーです。1 件の無効な入力はサービス障害ではありませんが、繰り返し発生する場合はセキュリティ上の観測対象として扱ってください。

マネージャーと設定 ​

DAT_MANAGER_NO_CERTIFICATE部分的状態

マネージャーに証明書がありません。証明書をインポートするか、CMS の同期を完了してください。

DAT_MANAGER_NO_ISSUABLE_CERTIFICATE部分的状態

マネージャーに証明書はありますが、現在発行可能な完全な証明書がありません。有効期限、開始時刻、検証専用状態について cause chain を調べてください。

DAT_CONFIG_ARGUMENT_INVALID影響なし永続的

呼び出し引数または設定値が許容範囲外です。

DAT_INTERNAL_UNAVAILABLE致命的永続的

現在のプラットフォームに必要な暗号機能またはネットワーク機能が利用できません。

CMS クライアント ​

コード意味一般的な対処
DAT_CMS_URI_INVALIDCMS URI が無効設定を修正
DAT_CMS_UNAUTHORIZED認証失敗トークンを修正
DAT_CMS_FORBIDDENトークンロールに権限がないトークンロールを確認
DAT_CMS_ENDPOINT_NOT_FOUNDパスがないか異なるCMS URL とパスを確認
DAT_CMS_NETWORK接続または転送に失敗ネットワークを確認してバックオフ
DAT_CMS_TIMEOUT制限時間を超過ネットワークとタイムアウト設定を調整
DAT_CMS_SERVER_ERRORCMS サーバーエラーサーバー状態を確認してバックオフ
DAT_CMS_RESPONSE_INVALID成功応答の形式が無効サーバーとクライアントの契約を確認
DAT_CMS_VERSION_RESETサーバーのバージョンが後退CMS データとデプロイ状態を確認
DAT_CMS_IMPORT_FAILED受信した証明書を適用できないcause chain を調査
DAT_CMS_STOPPED停止済みマネージャーを使用新しいマネージャーを作成または呼び出し順序を修正

初回同期がベストエフォートのライブラリは、エラーを last-error フィールドに保存します。起動を失敗させる必要がある場合は、エラーを直接返すか throw する即時同期 API を使用します。

CMS サーバー ​

コードHTTP意味
DAT_AUTH_UNAUTHORIZED401トークンがないか無効
DAT_AUTH_FORBIDDEN403トークンロールがリクエストを許可しない
DAT_REQ_ALG_UNSUPPORTED400未対応のアルゴリズム名
DAT_REQ_NOT_FOUND404·405パスまたはメソッドの不一致
DAT_REQ_TOO_LARGE413大きすぎるリクエスト本文用の予約コード
DAT_STORE_UNAVAILABLE503ストレージが一時的に利用不可
DAT_STORE_UNKNOWN500分類不能なストレージ処理エラー

現在のクライアントは non-2xx JSON 応答のサーバーコードを直接公開せず、HTTP ステータスを DAT_CMS_* コードに変換します。そのためサーバーログとクライアントエラーコードは異なる場合があります。

言語別のアクセス ​

環境エラーコード再試行分類
Rusterr.code()err.retry()
Godat.Code(err)dat.Retry(err)
JavaScript / TypeScripterror.codeerror.retry
Pythonerror.codeerror.retry
Rubyerror.codeerror.retry
Java / Kotlinerror.codeerror.retry
C#error.Codeerror.Retry
C / C++dat_error_code(error)dat_error_retry(error)

下位の cause を持つエラーは、各言語の例外チェーンまたは cause 参照 API で確認してください。