use of org.opensmartgridplatform.ws.schema.core.secret.management.GetSecretsResponse in project open-smart-grid-platform by OSGP.
the class SecretManagementService method getKeys.
/**
* Retrieves the active keys of requested types for a specified device
*
* @param messageMetadata the metadata of the request message
* @param deviceIdentification the device identification string of the device
* @param keyTypes the requested key types
* @return the requested keys in a map by key type, with value NULL if not present
*/
public Map<SecurityKeyType, byte[]> getKeys(final MessageMetadata messageMetadata, final String deviceIdentification, final List<SecurityKeyType> keyTypes) {
final GetSecretsRequest request = this.createGetSecretsRequest(deviceIdentification, keyTypes);
final GetSecretsResponse response = this.secretManagementClient.getSecretsRequest(messageMetadata, request);
this.validateGetResponse(keyTypes, response);
return this.convertSoapSecretsToSecretMapByType(response.getTypedSecrets().getTypedSecret());
}
use of org.opensmartgridplatform.ws.schema.core.secret.management.GetSecretsResponse in project open-smart-grid-platform by OSGP.
the class SecretManagementServiceTest method testGetKeys.
@Test
public void testGetKeys() {
// SETUP
final List<SecurityKeyType> keyTypes = Arrays.asList(KEY_TYPE);
final GetSecretsResponse response = new GetSecretsResponse();
response.setResult(OsgpResultType.OK);
response.setTypedSecrets(new TypedSecrets());
response.getTypedSecrets().getTypedSecret().add(TYPED_SECRET);
when(this.secretManagementClient.getSecretsRequest(same(messageMetadata), any(GetSecretsRequest.class))).thenReturn(response);
when(this.decrypterForProtocolAdapterDlms.decrypt(SOAP_SECRET)).thenReturn(UNENCRYPTED_SECRET);
// EXECUTE
final Map<SecurityKeyType, byte[]> result = this.secretManagementTestService.getKeys(messageMetadata, DEVICE_IDENTIFICATION, keyTypes);
// ASSERT
assertThat(result).isNotNull();
assertThat(result.size()).isEqualTo(1);
assertThat(result.keySet().iterator().next()).isEqualTo(KEY_TYPE);
assertThat(result.values().iterator().next()).isEqualTo(UNENCRYPTED_SECRET);
}
use of org.opensmartgridplatform.ws.schema.core.secret.management.GetSecretsResponse in project open-smart-grid-platform by OSGP.
the class SecretManagementService method getNewOrActiveKeyPerSecretType.
/**
* Requests the New key for a specific device identification. Depending on the New key type
* (Authentication or Encryption) that will be retrieved, the other Active key type
* (Authentication or Encryption) will be requested. Once both key types are retrieved, this new
* keypair can be returned for connection with this device.
*
* @param messageMetadata the metadata of the request message
* @param deviceIdentification the device identification string of the device
* @param keyTypes the requested key types
* @return the requested keys in a map by key type, with value NULL if not present
*/
public Map<SecurityKeyType, byte[]> getNewOrActiveKeyPerSecretType(final MessageMetadata messageMetadata, final String deviceIdentification, final List<SecurityKeyType> keyTypes) {
final List<TypedSecret> newKeyPairForConnection = new ArrayList<>();
final GetNewSecretsRequest getNewSecretsRequest = this.createGetNewSecretsRequest(deviceIdentification, keyTypes);
final GetNewSecretsResponse getNewSecretsResponse = this.secretManagementClient.getNewSecretsRequest(messageMetadata, getNewSecretsRequest);
this.validateGetNewResponse(keyTypes, getNewSecretsResponse);
for (final TypedSecret secretTypeNewKey : getNewSecretsResponse.getTypedSecrets().getTypedSecret()) {
if (secretTypeNewKey.getSecret() != null && secretTypeNewKey.getSecret().length() > 0) {
newKeyPairForConnection.add(secretTypeNewKey);
} else {
final SecurityKeyType keyTypeActiveKey = SecurityKeyType.fromSecretType(secretTypeNewKey.getType());
final GetSecretsRequest getSecretsRequest = this.createGetSecretsRequest(deviceIdentification, Arrays.asList(keyTypeActiveKey));
final GetSecretsResponse getSecretsResponse = this.secretManagementClient.getSecretsRequest(messageMetadata, getSecretsRequest);
this.validateGetResponse(Arrays.asList(keyTypeActiveKey), getSecretsResponse);
newKeyPairForConnection.add(getSecretsResponse.getTypedSecrets().getTypedSecret().get(0));
}
}
return this.convertSoapSecretsToSecretMapByType(newKeyPairForConnection);
}
use of org.opensmartgridplatform.ws.schema.core.secret.management.GetSecretsResponse in project open-smart-grid-platform by OSGP.
the class SecretManagementEndpoint method getSecrets.
public GetSecretsResponse getSecrets(final GetSecretsRequest request) throws OsgpException {
final GetSecretsResponse response = new GetSecretsResponse();
final SecretTypes soapSecretTypes = request.getSecretTypes();
final List<SecretType> secretTypeList = this.converter.convertToSecretTypes(soapSecretTypes);
final List<TypedSecret> typedSecrets = this.secretManagementService.retrieveSecrets(request.getDeviceId(), secretTypeList);
final TypedSecrets soapTypedSecrets = this.converter.convertToSoapTypedSecrets(typedSecrets);
response.setTypedSecrets(soapTypedSecrets);
return response;
}
Aggregations