Can I use openssl asynchronously?

Hi there.

I’m working on a feature, which needs to receive a bunch of parts of a
file (from resumableJS), and then encrypt them, upload them to S3, and
stich them together.

Firstly: The files are extremely large - thus the need for resumableJS
on the front-end - so the application cannot keep them in memory. This
means that I need to encrypt each part when I receive it, and them push
it to S3 directly using a multipart upload.

I’m using this implementation of the AES-256-CBC algorithm:

ruby

data = aes.update(part)
data << aes.final if final_part?
s3_object.write(data)

Because of the asynchronous nature of the code, I can’t be certain to
receive the parts in order. This means, that I might receive the last
part in the middle, which means I will be calling final before the
actual final part of the encryption.

So my question is: Does final actually finalize the encryption in the
sense that you cannot use the algorithm instance after it has been
called? or?

Best regards, and thanks in advance

Emil

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs