ScramService¶
Method | LWM2M request | Description |
---|---|---|
getHashIteration | GET /1024//42 alias: /scram/hash-iteration |
Get scram hash iteration counter |
initialize | GET /1024//47 alias: /scram/initialize |
Start scram communication |
login | GET /1024//40 alias: /scram/login |
First command to initiate scram login, for client to send login and nonce to IoTize, and IoTize to return user salt, user iteration counter (j) and combined nonce |
loginProof | GET /1024//41 alias: /scram/login-proof |
Scram login proof |
putHashIteration | PUT /1024//42 alias: /scram/hash-iteration |
Set scram hash iteration counter |
send | GET /1024//48 alias: /scram/com-send-receive |
Communication channel |
sendWithIV | GET /1024//44 alias: /scram/send-with-iv |
Communication channel with encryption initialization vectory |
setInitializationVector | GET /1024//45 alias: /scram/initialization-vector |
Give encryption initialization vector to the device. The device returns its own initialization vector |
getHashIteration¶
Minimal Tap Firmware version: >= 1.11
Get scram hash iteration counter
Scram conf iteration counter (i) to be read by client before starting scram login process
Example¶
let myService = new ScramService();
try {
let call = myService.getHashIteration();
let value = (await call).body();
console.log(`getHashIteration: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
try {
Call<Integer> call = myService.getHashIteration();
Response<Integer> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#getHashIteration");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Integer> = try tap.service.scram.getHashIteration();
print("Response:" + response.body())
Parameters¶
This endpoint does not need any parameter.
Return type¶
Authorization¶
No authorization required
initialize¶
Minimal Tap Firmware version: >= 1.11
Start scram communication
Demande d'une clé aléatoire et initiation d'une session CCOM cryptée utilisant ce RNG comme clé de cryptage. Accessible uniquement en NFC.
Example¶
let myService = new ScramService();
try {
let call = myService.initialize();
let value = (await call).body();
console.log(`initialize: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
try {
Call<Bytes> call = myService.initialize();
Response<Bytes> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#initialize");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Bytes> = try tap.service.scram.initialize();
print("Response:" + response.body())
Parameters¶
This endpoint does not need any parameter.
Return type¶
Authorization¶
No authorization required
login¶
Minimal Tap Firmware version: >= 1.0
First command to initiate scram login, for client to send login and nonce to IoTize, and IoTize to return user salt, user iteration counter (j) and combined nonce
First command to initiate scram login, for client to send login and nonce to IoTize, and IoTize to return user salt, user iteration counter (j) and combined nonce
Example¶
let myService = new ScramService();
let params = ; // ScramLoginParams |
try{
let call = myService.login(params);
let value = (await call).body();
console.log(`login: ${value}`);
}
catch (ex){
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
ScramLoginParams params = ; // ScramLoginParams |
try {
Call<ScramLoginResponseBody> call = myService.login(params);
Response<ScramLoginResponseBody> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#login");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<ScramLoginResponseBody> = try tap.service.scram.login(params);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
params | ScramLoginParamsScramLoginParams | [optional] |
Return type¶
Authorization¶
No authorization required
loginProof¶
Minimal Tap Firmware version: >= 1.0
Scram login proof
Second command to finalize scram login, for client to send ClientProof and combined nonce
Example¶
let myService = new ScramService();
let params = BINARY_DATA_HERE; // Bytes |
try {
let call = myService.loginProof(params);
let value = (await call).body();
console.log(`loginProof: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
Bytes params = BINARY_DATA_HERE; // Bytes |
try {
Call<Bytes> call = myService.loginProof(params);
Response<Bytes> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#loginProof");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Bytes> = try tap.service.scram.loginProof(params);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
params | BytesBytes | [optional] |
Return type¶
Authorization¶
No authorization required
putHashIteration¶
Minimal Tap Firmware version: >= 1.11
Set scram hash iteration counter
Example¶
let myService = new ScramService();
let data = 56; // Integer |
try {
let call = myService.putHashIteration(data);
let value = (await call).body();
console.log(`putHashIteration: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
Integer data = 56; // Integer |
try {
Call<Void> call = myService.putHashIteration(data);
Response<Void> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#putHashIteration");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Any> = try tap.service.scram.putHashIteration(data);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
data | Integer |
Return type¶
null (empty response body)
Authorization¶
No authorization required
send¶
Minimal Tap Firmware version: >= 1.11
Communication channel
Encrypted communication ressource, for sending/receiving commands/responses after the SCRAM or CCOM session is established.
Example¶
let myService = new ScramService();
let data = BINARY_DATA_HERE; // Bytes |
try {
let call = myService.send(data);
let value = (await call).body();
console.log(`send: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
Bytes data = BINARY_DATA_HERE; // Bytes |
try {
Call<Bytes> call = myService.send(data);
Response<Bytes> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#send");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Bytes> = try tap.service.scram.send(data);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
data | BytesBytes |
Return type¶
Authorization¶
No authorization required
sendWithIV¶
Minimal Tap Firmware version: >= 1.85
Communication channel with encryption initialization vectory
Encrypted communication ressource with initialization vector, for sending/receiving commands/responses after the SCRAM or CCOM session is established.
Example¶
let myService = new ScramService();
let data = ; // EncryptedIVCommand |
try{
let call = myService.sendWithIV(data);
let value = (await call).body();
console.log(`sendWithIV: ${value}`);
}
catch (ex){
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
EncryptedIVCommand data = ; // EncryptedIVCommand |
try {
Call<EncryptedIVResponse> call = myService.sendWithIV(data);
Response<EncryptedIVResponse> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#sendWithIV");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<EncryptedIVResponse> = try tap.service.scram.sendWithIV(data);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
data | EncryptedIVCommandEncryptedIVCommand |
Return type¶
Authorization¶
No authorization required
setInitializationVector¶
Minimal Tap Firmware version: >= 1.85
Give encryption initialization vector to the device. The device returns its own initialization vector
Example¶
let myService = new ScramService();
let data = BINARY_DATA_HERE; // Bytes | 16 bytes initialization vector
try {
let call = myService.setInitializationVector(data);
let value = (await call).body();
console.log(`setInitializationVector: ${value}`);
} catch (ex) {
// No response from device / response error (ie: device is not connected or request timeout)
console.error(ex);
}
import .ScramService;
ServiceFactory serviceFactory = ...;
ScramService myService = serviceFactory.create(ScramService.class);
Bytes data = BINARY_DATA_HERE; // Bytes | 16 bytes initialization vector
try {
Call<Bytes> call = myService.setInitializationVector(data);
Response<Bytes> response = call.execute();
if (response.isSuccessful()){
System.out.println(response.body());
}
else{
System.out.println(DeviceResponseError.createErrorMessage(response));
}
} catch (ApiException e) {
System.err.println("Exception when calling ScramService#setInitializationVector");
e.printStackTrace();
}
import TapDeviceClient
let tap: TapDevice = // ...
let ApiResponse<Bytes> = try tap.service.scram.setInitializationVector(data);
print("Response:" + response.body())
Parameters¶
Name | Type | Description | Notes |
---|---|---|---|
data | BytesBytes | 16 bytes initialization vector |
Return type¶
Authorization¶
No authorization required