From 6711786f44169db793ddd0fee4ee2f55e72dc608 Mon Sep 17 00:00:00 2001 From: Chord Date: Fri, 22 Apr 2016 23:00:39 -0400 Subject: [PATCH] CryptoInterface cross platform, UDP listen public --- .../psforever/crypto/CryptoInterface.scala | 23 +++++++++++++++++-- .../src/test/scala/CryptoInterfaceTest.scala | 1 + pslogin/src/main/scala/PsLogin.scala | 2 ++ pslogin/src/main/scala/UdpListener.scala | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/common/src/main/scala/psforever/crypto/CryptoInterface.scala b/common/src/main/scala/psforever/crypto/CryptoInterface.scala index 5aefb2fa..d70b0c8b 100644 --- a/common/src/main/scala/psforever/crypto/CryptoInterface.scala +++ b/common/src/main/scala/psforever/crypto/CryptoInterface.scala @@ -8,9 +8,9 @@ import scodec.bits.ByteVector object CryptoInterface { final val libName = "pscrypto" - // TODO: make this cross platform - final val fullLibName = "lib" + libName + ".so" + final val fullLibName = libName final val psLib = new Library(libName) + final val RC5_BLOCK_SIZE = 8 final val MD5_MAC_SIZE = 16 @@ -26,10 +26,29 @@ object CryptoInterface { "Free_RC5" ) + /** + * Used to initialize the crypto library at runtime. This allows + */ def initialize() : Unit = { functionsList foreach psLib.prefetch } + /** + * Used for debugging object loading + */ + def printEnvironment() : Unit = { + import java.io.File + + val classpath = System.getProperty("java.class.path") + val classpathEntries = classpath.split(File.pathSeparator) + + val myLibraryPath = System.getProperty("user.dir") + println("User dir: " + myLibraryPath) + classpathEntries.foreach(println) + + println("Required data model: " + System.getProperty("sun.arch.data.model")) + } + def MD5MAC(key : ByteVector, message : ByteVector, bytesWanted : Int) : ByteVector = { val out = Array.ofDim[Byte](bytesWanted) diff --git a/common/src/test/scala/CryptoInterfaceTest.scala b/common/src/test/scala/CryptoInterfaceTest.scala index 8ec33b84..9e700618 100644 --- a/common/src/test/scala/CryptoInterfaceTest.scala +++ b/common/src/test/scala/CryptoInterfaceTest.scala @@ -1,4 +1,5 @@ // Copyright (c) 2016 PSForever.net to present + import org.specs2.mutable._ import psforever.crypto.CryptoInterface import psforever.crypto.CryptoInterface.CryptoDHState diff --git a/pslogin/src/main/scala/PsLogin.scala b/pslogin/src/main/scala/PsLogin.scala index 3f76ca0c..8477651d 100644 --- a/pslogin/src/main/scala/PsLogin.scala +++ b/pslogin/src/main/scala/PsLogin.scala @@ -13,6 +13,8 @@ object PsLogin { catch { case e : UnsatisfiedLinkError => println("Unable to initialize " + CryptoInterface.libName) + println("Reason: " + e.getMessage) + e.getStackTrace.foreach(println) sys.exit(1) } diff --git a/pslogin/src/main/scala/UdpListener.scala b/pslogin/src/main/scala/UdpListener.scala index 9c0819dd..e54a1673 100644 --- a/pslogin/src/main/scala/UdpListener.scala +++ b/pslogin/src/main/scala/UdpListener.scala @@ -11,7 +11,7 @@ final case class SendPacket(msg : ByteVector, to : InetSocketAddress) class UdpListener(nextActor: ActorRef) extends Actor with ActorLogging { import context.system - IO(Udp) ! Udp.Bind(self, new InetSocketAddress("localhost", 51000)) + IO(Udp) ! Udp.Bind(self, new InetSocketAddress("0.0.0.0", 51000)) var bytesRecevied = 0L var bytesSent = 0L