A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nodejs/node/commit/cec9d9d016 below:

forward auth tag to OpenSSL immediately · nodejs/node@cec9d9d · GitHub

@@ -514,9 +514,9 @@ void CipherBase::GetAuthTag(const FunctionCallbackInfo<Value>& args) {

514 514

ASSIGN_OR_RETURN_UNWRAP(&cipher, args.This());

515 515 516 516

// Only callable after Final and if encrypting.

517 -

if (cipher->ctx_ ||

518 -

cipher->kind_ != kCipher ||

519 -

cipher->auth_tag_len_ == kNoAuthTagLength) {

517 +

if (cipher->ctx_ || cipher->kind_ != kCipher ||

518 +

cipher->auth_tag_len_ == kNoAuthTagLength ||

519 +

cipher->auth_tag_state_ != kAuthTagComputed) {

520 520

return;

521 521

}

522 522

@@ -577,29 +577,16 @@ void CipherBase::SetAuthTag(const FunctionCallbackInfo<Value>& args) {

577 577

}

578 578 579 579

cipher->auth_tag_len_ = tag_len;

580 -

cipher->auth_tag_state_ = kAuthTagKnown;

581 -

CHECK_LE(cipher->auth_tag_len_, sizeof(cipher->auth_tag_));

580 +

CHECK_LE(cipher->auth_tag_len_, ncrypto::Cipher::MAX_AUTH_TAG_LENGTH);

582 581 583 -

memset(cipher->auth_tag_, 0, sizeof(cipher->auth_tag_));

584 -

auth_tag.CopyTo(cipher->auth_tag_, cipher->auth_tag_len_);

582 +

if (!cipher->ctx_.setAeadTag({auth_tag.data(), cipher->auth_tag_len_})) {

583 +

return args.GetReturnValue().Set(false);

584 +

}

585 +

cipher->auth_tag_state_ = kAuthTagSetByUser;

585 586 586 587

args.GetReturnValue().Set(true);

587 588

}

588 589 589 -

bool CipherBase::MaybePassAuthTagToOpenSSL() {

590 -

if (auth_tag_state_ == kAuthTagKnown) {

591 -

ncrypto::Buffer<const char> buffer{

592 -

.data = auth_tag_,

593 -

.len = auth_tag_len_,

594 -

};

595 -

if (!ctx_.setAeadTag(buffer)) {

596 -

return false;

597 -

}

598 -

auth_tag_state_ = kAuthTagPassedToOpenSSL;

599 -

}

600 -

return true;

601 -

}

602 - 603 590

bool CipherBase::SetAAD(

604 591

const ArrayBufferOrViewContents<unsigned char>& data,

605 592

int plaintext_len) {

@@ -622,10 +609,6 @@ bool CipherBase::SetAAD(

622 609

return false;

623 610

}

624 611 625 -

if (kind_ == kDecipher && !MaybePassAuthTagToOpenSSL()) {

626 -

return false;

627 -

}

628 - 629 612

ncrypto::Buffer<const unsigned char> buffer{

630 613

.data = nullptr,

631 614

.len = static_cast<size_t>(plaintext_len),

@@ -670,12 +653,6 @@ CipherBase::UpdateResult CipherBase::Update(

670 653

return kErrorMessageSize;

671 654

}

672 655 673 -

// Pass the authentication tag to OpenSSL if possible. This will only happen

674 -

// once, usually on the first update.

675 -

if (kind_ == kDecipher && IsAuthenticatedMode()) {

676 -

CHECK(MaybePassAuthTagToOpenSSL());

677 -

}

678 - 679 656

const int block_size = ctx_.getBlockSize();

680 657

CHECK_GT(block_size, 0);

681 658

if (len + block_size > INT_MAX) return kErrorState;

@@ -777,16 +754,11 @@ bool CipherBase::Final(std::unique_ptr<BackingStore>* out) {

777 754

static_cast<size_t>(ctx_.getBlockSize()),

778 755

BackingStoreInitializationMode::kUninitialized);

779 756 780 -

if (kind_ == kDecipher &&

781 -

Cipher::FromCtx(ctx_).isSupportedAuthenticatedMode()) {

782 -

MaybePassAuthTagToOpenSSL();

783 -

}

784 - 785 757

#if (OPENSSL_VERSION_NUMBER < 0x30000000L)

786 758

// OpenSSL v1.x doesn't verify the presence of the auth tag so do

787 759

// it ourselves, see https://github.com/nodejs/node/issues/45874.

788 760

if (kind_ == kDecipher && ctx_.isChaCha20Poly1305() &&

789 -

auth_tag_state_ != kAuthTagPassedToOpenSSL) {

761 +

auth_tag_state_ != kAuthTagSetByUser) {

790 762

return false;

791 763

}

792 764

#endif

@@ -824,6 +796,9 @@ bool CipherBase::Final(std::unique_ptr<BackingStore>* out) {

824 796

}

825 797

ok = ctx_.getAeadTag(auth_tag_len_,

826 798

reinterpret_cast<unsigned char*>(auth_tag_));

799 +

if (ok) {

800 +

auth_tag_state_ = kAuthTagComputed;

801 +

}

827 802

}

828 803

}

829 804

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4