Sign

Prev Next

最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。

Classic/VPC環境で利用できます。

最大8KBサイズのデータ署名を作成します。RSA2048または ECDSAキータイプでのみリクエストできます。

リクエスト

リクエスト形式を説明します。リクエスト形式は次の通りです。

メソッド URI
POST
  • API Gateway request signature v1: /keys/v1/{keyTag}/sign
  • API Gateway request signature v2: /keys/v2/{keyTag}/sign

リクエストヘッダ

Key Management Service APIで共通して使用されるヘッダの詳細は、Key Management Serviceのリクエストヘッダをご参照ください。

リクエストパスパラメータ

リクエストパスパラメータの説明は次の通りです。

フィールド タイプ 必須の有無 説明
keyTag String Required キータグ
  • キー名から派生したキーの固有 ID
  • Get Key Listを参照
  • REST APIで暗号化または復号化をリクエストする際に使用
  • キータグは機密情報として扱われない

リクエストボディ

リクエストボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
data String Required 署名作成対象の、Base64でエンコードされた文字列データ
  • 最大8KBまで入力可能

リクエスト例

リクエストのサンプルコードは次の通りです。

  • API Gateway request signature v1リクエスト
curl --location --request POST 'https://kms.apigw.ntruss.com/keys/v1/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/sign' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-apigw-api-key: {API Gateway API Key}' \
--header 'x-ncp-iam-access-key: {Sub Account Access Key}' \
--header 'x-ncp-apigw-signature-v1: {API Gateway Signature}' \
--data '{
  "data": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="
}'
  • API Gateway request signature v2リクエスト
curl --location --request POST 'https://kms.apigw.ntruss.com/keys/v2/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/sign \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Sub Account Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--data '{
  "data": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="
}'

レスポンス

レスポンス形式を説明します。

レスポンスボディ

レスポンスボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
code String - 成功したかどうか
msg String - レスオンスコード(code)の説明
  • リクエスト成功(SUCCESS)時、空の値「""」と表示
data Object - レスポンス結果
data.signature String - 作成された署名

レスポンスステータスコード

Key Management Service APIで共通して使用されるレスポンスステータスコードの詳細は、Key Management Serviceのレスポンスステータスコードをご参照ください。

レスポンス例

レスポンスのサンプルコードは次の通りです。

{
    "code": "SUCCESS",
    "msg": "",
    "data": {
        "signature": "{SIGNATURE}"
    }
}

署名パラメータ

キータイプ別の署名アルゴリズムパラメータは次の通りです。

キータイプ 署名アルゴリズム ハッシュ MGF Salt長 Trailer field 署名値のエンコーディング
RSA2048 RSASSA-PSS SHA-256 MGF1(SHA-256) 222バイト 1 固定256バイト
ECDSA SHA256withECDSA SHA-256 - - - ASN.1 DER
  • Salt長222バイトはRSA-PSSの最大Salt長であり、ceil((2048 - 1) / 8) - 32 - 2 = 222で算出されます。
  • 署名対象は、リクエストボディのdataをBase64デコードした元のバイト列です。

署名値の形式

data.signatureは次の形式の文字列です。

ncpkms:v{キーバージョン}:{Base64でエンコードされた署名値}

Verifyをリクエストする際は、上記の形式をそのまま渡す必要があります。一方、公開鍵を照会して直接検証する場合は、ncpkms:v{キーバージョン}:のプレフィックスを除去してからBase64デコードする必要があります。

参考
公開鍵で直接検証する場合は、上記の署名パラメータを同様に指定する必要があります。OpenSSL、Go、Node.jsは検証時に署名値からSalt長を自動的に推論しますが、Java(JCA)は自動推論をサポートしないため、PSSParameterSpecにSalt長を必ず明示する必要があります。署名パラメータを直接合わせる必要がないようにするには、Verifyをご利用ください。