Search in sources :

Example 1 with Spin

use of org.camunda.spin.Spin in project workflow-service by UKHomeOffice.

the class VariablesDecryptInterceptor method decrypt.

static void decrypt(VariableValueDto value, ProcessInstanceSpinVariableDecryptor processInstanceSpinVariableDecryptor, Boolean deserializeValues) {
    Object objectTypeName = value.getValueInfo().get(VALUE_INFO_OBJECT_TYPE_NAME);
    if (objectTypeName != null && objectTypeName.toString().equals(SealedObject.class.getName())) {
        SealedObject object;
        if (value.getValue() instanceof String) {
            object = SerializationUtils.deserialize(Base64.getDecoder().decode(value.getValue().toString()));
        } else {
            object = (SealedObject) value.getValue();
        }
        Object toReturn;
        Spin decrypted = processInstanceSpinVariableDecryptor.decrypt(object);
        if (deserializeValues) {
            toReturn = decrypted;
            value.setValueInfo(new HashMap<>());
        } else {
            toReturn = decrypted.toString();
            value.setValueInfo(Map.of(VALUE_INFO_SERIALIZATION_DATA_FORMAT, decrypted.getDataFormatName()));
        }
        value.setValue(toReturn);
        value.setType("Json");
    }
}
Also used : Spin(org.camunda.spin.Spin) SealedObject(javax.crypto.SealedObject) SealedObject(javax.crypto.SealedObject)

Example 2 with Spin

use of org.camunda.spin.Spin in project camunda-bpm-platform by camunda.

the class SpinValueSerializer method serializeToByteArray.

protected byte[] serializeToByteArray(Object deserializedObject) throws Exception {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    OutputStreamWriter outWriter = new OutputStreamWriter(out, Context.getProcessEngineConfiguration().getDefaultCharset());
    BufferedWriter bufferedWriter = new BufferedWriter(outWriter);
    try {
        Spin<?> wrapper = (Spin<?>) deserializedObject;
        wrapper.writeToWriter(bufferedWriter);
        return out.toByteArray();
    } finally {
        IoUtil.closeSilently(out);
        IoUtil.closeSilently(outWriter);
        IoUtil.closeSilently(bufferedWriter);
    }
}
Also used : Spin(org.camunda.spin.Spin) OutputStreamWriter(java.io.OutputStreamWriter) ByteArrayOutputStream(java.io.ByteArrayOutputStream) BufferedWriter(java.io.BufferedWriter)

Example 3 with Spin

use of org.camunda.spin.Spin in project workflow-service by UKHomeOffice.

the class VariablesDecryptInterceptor method decrypt.

static void decrypt(VariableValueDto value, ProcessInstanceSpinVariableDecryptor processInstanceSpinVariableDecryptor, Boolean deserializeValues) {
    Object objectTypeName = value.getValueInfo().get(VALUE_INFO_OBJECT_TYPE_NAME);
    if (objectTypeName != null && objectTypeName.toString().equals(SealedObject.class.getName())) {
        SealedObject object;
        if (value.getValue() instanceof String) {
            object = SerializationUtils.deserialize(Base64.getDecoder().decode(value.getValue().toString()));
        } else {
            object = (SealedObject) value.getValue();
        }
        Object toReturn;
        Spin decrypted = processInstanceSpinVariableDecryptor.decrypt(object);
        if (deserializeValues) {
            toReturn = decrypted;
            value.setValueInfo(new HashMap<>());
        } else {
            toReturn = decrypted.toString();
            value.setValueInfo(Map.of(VALUE_INFO_SERIALIZATION_DATA_FORMAT, decrypted.getDataFormatName()));
        }
        value.setValue(toReturn);
        value.setType("Json");
    }
}
Also used : Spin(org.camunda.spin.Spin) SealedObject(javax.crypto.SealedObject) SealedObject(javax.crypto.SealedObject)

Aggregations

Spin (org.camunda.spin.Spin)3 SealedObject (javax.crypto.SealedObject)2 BufferedWriter (java.io.BufferedWriter)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1