-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Aes openssl #18010
Aes openssl #18010
Conversation
Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks promising. Please split the 1st commit out as a separate PR - I would like something like that merged into 8.12.x.
The other commits looks promising, but need some cleaning up, and should probably target 9.4.x - provided we are happy they are safe.
// Alternative would be a separate enum for compressToBuffer formats, but that seems more likely to cause confusion | ||
out.append((byte) (method == COMPRESS_METHOD_LZW ? COMPRESS_METHOD_LZWLEGACY : method)); | ||
out.append((size32_t)0); | ||
if (len >= 32) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor: Could be moved to the outer if ()
{ | ||
compressor->close(); | ||
size32_t compressedLen = compressor->buflen(); | ||
out.setWritePos(originalLength + sizeof(bool)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
picky: Should now be sizeof(byte)(!) and line 784
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could be sizeof(CompressMethod), if the enum was defined with type:
enum CompressionMethod : byte
.. would also remove need for some typecasts elsewhere.
{ | ||
case 32: | ||
if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, (const unsigned char *) key, iv)) | ||
throw makeStringException(0, "Crap"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not the most informative error message....
Running your branch in release and comparing open ssl v preexisting it seems to be about 3-4x faster. P.S. The efficiency of the CAESCompressor could be improved - it clones the data once more than is necessary. |
@jakesmith please can you review the 1st commit (you're welcome to review the others). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@richardkchapman - added some trivial comments.
size32_t compressedLen = compressor->buflen(); | ||
out.setWritePos(originalLength + sizeof(bool)); | ||
out.append(compressedLen); | ||
out.setWritePos(originalLength + sizeof(bool) + sizeof(size32_t) + compressedLen); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not new, but would be more readable, if these were in order they were appended to buffer.
{ | ||
compressor->close(); | ||
size32_t compressedLen = compressor->buflen(); | ||
out.setWritePos(originalLength + sizeof(bool)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could be sizeof(CompressMethod), if the enum was defined with type:
enum CompressionMethod : byte
.. would also remove need for some typecasts elsewhere.
if (compressed) | ||
decompressToBuffer(out, in.readDirect(srcLen)); | ||
else | ||
unsigned char _method; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
byte method (or byte ComressMethod _method if enum is : byte) ?
void testRun() | ||
{ | ||
MemoryBuffer x; | ||
compressToBuffer(x, 251, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So it's clear length is correct (if ever changed etc), would be clearer if string was declared separately, and strlen instead of constant 251 was used here.
Type of change:
Checklist:
Smoketest:
Testing: