Esempio n. 1
0
bool Layer::Load(File* f)
{
  if (!f->GetDataLine(&m_name))
  {
    f->ReportError("Failed to load layer group name");
    return false;
  }
  int numTextures = 0;
  if (!f->GetInteger(&numTextures))
  {
    f->ReportError("Failed to load num textures for layer group " + m_name);
    return false;
  }
  for (int i = 0; i < numTextures; i++)
  {
    std::string t;
    if (!f->GetDataLine(&t))
    {
      f->ReportError("Failed to load texture name for layer group " + m_name);
      return false;
    }
    Texture* tex = (Texture*)TheResourceManager::Instance()->GetRes(t);
    if (!tex)
    {
      f->ReportError("Failed to load texture " + t + " for layer group " + m_name);
      return false;
    }
    m_textures.push_back(tex);
  }
std::cout << "Layer group: loaded " << numTextures << " textures ok.\n";

  int numColours = 0;
  if (!f->GetInteger(&numColours))
  {
    f->ReportError("Failed to load num colours for layer group " + m_name);
    return false;
  }
  for (int i = 0; i < numColours; i++)
  {
    std::string s;
    if (!f->GetDataLine(&s))
    {
      f->ReportError("Failed to load colour for layer group " + m_name);
      return false;
    }
    Colour col = FromHexString(s); // TODO error checking ?
    m_colours.push_back(col);
  }
std::cout << "Layer group: loaded " << numColours << " colours ok.\n";

  return true;
}
Esempio n. 2
0
  IPDriver(const System::Net::IPEndpoint& ep) {
    
    
    
    FromHexString("452566E212031284966AB354F7F6CA04",(unsigned char*)id.value,2*16);
    sock = System::Net::CreateUDPSocket(ep); //Put a sock in itself.
    System::Net::IPEndpoint bound;
    sock->GetLocalEndpoint(bound);
    for(size_t i = 0;i<3;i++) {
      if(routerip) {
	gupnp_simple_igd_add_port(gateway.igdContext,"UDP",0,routerip,bound.port,60,"GlobalGrid rules!");
	printf("GlobalGrid protocol registered on physical router\n");
	break;
      }
      sleep(1);
    }
  
  }
Esempio n. 3
0
bool Rage::Color::FromString(std::string const &colorString)
{
	bool wasSuccessful = false;
	if (!colorString.empty())
	{
		if (colorString.front() == '#')
		{
			wasSuccessful = FromHexString(colorString.substr(1));
		}
		else
		{
			wasSuccessful = FromCommaString(colorString);
		}
	}
	
	if ( !wasSuccessful )
	{
		r = g = b = a = 1;
	}
	
	return wasSuccessful;
}
Esempio n. 4
0
bool CStringUtils::FromHexString( const std::wstring& src, BYTE* pDest )
{
    std::string s = std::string(src.begin(), src.end());
    return FromHexString(s, pDest);
}
Esempio n. 5
0
int main(int argc, char** argv) {

  
  
  





void* privkey = 0;

bool(*fptr)(void*,unsigned char*,size_t);



void* thisptr = System::ABI::C([&](unsigned char* data, size_t len){
  privkey = RSA_Key(data,len);
    if(privkey == 0) {
      printf("Unable to decode private key with size %i.\n",(int)len);
      abort();
    }
    return false;
},fptr);
DB_EnumPrivateKeys(thisptr,fptr);

if(privkey == 0) {
  printf("Generating 4096-bit RSA key. This may take a while....\n");
  privkey = RSA_GenKey(4096);
  char thumbprint[33];
  thumbprint[32] = 0;
  RSA_thumbprint(privkey,thumbprint);
  unsigned char* cert;
  size_t certlen;
  void* buffy = RSA_Export(privkey,true);
  GlobalGrid::Buffer_Get(buffy,(void**)&cert,&certlen);
  printf("Generated certificate taking %i bytes\n",(int)certlen);
  DB_Insert_Certificate(thumbprint,cert,certlen,true);
  GlobalGrid::GGObject_Free(buffy);
}

if(argc>1) {
  if(strcmp(argv[1],"export") == 0) {
    //Export public key
    void* buffy = RSA_Export(privkey,false);
    unsigned char* mander;
    size_t sz;
    GlobalGrid::Buffer_Get(buffy,&mander,&sz);
    write(STDOUT_FILENO,mander,sz);
    return 0;
  }else {
    if(strcmp(argv[1],"import") == 0) {
      unsigned char mander[4096];
      
      int len = 0;
      int cl;
      while((cl = read(STDIN_FILENO,mander+len,4096-len))>0) {
	len+=cl;
	printf("Read\n");
      }
      void* key = RSA_Key(mander,len);
      if(key == 0) {
	printf("Invalid key. Cannot import.\n");
	return -1;
      }
       char thumbprint[33];
  thumbprint[32] = 0;
  RSA_thumbprint(key,thumbprint);
  DB_Insert_Certificate(thumbprint,mander,len,false);
  printf("Successfully imported key with thumbprint %s\n",thumbprint);
  
      return 0;
    }
  }
}


char thumbprint[33];
thumbprint[32] = 0;
RSA_thumbprint(privkey,thumbprint);
printf("Your private key thumbprint is %s\n",thumbprint);
void* router = GlobalGrid::GlobalGrid_InitRouter(privkey);


printf("Registering IP protocol driver with system....\n");
System::Net::IPEndpoint routerBinding;
routerBinding.ip = "::";
routerBinding.port = 0;
if(argc>1) {
  routerBinding.ip = argv[4];
  routerBinding.port = atoi(argv[5]);
}
std::shared_ptr<IPProto::IIPDriver> deriver = IPProto::CreateDriver(router,routerBinding);
GlobalGrid::GlobalGrid_RegisterProtocolDriver(router,deriver);
void* locksock = deriver->SerializeLocalSocket();

unsigned char* socket_data;
size_t sock_len;
GlobalGrid::Buffer_Get(locksock,&socket_data,&sock_len);
uint16_t portno;
memcpy(&portno,socket_data+16,2);
printf("Protocol driver active and registered (port %i)\n",(int)portno);


//TODO: Server is listening on appropriate port, as verified by netstat -l.
//Client must not be sending handshake appopriately (or server receive loop isn't working).
//Connect to specified endpoint
if(argc>1) {
  System::Net::IPEndpoint ep;
  ep.ip = argv[1];
  ep.port = atoi(argv[2]);
  const char* thumbprint = argv[3];
  //Connect to remote endpoint.
  void* key = DB_FindAuthority(thumbprint);
  if(key == 0) {
    printf("ERR: Unable to find authority figure.\n");
    abort();
  }
  GlobalGrid::GlobalGrid_InitiateHandshake(router,deriver->MakeSocket(ep),key);
  RSA_Free(key);
}


unsigned char izard[16];
memset(izard,0,16);
GlobalGrid::GlobalGrid_SendPacket(router,izard,izard,1);

    char mander[256];
auto messenger = System::MakeQueue([&](std::shared_ptr<System::Message> msg){
  unsigned char pingmsg = 0;
  GlobalGrid::Guid converted;
  FromHexString(mander,(unsigned char*)converted.value,16*2);
  GlobalGrid::GlobalGrid_SendPacket(router,converted,&pingmsg,1);
    printf("PING %s\n",mander);
});

std::thread m([&](){
  
  while(true) {
    int br = read(0,mander,256);
    if(br <=0) {
      break;
    }
    mander[br] = 0;
    messenger->Post(0);
  }
});

m.detach();


System::Enter();

return 0;
}