CryptoInterface cross platform, UDP listen public

This commit is contained in:
Chord 2016-04-22 23:00:39 -04:00
parent 8cec84787d
commit 6711786f44
4 changed files with 25 additions and 3 deletions

View file

@ -8,9 +8,9 @@ import scodec.bits.ByteVector
object CryptoInterface { object CryptoInterface {
final val libName = "pscrypto" final val libName = "pscrypto"
// TODO: make this cross platform final val fullLibName = libName
final val fullLibName = "lib" + libName + ".so"
final val psLib = new Library(libName) final val psLib = new Library(libName)
final val RC5_BLOCK_SIZE = 8 final val RC5_BLOCK_SIZE = 8
final val MD5_MAC_SIZE = 16 final val MD5_MAC_SIZE = 16
@ -26,10 +26,29 @@ object CryptoInterface {
"Free_RC5" "Free_RC5"
) )
/**
* Used to initialize the crypto library at runtime. This allows
*/
def initialize() : Unit = { def initialize() : Unit = {
functionsList foreach psLib.prefetch 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 = { def MD5MAC(key : ByteVector, message : ByteVector, bytesWanted : Int) : ByteVector = {
val out = Array.ofDim[Byte](bytesWanted) val out = Array.ofDim[Byte](bytesWanted)

View file

@ -1,4 +1,5 @@
// Copyright (c) 2016 PSForever.net to present // Copyright (c) 2016 PSForever.net to present
import org.specs2.mutable._ import org.specs2.mutable._
import psforever.crypto.CryptoInterface import psforever.crypto.CryptoInterface
import psforever.crypto.CryptoInterface.CryptoDHState import psforever.crypto.CryptoInterface.CryptoDHState

View file

@ -13,6 +13,8 @@ object PsLogin {
catch { catch {
case e : UnsatisfiedLinkError => case e : UnsatisfiedLinkError =>
println("Unable to initialize " + CryptoInterface.libName) println("Unable to initialize " + CryptoInterface.libName)
println("Reason: " + e.getMessage)
e.getStackTrace.foreach(println)
sys.exit(1) sys.exit(1)
} }

View file

@ -11,7 +11,7 @@ final case class SendPacket(msg : ByteVector, to : InetSocketAddress)
class UdpListener(nextActor: ActorRef) extends Actor with ActorLogging { class UdpListener(nextActor: ActorRef) extends Actor with ActorLogging {
import context.system 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 bytesRecevied = 0L
var bytesSent = 0L var bytesSent = 0L