0
votes

Using the following code:

List<OfflineCommand> l = (List<OfflineCommand>)Storage.getInstance().readObject(
    user + apptID + "-offlineCommandsEnc"
);
if (l != null && l.size() > 0) {
    flgSuccess = true;
}


public void init(Object context) {
        Preferences.setPreferencesLocation("EncryptedPreferences");
        Storage.getInstance().deleteStorageFile(Cookie.STORAGE_NAME);
        EncryptedStorage.install("***********");
        JSONParser.setUseLongs(true);
}

This error is being thrown on the first line:

[EDT] 0:1:27,628 - Exception: org.bouncycastle.crypto.DataLengthException - last block incomplete in decryption org.bouncycastle.crypto.DataLengthException: last block incomplete in decryption at org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal(PaddedBufferedBlockCipher.java:281) at com.codename1.crypto.EncryptedStorage.createInputStream(EncryptedStorage.java:63) at com.codename1.io.Storage.readObject(Storage.java:260) at com.fluency.fluencymobile.server.ServerImpl.verifyActivityExists(ServerImpl.java:709) at com.fluency.fluencymobile.forms.AppointmentForm.lambda$new$4(AppointmentForm.java:512) at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:349) at com.codename1.ui.Button.fireActionEvent(Button.java:570) at com.codename1.ui.Button.released(Button.java:604) at com.codename1.ui.Button.pointerReleased(Button.java:708) at com.codename1.ui.Form.pointerReleased(Form.java:3262) at com.codename1.ui.Component.pointerReleased(Component.java:4288) at com.codename1.ui.Display.handleEvent(Display.java:2065) at com.codename1.ui.Display.edtLoopImpl(Display.java:1043) at com.codename1.ui.Display.mainEDTLoop(Display.java:961) at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

1

1 Answers

0
votes

You have an encrypted filesystem to which you wrote or read before the encryption was activated in the init(Object) method possibly via a static initializer, push callback or something like that.

You need to make sure that EncryptedStorage.install() happens before you do any storage access whether to read or write.