static void Copy( std::random_device & generator ) { String connectionString; DatabaseConnectionSPtr connection = std::make_shared< CDatabaseTestConnection >( TEST_GOOD_SERVER, TEST_GOOD_USER, TEST_GOOD_PASSWORD, connectionString ); connection->SelectDatabase( TEST_GOOD_DATABASE ); CDatabaseValue< ValueType > valueA( connection ); BOOST_CHECK_NO_THROW( valueA.SetValue( DatabaseUtils::Helpers< ValueType >::GetRandomValue( generator ) ) ); CDatabaseValue< ValueType > valueB( connection ); BOOST_CHECK_NO_THROW( valueB.SetValue( DatabaseUtils::Helpers< ValueType >::GetRandomValue( generator ) ) ); BOOST_CHECK_NO_THROW( valueA.SetValue( valueB ) ); BOOST_CHECK_EQUAL( valueA.GetValue(), valueB.GetValue() ); }
void ChFun::function1D(double* out, const double* xValues, const size_t nData)const { const double start = startX(); const double end = endX(); for(size_t i = 0; i < nData; ++i) { const double x = xValues[i]; if ( x < start ) continue; if ( x > end ) break; out[i] = valueB( x ); } }
/* static */ void PrioEncoder::Encode(GlobalObject& aGlobal, const nsCString& aBatchID, const PrioParams& aPrioParams, RootedDictionary<PrioEncodedData>& aData, ErrorResult& aRv) { nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports()); if (!global) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } SECStatus prio_rv = SECSuccess; if (!sSingleton) { nsresult rv; nsAutoCStringN<CURVE25519_KEY_LEN_HEX + 1> prioKeyA; rv = Preferences::GetCString("prio.publicKeyA", prioKeyA); if (NS_FAILED(rv)) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } nsAutoCStringN<CURVE25519_KEY_LEN_HEX + 1> prioKeyB; rv = Preferences::GetCString("prio.publicKeyB", prioKeyB); if (NS_FAILED(rv)) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } // Check that both public keys are of the right length // and contain only hex digits 0-9a-fA-f if (!PrioEncoder::IsValidHexPublicKey(prioKeyA) || !PrioEncoder::IsValidHexPublicKey(prioKeyB)) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } prio_rv = Prio_init(); if (prio_rv != SECSuccess) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } prio_rv = PublicKey_import_hex( &sPublicKeyA, reinterpret_cast<const unsigned char*>(prioKeyA.BeginReading()), CURVE25519_KEY_LEN_HEX); if (prio_rv != SECSuccess) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } prio_rv = PublicKey_import_hex( &sPublicKeyB, reinterpret_cast<const unsigned char*>(prioKeyB.BeginReading()), CURVE25519_KEY_LEN_HEX); if (prio_rv != SECSuccess) { aRv.Throw(NS_ERROR_UNEXPECTED); return; } sSingleton = new PrioEncoder(); ClearOnShutdown(&sSingleton); } nsTArray<bool> dataItems = aPrioParams.mBooleans; if (dataItems.Length() > gNumBooleans) { aRv.ThrowRangeError<MSG_VALUE_OUT_OF_RANGE>( NS_LITERAL_STRING("Maximum boolean value exceeded")); return; } PrioConfig prioConfig = PrioConfig_new( dataItems.Length(), sPublicKeyA, sPublicKeyB, reinterpret_cast<const unsigned char*>(aBatchID.BeginReading()), aBatchID.Length()); if (!prioConfig) { aRv.Throw(NS_ERROR_FAILURE); return; } auto configGuard = MakeScopeExit([&] { PrioConfig_clear(prioConfig); }); unsigned char* forServerA = nullptr; unsigned int lenA = 0; unsigned char* forServerB = nullptr; unsigned int lenB = 0; prio_rv = PrioClient_encode(prioConfig, dataItems.Elements(), &forServerA, &lenA, &forServerB, &lenB); nsTArray<uint8_t> arrayForServerA; nsTArray<uint8_t> arrayForServerB; if (!arrayForServerA.AppendElements(reinterpret_cast<uint8_t*>(forServerA), lenA, fallible)) { aRv.Throw(NS_ERROR_OUT_OF_MEMORY); return; } free(forServerA); if (!arrayForServerB.AppendElements(reinterpret_cast<uint8_t*>(forServerB), lenB, fallible)) { aRv.Throw(NS_ERROR_OUT_OF_MEMORY); return; } free(forServerB); if (prio_rv != SECSuccess) { aRv.Throw(NS_ERROR_FAILURE); return; } JS::Rooted<JS::Value> valueA(aGlobal.Context()); if (!ToJSValue(aGlobal.Context(), TypedArrayCreator<Uint8Array>(arrayForServerA), &valueA)) { aRv.Throw(NS_ERROR_OUT_OF_MEMORY); return; } aData.mA.Construct().Init(&valueA.toObject()); JS::Rooted<JS::Value> valueB(aGlobal.Context()); if (!ToJSValue(aGlobal.Context(), TypedArrayCreator<Uint8Array>(arrayForServerB), &valueB)) { aRv.Throw(NS_ERROR_OUT_OF_MEMORY); return; } aData.mB.Construct().Init(&valueB.toObject()); }