Classic/VPC環境で利用できます。
最大8KBサイズのデータ署名を作成します。RSA2048または ECDSAキータイプでのみリクエストできます。
リクエスト
リクエスト形式を説明します。リクエスト形式は次の通りです。
| メソッド | URI |
|---|---|
| POST | /kms/v1/keys/{keyTag}/sign |
リクエストヘッダ
Key Management Service APIで共通して使用されるヘッダの詳細は、Key Management Serviceのリクエストヘッダをご参照ください。
リクエストパスパラメータ
リクエストパスパラメータの説明は次の通りです。
| フィールド | タイプ | 必須の有無 | 説明 |
|---|---|---|---|
keyTag |
String | Required | キータグ
|
リクエストボディ
リクエストボディの説明は次の通りです。
| フィールド | タイプ | 必須の有無 | 説明 |
|---|---|---|---|
data |
String | Required | 署名作成対象の、Base64でエンコードされた文字列データ
|
リクエスト例
リクエストのサンプルコードは次の通りです。
curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/sign' \
--header 'x-ncp-ocapi-token: {Access Token}' \
--data '{
"data": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=="
}'
レスポンス
レスポンス形式を説明します。
レスポンスボディ
レスポンスボディの説明は次の通りです。
| フィールド | タイプ | 必須の有無 | 説明 |
|---|---|---|---|
code |
String | - | 成功したかどうか |
data |
Object | - | レスポンス結果 |
data.signature |
String | - | 作成された署名 |
レスポンスステータスコード
Key Management Service APIで共通して使用されるレスポンスステータスコードの詳細は、Key Management Serviceのレスポンスステータスコードをご参照ください。
レスポンス例
レスポンスのサンプルコードは次の通りです。
{
"code": "SUCCESS",
"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デコードします。検証例としてGet Public Keyをご参照ください。
公開鍵で直接検証する際は、上記の署名パラメータを同様に指定します。OpenSSL、Go、Node.jsは検証時に salt長を署名値から自動的に推論しますが、Java(JCA)は自動推論に対応していないため、PSSParameterSpecに salt長を必ず明記しなければなりません。署名パラメータを直接一致させる必要がないように、Verifyをご利用ください。