@@ -1431,13 +1431,16 @@ NATIVE_FUNCTION(LibsodiumObject, SecretboxEasy) {
14311431 USEARG (0 );
14321432 USEARG (1 );
14331433 USEARG (2 );
1434- VALIDATEARG (0 , STRING , " crypto_secretbox_easy: argument 0 is not a string ." );
1434+ VALIDATEARG (0 , OBJECT , " crypto_secretbox_easy: argument 0 is not a array/object ." );
14351435 VALIDATEARG (1 , STRING, " crypto_secretbox_easy: argument 1 is not a string." );
14361436 VALIDATEARG (2 , OBJECT, " crypto_secretbox_easy: argument 2 is not a array/object." );
14371437
1438- v8::Local<v8::String> encData = arg0->ToString (context).ToLocalChecked ();
1439- v8::String::Utf8Value encData_utf8_val (encData);
1440- const char * encData_str = *encData_utf8_val;
1438+ v8::Local<v8::Object> dataArray = arg0->ToObject (context).ToLocalChecked ();
1439+ unsigned char dataBytes[(int )dataArray->Get (v8::String::NewFromUtf8 (iv8, " length" , v8::NewStringType::kNormal ).ToLocalChecked ())->ToNumber ()->Value ()];
1440+
1441+ for (int i = 0 ; i < (int )dataArray->Get (v8::String::NewFromUtf8 (iv8, " length" , v8::NewStringType::kNormal ).ToLocalChecked ())->ToNumber ()->Value (); i++) {
1442+ dataBytes[i] = (unsigned char )dataArray->Get (i)->ToNumber ()->Value ();
1443+ }
14411444
14421445 v8::Local<v8::String> keyData = arg1->ToString (context).ToLocalChecked ();
14431446 v8::String::Utf8Value keyData_utf8_val (keyData);
@@ -1450,9 +1453,9 @@ NATIVE_FUNCTION(LibsodiumObject, SecretboxEasy) {
14501453 nonceBytes[i] = (unsigned char )nonceArray->Get (i)->ToNumber ()->Value ();
14511454 }
14521455
1453- unsigned char ciphertext[crypto_secretbox_MACBYTES + strlen (encData_str )];
1456+ unsigned char ciphertext[crypto_secretbox_MACBYTES + ( int )dataArray-> Get ( v8::String::NewFromUtf8 (iv8, " length " , v8::NewStringType:: kNormal ). ToLocalChecked ())-> ToNumber ()-> Value ( )];
14541457
1455- crypto_secretbox_easy (ciphertext, ( const unsigned char *)encData_str, strlen (encData_str ), nonceBytes, (const unsigned char *)keyData_str);
1458+ crypto_secretbox_easy (ciphertext, dataBytes, ( int )dataArray-> Get ( v8::String::NewFromUtf8 (iv8, " length " , v8::NewStringType:: kNormal ). ToLocalChecked ())-> ToNumber ()-> Value ( ), nonceBytes, (const unsigned char *)keyData_str);
14561459
14571460 char returnString[(sizeof (ciphertext)/sizeof (unsigned char ))*2 + 1 ];
14581461
@@ -1476,9 +1479,9 @@ NATIVE_FUNCTION(LibsodiumObject, SecretboxEasyOpen) {
14761479 USEARG (0 );
14771480 USEARG (1 );
14781481 USEARG (2 );
1479- VALIDATEARG (0 , OBJECT, " crypto_secretbox_easy_open : argument 0 is not a array/object." );
1480- VALIDATEARG (1 , STRING, " crypto_secretbox_easy_open : argument 1 is not a string." );
1481- VALIDATEARG (2 , OBJECT, " crypto_secretbox_easy_open : argument 2 is not a array/object." );
1482+ VALIDATEARG (0 , OBJECT, " crypto_secretbox_open_easy : argument 0 is not a array/object." );
1483+ VALIDATEARG (1 , STRING, " crypto_secretbox_open_easy : argument 1 is not a string." );
1484+ VALIDATEARG (2 , OBJECT, " crypto_secretbox_open_easy : argument 2 is not a array/object." );
14821485
14831486 v8::Local<v8::Object> cipherArray = arg0->ToObject (context).ToLocalChecked ();
14841487 unsigned char cipherBytes[(int )cipherArray->Get (v8::String::NewFromUtf8 (iv8, " length" , v8::NewStringType::kNormal ).ToLocalChecked ())->ToNumber ()->Value ()];
0 commit comments