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をご利用ください。