Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;	
}