bool PaperWallet::genWallet() { QRcode *codePublic, *codePrivate; QImage scaledPublic, scaledPrivate; QByteArray byteArrayPublic, byteArrayPrivate; QBuffer bufferPublic(&byteArrayPublic), bufferPrivate(&byteArrayPrivate); QString htmlTemplate; unsigned char *p; if ((addressURL != "") && (privateKeyURL != "")) { codePublic = QRcode_encodeString(addressURL.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); if (!codePublic) { return false; } publicImage = QImage(codePublic->width + 8, codePublic->width + 8, QImage::Format_RGB32); publicImage.fill(0xffffff); p = codePublic->data; for (int y = 0; y < codePublic->width; y++) { for (int x = 0; x < codePublic->width; x++) { publicImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); p++; } } QRcode_free(codePublic); scaledPublic = publicImage.scaledToHeight(256); scaledPublic.save(&bufferPublic, "PNG"); QString publicImageBase64 = QString::fromLatin1(byteArrayPublic.toBase64().data()); codePrivate = QRcode_encodeString(privateKeyURL.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1); if (!codePrivate) { return false; } privateImage = QImage(codePrivate->width + 8, codePrivate->width + 8, QImage::Format_RGB32); privateImage.fill(0xffffff); p = codePrivate->data; for (int y = 0; y < codePrivate->width; y++) { for (int x = 0; x < codePrivate->width; x++) { privateImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); p++; } } QRcode_free(codePrivate); scaledPrivate = privateImage.scaledToHeight(256); scaledPrivate.save(&bufferPrivate, "PNG"); QString privateImageBase64 = QString::fromLatin1(byteArrayPrivate.toBase64().data()); QFile templateFile(templateName); if (templateFile.open(QIODevice::ReadOnly)) { QTextStream templateStream(&templateFile); htmlTemplate = templateStream.readAll(); htmlTemplate.replace(QString("#PUBLIC_KEY_IMAGE#"), publicImageBase64); htmlTemplate.replace(QString("#PUBLIC_KEY_ADDRESS#"), address); htmlTemplate.replace(QString("#PRIVATE_KEY_IMAGE#"), privateImageBase64); htmlTemplate.replace(QString("#PRIVATE_KEY_ADDRESS#"), privateKey); htmlTemplate.replace(QString("#DATE_GENERATED#"), date); htmlTemplate.replace(QString("#BALANCE#"), amount); htmlTemplate.replace(QString("#LABEL#"), label); } if (!fileName.isNull()) { printf("fileName = %s\n", fileName.toStdString().c_str()); QFile file(fileName); if (file.open(QIODevice::ReadWrite)) { QTextStream stream(&file); stream << htmlTemplate; stream << endl; } } return true; } return false; }
XBOX::VError VRPCService::GetProxy( XBOX::VString& outProxy, const XBOX::VString& inModulePath, const XBOX::VString& inNamespace, const IHTTPRequest* inRequest, IHTTPResponse* inResponse) { VError err = VE_OK; outProxy.Clear(); if (fApplication != NULL) { VRIAContext *riaContext = fApplication->RetainNewContext( err); if (err == VE_OK) { VRPCCatalog *catalog = fApplication->RetainRPCCatalog( riaContext, &err, inRequest, inResponse); if (err == VE_OK) { if (catalog != NULL) { MapOfRPCSchema schemas; err = catalog->RetainSchemasByModule( inModulePath, schemas); if (err == VE_OK) { // Build the proxy VFile *bodyFile = NULL, *templateFile = NULL; VFilePath path; VRIAServerApplication::Get()->GetWAFrameworkFolderPath( path); path.ToSubFolder( L"Core").ToSubFolder( L"Runtime").ToSubFolder( L"rpcService"); path.SetFileName( L"proxy-body.js", true); bodyFile = new VFile( path); if (bodyFile == NULL) err = vThrowError( VE_MEMORY_FULL); if (err == VE_OK) { path.SetFileName( L"proxy-template.js", true); templateFile = new VFile( path); if (templateFile == NULL) err = vThrowError( VE_MEMORY_FULL); } if (err == VE_OK && bodyFile->Exists() && templateFile->Exists()) { VString templateString; VFileStream bodyStream( bodyFile); VFileStream templateStream( templateFile); err = bodyStream.OpenReading(); if (err == VE_OK) templateStream.OpenReading(); if (err == VE_OK) err = bodyStream.GetText( outProxy); if (err == VE_OK) { VValueBag bag; bag.SetString( L"rpc-pattern", fPatternForMethods); bag.SetString( L"publishInGlobalNamespace", (fPublishInClientGlobalNamespace) ? L"true" : L"false"); outProxy.Format( &bag); } if (err == VE_OK) err = templateStream.GetText( templateString); if (err == VE_OK) { if (templateString.BeginsWith( L"/*")) { // sc 28/08/2014, remove the copyright VIndex end = templateString.Find( L"*/"); if (end > 0) { templateString.Remove( 1, end + 1); } } for (MapOfRPCSchema::const_iterator iter = schemas.begin() ; iter != schemas.end() ; ++iter) { VValueBag bag; bag.SetString( L"function-name", iter->first.GetMethodName()); bag.SetString( L"namespace", inNamespace); bag.SetString( L"modulePath", inModulePath); VString proxy( templateString); proxy.Format( &bag); outProxy.AppendString( proxy); } } bodyStream.CloseReading(); templateStream.CloseReading(); } else { err = vThrowError( VE_FILE_NOT_FOUND); } QuickReleaseRefCountable( bodyFile); QuickReleaseRefCountable( templateFile); } } else { err = vThrowError( VE_RIA_RPC_CATALOG_NOT_FOUND); } } } ReleaseRefCountable( &riaContext); } return err; }