Skip to main content

Quickstart

To get started with the REST API, you need an HSM and a Transaction Security Broker (TSB). The TSB provides the REST API.

Afterwards, you can start making requests to the REST API.

Setup

Get an HSM

CloudHSM is a hosted offering from Securosys, where Securosys manages the HSMs for you in a geo-redundant cluster.

For testing purposes, CloudHSM offers a free 90-day trial.

Sign up to CloudHSM

Get a Transaction Security Broker

CloudHSM offers TSB-as-a-service. Depending on the service package, the TSB option may be included or may need to be manually enabled.

REST API URL

Select your TSB instance and note down the REST API URL. Use this base URL in all subsequent HTTP requests.

EnvironmentREST API URL
CloudHSMhttps://rest-api.cloudshsm.com
CloudHSM Sandboxhttps://sbx-rest-api.cloudshsm.com
Developer Programhttps://primusdev.cloudshsm.com/
On-premise TSBhttp://localhost:8080

Unsure? See the connectivity details or use the details in your CloudHSM credentials file.

Authentication

curl "https://sbx-rest-api.cloudshsm.com/v1/versionInfo" \
-H "accept: application/json" \
-H "Authorization: Bearer <JWT_TOKEN>"

Response:

{
"Version": "2.5.1",
"Vendor": "Securosys SA"
}

Example: Create an RSA Key

This section shows how to use the REST API to create an RSA key and perform a signing operation with it.

POST: /v1/key

Key Parameters
ParameterDescription
labelThe label of the key to be generated.
algorithmThe algorithm of the key. See the supported algorithms.
keySizeThe size of the Key. Applicable for RSA, DSA, ISS and Symmetric algorithms.
curveOidNeeded if algorithm is EC or ED. See the supported curveOids.

For the attributes, see the Smart Key Attributes documentation.

  • Replace <JWT_TOKEN> (CloudHSM only, remove otherwise)
  • Replace <keyname>

Request:

curl "https://sbx-rest-api.cloudshsm.com/v1/key" \
--header 'Authorization: Bearer <JWT_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"label": "<keyname>",
"algorithm": "RSA",
"keySize": 2048,
"attributes": {
"sign": true,
"extractable": false,
"modifiable": true,
"destroyable": true,
"sensitive": true,
"decrypt": false,
"unwrap": false
}
}'

Response:

{
"xml": "<xml-formatted attributes of the key>",
"json": {
"label": "...",
"id": null,
"algorithm": "RSA",
"algorithmOid": "1.2.840.113549.1.1.1",
"curveOid": null,
"keySize": 2048,
"createTime": "2021-02-24T15:10:03Z",
"attestTime": "2021-02-24T15:10:03Z",
"publicKey": "MIIBIj...AB",
"addressTruncated": null,
"attributes": {
"decrypt": false,
"sign": true,
"ekaSign": null,
"unwrap": false,
"derive": false,
"sensitive": true,
"alwaysSensitive": true,
"extractable": false,
"neverExtractable": true,
"modifiable": true,
"copyable": true,
"destroyable": true
},
"policy": null
},
"xmlSignature": "<base64-encoded-signature>",
"attestationKeyName": "attestation-key"
}

Example: Sign a Payload with the Key

POST: /v1/synchronousSign

Sign-Payload Parameters
ParameterDescription
payloadThe data for which you want to create a digital signature. It should be encoded using base64
signKeyNameThe label or identifier of the key stored within the HSM. This key is used for generating the digital signature.
signatureAlgorithmSpecifies the algorithm used for generating the digital signature. In this case, it's SHA256_WITH_RSA_PSS, indicating that SHA256 is used for hashing the payload and RSA with PSS padding scheme is used for signing.
  • Replace <JWT_TOKEN> (CloudHSM only, remove otherwise)
  • Replace <payload> and <signKeyName>

Request:

curl "https://sbx-rest-api.cloudshsm.com/v1/synchronousSign" \
--header 'Authorization: Bearer <JWT_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"signRequest": {
"payload": "<payload>",
"signKeyName": "<signKeyName>",
"signatureAlgorithm": "SHA256_WITH_RSA_PSS"
}
}'

Response:

{"signature":"rF43P3iGgCvUZnoFY3+Qmyc8zxdydJ7RKcrQ+eQM4eM+7FmlAMAIOw9h2ae+/On4hyRY/VT/9SLMVe1UU/J1gIp9giX9zr3ycYBZ8r5l9wYuh1HVv5J9YX478ppLI6DoHQSw/8cxEPFzB2dZLmov5g51nJI9qvd8qJjgwYd/iYhAN9Vf7XlSa9LhoL/73ZOR3JSb68pWlfXVXIhN0ShaIoduE9ba+2Z7QkNG0bSXjS1j8tI9LiYLfBX2yEYyJgBaNFlBGI5EdlblxXMgNzBk3IMpQIPMYZ06N/3amIL+x46bb74ERZMGYcg0TXlEMd4KQTFD6wtUhkmOFCbRnDaq2w=="}

What's next?

Get started withCloudHSM for free.
Other questions?Ask Sales.
Feedback
Need help?