Encoding Arrays with File Paths
Bob Sneidar
bobsneidar at iotecdigital.com
Wed Feb 19 11:01:47 EST 2025
Hi Monte. I did try your versioning solution but I am still having issues on the receiving end. Given your understanding of what I am trying to do here, how would you “package” the data so that it can be sent over the wire (socket communications)? The idea is to send an array with different key value pairs, but the file data needs to be encrypted for security.
I’m not sure I should even be using base64encoding. There is something in the arrayEncode dictionary entry that says I should be using URLEncode before sending data over the wire. I tried that but the receiving end got an empty string. <sigh>
Bob S
> On Feb 18, 2025, at 3:29 PM, Monte Goulding via use-livecode <use-livecode at lists.runrev.com> wrote:
>
> Ah ok so just checked the docs on the array encode version added in LC 7 and found:
> ```
> If present, and >= "7.0" then the array is encoded in such a way as to preserve unicode in keys and values, as well as NUL chars in keys and values
> ```
>
> So try `arrayEncode(array, “7.0")`
>
>> On 19 Feb 2025, at 10:18 AM, Bob Sneidar via use-livecode <use-livecode at lists.runrev.com> wrote:
>>
>> The structure looks like the following:
>>
>> Sly File Agent API
>> Structure of payload sent
>>
>> [0]
>> [profile] <selected location profile>
>> [n]
>> [data] <encrypted binary data of file>
>> [datemodified] <file system date modified>
>> [extpath] <file path suffix unique to each file>
>> [filecategory] <used by sql files database when data is returned>
>> [fileid] <used by sql files database when data is returned>
>> [filename] <name of file to be saved to disk. Also used by sql files database when data is returned>
>> [filepath] <root path to save file to. extpath should be appended to this>
>> [operation] <savefile, retrievefile, movefile, deletefile>
>> [saveaction] <new, newversion, overwrite unique to each file>
>> [version] <new version number also used by sql files database when data is returned>
>> [n+1]…
>>
>> The problem is definitely the binary data stored in the [n] [“data”] key. If I immediately decrypt the data in the key on the MacOS the data is correct. But when I decrypt the exact same data on the Windows OS I get a bad decrypt error.
>>
>> So to be perfectly clear, I create the above array, I iterate through each key from 1 to n, encrypting and overwriting the information in the [“data”] key. I then arrayEncode the entire array, then base64encode everythign before transmitting it over the wire.
>>
>> I reverse the process on the receiving side. It seems to work if I send non-binary data in the [“data”] key but if the data is binary, it fails. I do not think arrayEncode / decode likes to work with binary data.
>>
>> Bob S
>>
>>
>>> On Feb 18, 2025, at 2:45 PM, Monte Goulding via use-livecode <use-livecode at lists.runrev.com> wrote:
>>>
>>>
>>>
>>>> On 19 Feb 2025, at 9:39 AM, Bob Sneidar via use-livecode <use-livecode at lists.runrev.com> wrote:
>>>>
>>>> but one key is the binary file data of a file that has been encrypted using LC’s built in library.
>>>
>>> Are you using this as the key or element value? I think keys are always treated as text. It has been quite one time since I’ve been poking the engine in a meaningful way though so I might be forgetting that.
>>>
>>> Cheers
>>>
>>> Monte
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list