Skip to main content

Usage of the different signature commands

The following sections describes the client sequence for preparing the data so that it can be passed correctly to the a.sign RK HSM. The following examples are given in pseudo-code.

Signature

// generate JWS header
JWS_Protected_Header = Base64url(UTF8('{"alg":"ES256"}'))

// generate JWS payload
JWS_Payload = '_R1-AT0_DEMO-CASH-BOX817_83468_2015-11-25T19:20:10_0,00_0,00_0,00_0,00_0,00_sqv3XHcI8mU=_-3667961875706356849_d3YUbS4CoRo='
JWS_Payload = Base64url(UTF8(JWS_Payload))

// generate data to be signed
to_be_signed = JWS_Protected_Header + '.' + JWS_Payload
to_be_signed = Base64(ASCII(to_be_signed))

// a.sign RK HSM /Sign command
JWS_Signature = ATrustRegMobile.Sign('user','pwd',to_be_signed)

Ergebnis = JWS_Protected_Header + '.' + JWS_Payload + '.' + JWS_Signature

Signature Hash

// generate JWS header
JWS_Protected_Header = Base64url(UTF8('{"alg":"ES256"}'))

// generate JWS payload
JWS_Payload = '_R1-AT0_DEMO-CASH-BOX817_83468_2015-11-25T19:20:10_0,00_0,00_0,00_0,00_0,00_sqv3XHcI8mU=_-3667961875706356849_d3YUbS4CoRo='
JWS_Payload = Base64url(UTF8(JWS_Payload))

// generate hash
to_be_signed = JWS_Protected_Header + '.' + JWS_Payload
hash = SHA256(ASCII(to_be_signed))
hash = Base64(hash)

// a.sign RK HSM /Sign/Hash command
JWS_Signature = ATrustRegMobile.SignHash('user','pwd',hash)

Ergebnis = JWS_Protected_Header + '.' + JWS_Payload + '.' + JWS_Signature

Signature Plain

// generate JWS header
JWS_Protected_Header = Base64url(UTF8('{"alg":"ES256"}'))

// generate JWS payload
JWS_Payload = '_R1-AT0_DEMO-CASH-BOX817_83468_2015-11-25T19:20:10_0,00_0,00_0,00_0,00_0,00_sqv3XHcI8mU=_-3667961875706356849_d3YUbS4CoRo='
JWS_Payload = Base64url(UTF8(JWS_Payload))

// generate data to be signed
to_be_signed = JWS_Protected_Header + '.' + JWS_Payload

// a.sign RK HSM /Sign/Plain command
JWS_Signature = ATrustRegMobile.SignPlain('user','pwd',to_be_signed)

Ergebnis = JWS_Protected_Header + '.' + JWS_Payload + '.' + JWS_Signature

Signature JWS

// generate JWS payload
JWS_Payload = '_R1-AT0_DEMO-CASH-BOX817_83468_2015-11-25T19:20:10_0,00_0,00_0,00_0,00_0,00_sqv3XHcI8mU=_-3667961875706356849_d3YUbS4CoRo='


// a.sign RK HSM /Sign/JWS command
Ergebnis = ATrustRegMobile.SignJWS('user','pwd',JWS_Payload)

// split result to protected header, payload und signature
JWS_Protected_Header = Ergebnis.Split('.').Index(0)
JWS_Payload = Ergebnis.Split('.').Index(1)
JWS_Signature = Ergebnis.Split('.').Index(2)

Session Handling

// generate session
sessionid, sessionkey = ATrustRegMobile.Login('user','pwd')

// preapre signature data
to_be_signed=...
Ergebnis = ATrustRegMobile.Session_Sign(sessionid, sessionkey, to_be_signed)


// close session
ATrustRegMobile.Logout(sessionid)