Object

net.psforever.crypto

CryptoInterface

Related Doc: package crypto

Permalink

object CryptoInterface

Source
CryptoInterface.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CryptoInterface
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. class CryptoDHState extends IFinalizable

    Permalink
  2. class CryptoState extends IFinalizable

    Permalink
  3. class CryptoStateWithMAC extends CryptoState

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def MD5MAC(key: ByteVector, message: ByteVector, bytesWanted: Int): ByteVector

    Permalink
  5. final val MD5_MAC_SIZE: Int(16)

    Permalink
  6. final val PSCRYPTO_VERSION_MAJOR: Int(1)

    Permalink
  7. final val PSCRYPTO_VERSION_MINOR: Int(1)

    Permalink
  8. final val RC5_BLOCK_SIZE: Int(8)

    Permalink
  9. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  10. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  11. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  12. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  13. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. final val fullLibName: String("pscrypto")

    Permalink
  15. val functionsList: List[String]

    Permalink
  16. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  17. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  18. def initialize(): Unit

    Permalink

    Used to initialize the crypto library at runtime.

    Used to initialize the crypto library at runtime. The version is checked and all functions are mapped.

  19. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  20. final val libName: String("pscrypto")

    Permalink
  21. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  22. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  23. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  24. def printEnvironment(): Unit

    Permalink

    Used for debugging object loading

  25. final val psLib: Library

    Permalink

    NOTE: this is a single, global shared library for the entire server's crypto needs

    NOTE: this is a single, global shared library for the entire server's crypto needs

    Unfortunately, access to this object didn't used to be synchronized. I noticed that tests for this module were hanging ("arrive at a shared secret" & "must fail to agree on a secret..."). This heisenbug was responsible for failed Travis test runs and developer issues as well. Using Windows minidumps, I tracked the issue to a single thread deep in pscrypto.dll. It appeared to be executing an EB FE instruction (on Intel x86 this is jmp $-2 or jump to self), which is an infinite loop. The stack trace made little to no sense and after banging my head on the wall for many hours, I assumed that something deep in CryptoPP, the libgcc libraries, or MSVC++ was the cause (or myself). Now all access to pscrypto functions that allocate and deallocate memory (DH_Start, RC5_Init) are synchronized. This *appears* to have fixed the problem.

  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  28. def verifyMAC(mac1: ByteVector, mac2: ByteVector): Boolean

    Permalink

    Checks if two Message Authentication Codes are the same in constant time, preventing a timing attack for MAC forgery

    Checks if two Message Authentication Codes are the same in constant time, preventing a timing attack for MAC forgery

    mac1

    A MAC value

    mac2

    Another MAC value

  29. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped