Skip to content

Commit b4caa19

Browse files
Merge pull request #6 from soracom/20220913_changes_azure_bootstrap
Changes for Azure IoT device bootstrap
2 parents d65d5ae + 41e8418 commit b4caa19

12 files changed

+294
-16
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ group = 'io.soracom'
2222
mainClassName = 'io.soracom.krypton.SORACOMKryptonCLI'
2323
archivesBaseName = rootProject.name
2424

25-
version = '0.5.0-SNAPSHOT'
25+
version = '0.6.0-SNAPSHOT'
2626

2727
sourceCompatibility = 1.7
2828
targetCompatibility = 1.7

src/main/java/io/soracom/krypton/ProvisioningApiEndpoint.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ public static String bootstrapAzureIotDevice(String baseUrl) {
4949
return trimSlash(baseUrl) + "/v1/provisioning/azure/iot/bootstrap";
5050
}
5151

52+
public static String registerAzureIotDevice(String baseUrl) {
53+
return trimSlash(baseUrl) + "/v1/provisioning/azure/iot/register";
54+
}
55+
56+
public static String getAzureIotDeviceRegistrationStatus(String baseUrl, String operationId) {
57+
return String.format("%s/v1/provisioning/azure/iot/registrations/%s",trimSlash(baseUrl),operationId);
58+
}
59+
5260
public static String bootstrapInventoryDevice(String baseUrl) {
5361
return trimSlash(baseUrl) + "/v1/provisioning/soracom/inventory/bootstrap";
5462
}

src/main/java/io/soracom/krypton/SORACOMKryptonCLI.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
* limitations under the License.
1414
*/
1515
package io.soracom.krypton;
16-
17-
import io.soracom.krypton.cli.BootstrapAzureIotDeviceOperationHandler;
1816
import java.util.ArrayList;
1917
import java.util.Comparator;
2018
import java.util.List;
@@ -36,6 +34,10 @@
3634
import io.soracom.krypton.cli.BootstrapAwsIotThingOperationHandler;
3735
import io.soracom.krypton.cli.BootstrapInventoryDeviceOperationHandler;
3836
import io.soracom.krypton.cli.BootstrapArcOperationHandler;
37+
import io.soracom.krypton.cli.BootstrapAzureIotDeviceOperationHandler;
38+
import io.soracom.krypton.cli.RegisterAzureIotDeviceOperationHandler;
39+
import io.soracom.krypton.cli.GetAzureIotDeviceRegistrationStatusOperationHandler;
40+
3941
import io.soracom.krypton.cli.CLIOutput;
4042
import io.soracom.krypton.cli.GenerateAmazonCognitoOpenIdTokenOperationHandler;
4143
import io.soracom.krypton.cli.GenerateAmazonCognitoSessionCredentialsOperationHandler;
@@ -62,6 +64,8 @@ public class SORACOMKryptonCLI {
6264
kryptonOptionHanderList.add(new GenerateAmazonCognitoOpenIdTokenOperationHandler());
6365
kryptonOptionHanderList.add(new BootstrapAwsIotThingOperationHandler());
6466
kryptonOptionHanderList.add(new BootstrapAzureIotDeviceOperationHandler());
67+
kryptonOptionHanderList.add(new RegisterAzureIotDeviceOperationHandler());
68+
kryptonOptionHanderList.add(new GetAzureIotDeviceRegistrationStatusOperationHandler());
6569
kryptonOptionHanderList.add(new BootstrapArcOperationHandler());
6670
}
6771

src/main/java/io/soracom/krypton/SORACOMKryptonClient.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,9 @@
2727
import io.soracom.endorse.common.TextLogItem;
2828
import io.soracom.endorse.keycache.AuthResult;
2929
import io.soracom.endorse.utils.Utilities;
30-
import io.soracom.krypton.beans.BootstrapAwsIotThingResult;
31-
import io.soracom.krypton.beans.BootstrapAzureIotDeviceResult;
32-
import io.soracom.krypton.beans.BootstrapAzureRequestParams;
33-
import io.soracom.krypton.beans.BootstrapInventoryDeviceParams;
34-
import io.soracom.krypton.beans.BootstrapInventoryDeviceResult;
35-
import io.soracom.krypton.beans.GenerateAmazonCognitoOpenIdTokenResult;
36-
import io.soracom.krypton.beans.GenerateAmazonCognitoSessionCredentialsResult;
37-
import io.soracom.krypton.beans.GetSubscriberMetadataResult;
38-
import io.soracom.krypton.beans.ProvisioningBean;
39-
import io.soracom.krypton.beans.BootstrapArcParams;
40-
import io.soracom.krypton.beans.BootstrapArcResult;
30+
import io.soracom.krypton.beans.*;
4131
import io.soracom.krypton.common.KryptonClientRuntimeException;
42-
import io.soracom.krypton.beans.BootstrapAzureDeviceParams;
32+
4333

4434
public class SORACOMKryptonClient {
4535

@@ -152,6 +142,19 @@ public BootstrapAzureIotDeviceResult bootstrapAzureIotDevice(BootstrapAzureDevic
152142
return invokeKeyDistributionService(request, BootstrapAzureIotDeviceResult.class);
153143
}
154144

145+
public RegisterAzureIotDeviceResult registerAzureIotDevice(RegisterAzureDeviceParams params) {
146+
TrustedEntityRequst request = new TrustedEntityRequst();
147+
request.requestParameters = new RegisterAzureRequestParams(params);
148+
request.apiEndpointUrl = ProvisioningApiEndpoint.registerAzureIotDevice(kryptonClientConfig.getApiEndpointUrl());
149+
return invokeKeyDistributionService(request, RegisterAzureIotDeviceResult.class);
150+
}
151+
152+
public GetAzureIotDeviceRegistrationStatusResult getAzureIotDeviceRegistrationStatus(GetAzureIotDeviceRegistrationStatusParams params) {
153+
TrustedEntityRequst request = new TrustedEntityRequst();
154+
request.apiEndpointUrl = ProvisioningApiEndpoint.getAzureIotDeviceRegistrationStatus(kryptonClientConfig.getApiEndpointUrl(), params.getOperationId());
155+
return invokeKeyDistributionService(request, GetAzureIotDeviceRegistrationStatusResult.class);
156+
}
157+
155158
private <T> T invokeKeyDistributionService(TrustedEntityRequst request, Class<T> resultClass) {
156159
ProvisioningBean invokeProvisioingApiResult = invokeProvisioningApi(request, false);
157160
return Utilities.fromJson(invokeProvisioingApiResult.getServiceProviderResponse(), resultClass);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.soracom.krypton.beans;
2+
3+
public class GetAzureIotDeviceRegistrationStatusParams {
4+
5+
private String operationId;
6+
public String getOperationId() { return operationId; }
7+
public void setOperationId(String operationId) { this.operationId = operationId; }
8+
9+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package io.soracom.krypton.beans;
2+
3+
public class GetAzureIotDeviceRegistrationStatusResult {
4+
5+
6+
private String certificate;
7+
private String privateKey;
8+
private String rootCaCertificate;
9+
private String deviceId;
10+
private String operationId;
11+
private String status;
12+
private String host;
13+
14+
public String getCertificate() {
15+
return certificate;
16+
}
17+
18+
public void setCertificate(String certificate) {
19+
this.certificate = certificate;
20+
}
21+
22+
public String getPrivateKey() {
23+
return privateKey;
24+
}
25+
26+
public void setPrivateKey(String privateKey) {
27+
this.privateKey = privateKey;
28+
}
29+
30+
public String getRootCaCertificate() { return rootCaCertificate; }
31+
32+
public void setRootCaCertificate(String rootCaCertificate) { this.rootCaCertificate = rootCaCertificate; }
33+
34+
public String getDeviceId() {
35+
return deviceId;
36+
}
37+
38+
public void setDeviceId(String deviceId) {
39+
this.deviceId = deviceId;
40+
}
41+
42+
public String getOperationId() {
43+
return operationId;
44+
}
45+
46+
public void setOperationId(String operationId) {
47+
this.operationId = operationId;
48+
}
49+
50+
public String getStatus() {
51+
return status;
52+
}
53+
54+
public void setStatus(String status) {
55+
this.status = status;
56+
}
57+
58+
public String getHost() {
59+
return host;
60+
}
61+
62+
public void setHost(String host) {
63+
this.host = host;
64+
}
65+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.soracom.krypton.beans;
2+
3+
public class RegisterAzureDeviceParams {
4+
5+
private String deviceId;
6+
private String globalEndpoint;
7+
private String idScope;
8+
private String azureIotCredentialId;
9+
private String x509CredentialId;
10+
private String host;
11+
12+
public String getDeviceId() {
13+
return deviceId;
14+
}
15+
16+
public void setDeviceId(String deviceId) {
17+
this.deviceId = deviceId;
18+
}
19+
20+
public String getGlobalEndpoint() {
21+
return globalEndpoint;
22+
}
23+
24+
public void setGlobalEndpoint(String globalEndpoint) {
25+
this.globalEndpoint = globalEndpoint;
26+
}
27+
28+
public String getIdScope() {
29+
return idScope;
30+
}
31+
32+
public void setIdScope(String idScope) {
33+
this.idScope = idScope;
34+
}
35+
36+
public String getAzureIotCredentialId() { return azureIotCredentialId; }
37+
38+
public void setAzureIotCredentialId(String azureIotCredentialId) { this.azureIotCredentialId = azureIotCredentialId; }
39+
40+
public String getX509CredentialId() {
41+
return x509CredentialId;
42+
}
43+
44+
public void setX509CredentialId(String x509CredentialId) { this.x509CredentialId = x509CredentialId; }
45+
46+
public String getHost() {
47+
return host;
48+
}
49+
50+
public void setHost(String host) {
51+
this.host = host;
52+
}
53+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.soracom.krypton.beans;
2+
3+
public class RegisterAzureIotDeviceResult {
4+
5+
private String operationId;
6+
private String status;
7+
8+
public String getOperationId() {
9+
return operationId;
10+
}
11+
12+
public void setOperationId(String operationId) {
13+
this.operationId = operationId;
14+
}
15+
16+
public String getStatus() {
17+
return status;
18+
}
19+
20+
public void setStatus(String status) {
21+
this.status = status;
22+
}
23+
24+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.soracom.krypton.beans;
2+
3+
public class RegisterAzureRequestParams {
4+
private RegisterAzureDeviceParams requestParameters;
5+
6+
public RegisterAzureRequestParams(){
7+
requestParameters = new RegisterAzureDeviceParams();
8+
}
9+
10+
public RegisterAzureRequestParams(RegisterAzureDeviceParams requestParameters){
11+
this.requestParameters = requestParameters;
12+
}
13+
14+
public RegisterAzureDeviceParams getRequestParameters() {
15+
return requestParameters;
16+
}
17+
18+
public void setRequestParameters(RegisterAzureDeviceParams requestParameters) {
19+
this.requestParameters = requestParameters;
20+
}
21+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* Copyright (c) 2018 SORACOM, Inc.
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS,
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
package io.soracom.krypton.cli;
16+
17+
import io.soracom.endorse.utils.Utilities;
18+
import io.soracom.krypton.SORACOMKryptonClient;
19+
import io.soracom.krypton.SORACOMKryptonClientConfig;
20+
import io.soracom.krypton.beans.GetAzureIotDeviceRegistrationStatusParams;
21+
import io.soracom.krypton.beans.GetAzureIotDeviceRegistrationStatusResult;
22+
23+
24+
/**
25+
* Handler to invoke operation of registerAzureIotDevice
26+
*
27+
* @author olivier-soracom
28+
*
29+
*/
30+
public class GetAzureIotDeviceRegistrationStatusOperationHandler implements KryptonOperationHandler<GetAzureIotDeviceRegistrationStatusResult> {
31+
32+
@Override
33+
public OperationInfo getOperationInfo() {
34+
return new OperationInfo("getAzureIotDeviceRegistrationStatus", "Get Registeration Status of Azure IoT Devices");
35+
}
36+
37+
@Override
38+
public GetAzureIotDeviceRegistrationStatusResult invoke(SORACOMKryptonClientConfig kryptonClientConfig, String requestParamJson) {
39+
SORACOMKryptonClient client = new SORACOMKryptonClient(kryptonClientConfig);
40+
GetAzureIotDeviceRegistrationStatusParams param = Utilities.fromJson(requestParamJson,
41+
GetAzureIotDeviceRegistrationStatusParams.class);
42+
GetAzureIotDeviceRegistrationStatusResult result = client.getAzureIotDeviceRegistrationStatus(param);
43+
return result;
44+
}
45+
46+
}

0 commit comments

Comments
 (0)