Sign

Prev Next

Classic/VPC 환경에서 이용 가능합니다.

최대 8 KB 크기의 데이터 서명값을 생성합니다. 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 키 태그
  • 키 이름에서 파생된 키의 고유 식별자
  • Get Key List 참조
  • REST API로 암호화 또는 복호화 요청 시 사용
  • 키 태그는 기밀 정보로 취급되지 않음

요청 바디

요청 바디에 대한 설명은 다음과 같습니다.

필드 타입 필수 여부 설명
data String Required 서명값을 생성할 Base64로 인코딩된 문자열 데이터
  • 최대 8 KB 입력 가능

요청 예시

요청 예시는 다음과 같습니다.

  • 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를 이용해 주십시오.