emoose/ExCrypt

Implementation Status

emoose opened this issue · 1 comments

TODO:

  • update list below with implemented functions
  • add XeKeys functions to list
  • check bootloaders/HV for any other functions that are used outside of XeCrypt-internal stuff
  • add test vectors for each function
  • ensure all _STATE structs are byteswapped before/after accesses to them

Kernel: 67/88

Export Name Location Implemented Has Tests? Notes
XeCryptAesKey Kernel ✔️
XeCryptAesEcb Kernel ✔️
XeCryptAesCbc Kernel ✔️
XeCryptBnDwLeDhEqualBase Kernel
XeCryptBnDwLeDhInvalBase Kernel
XeCryptBnDwLeDhModExp Kernel
XeCryptBnDw_Copy Kernel ✔️
XeCryptBnDw_SwapLeBe Kernel ✔️
XeCryptBnDw_Zero Kernel ✔️
XeCryptBnDwLePkcs1Format Kernel
XeCryptBnDwLePkcs1Verify Kernel
XeCryptBnQwBeSigCreate Kernel
XeCryptBnQwBeSigFormat Kernel ✔️
XeCryptBnQwBeSigVerify Kernel ✔️
XeCryptBnQwNeModExp Kernel
XeCryptBnQwNeModExpRoot Kernel
XeCryptBnQwNeModInv Kernel ✔️
XeCryptBnQwNeModMul Kernel ✔️
XeCryptBnQwNeRsaKeyGen Kernel
XeCryptBnQwNeRsaPrvCrypt Kernel
XeCryptBnQwNeRsaPubCrypt Kernel ✔️
XeCryptBnQw_Copy Kernel ✔️
XeCryptBnQw_SwapDwQw Kernel ✔️
XeCryptBnQw_SwapDwQwLeBe Kernel ✔️
XeCryptBnQw_SwapLeBe Kernel ✔️
XeCryptBnQw_Zero Kernel ✔️
XeCryptChainAndSumMac Kernel ✔️
XeCryptDesParity Kernel ✔️
XeCryptDesKey Kernel ✔️
XeCryptDesEcb Kernel ✔️
XeCryptDesCbc Kernel ✔️
XeCryptDes3Key Kernel ✔️
XeCryptDes3Ecb Kernel ✔️
XeCryptDes3Cbc Kernel ✔️
XeCryptHmacMd5Init Kernel ✔️
XeCryptHmacMd5Update Kernel ✔️
XeCryptHmacMd5Final Kernel ✔️
XeCryptHmacMd5 Kernel ✔️
XeCryptHmacShaInit Kernel ✔️
XeCryptHmacShaUpdate Kernel ✔️
XeCryptHmacShaFinal Kernel ✔️
XeCryptHmacSha Kernel ✔️
XeCryptHmacShaVerify Kernel ✔️
XeCryptMd5Init Kernel ✔️
XeCryptMd5Update Kernel ✔️
XeCryptMd5Final Kernel ✔️
XeCryptMd5 Kernel ✔️
XeCryptParveEcb Kernel ✔️
XeCryptParveCbcMac Kernel ✔️
XeCryptRandom Kernel Uses RC4 with a static RC4_STATE, inited by Hypervisor during boot - is it possible to find what that initial value is?
XeCryptRc4Key Kernel ✔️
XeCryptRc4Ecb Kernel ✔️
XeCryptRc4 Kernel ✔️
XeCryptRotSumSha Kernel ✔️
XeCryptShaInit Kernel ✔️
XeCryptShaUpdate Kernel ✔️
XeCryptShaFinal Kernel ✔️
XeCryptSha Kernel ✔️
XeCryptSha256Init Kernel ✔️
XeCryptSha256Update Kernel ✔️
XeCryptSha256Final Kernel ✔️
XeCryptSha256 Kernel ✔️
XeCryptSha384Init Kernel ✔️
XeCryptSha384Update Kernel ✔️
XeCryptSha384Final Kernel ✔️
XeCryptSha384 Kernel ✔️
XeCryptSha512Init Kernel ✔️
XeCryptSha512Update Kernel ✔️
XeCryptSha512Final Kernel ✔️
XeCryptSha512 Kernel ✔️
XeCryptBnQwNeCompare Kernel ✔️
XeCryptAesCtr Kernel
XeCryptAesCbcMac Kernel
XeCryptAesDmMac Kernel
XeCryptSha224Init Kernel ✔️
XeCryptAesCreateKeySchedule Kernel ✔️
XeCryptAesEncryptOne Kernel ✔️
XeCryptAesDecryptOne Kernel ✔️
XeCryptAesCbcEncrypt Kernel ✔️
XeCryptAesCbcDecrypt Kernel ✔️
XeCryptAesGcmInitialize Kernel
XeCryptAesGcmUpdate Kernel
XeCryptAesGcmFinalize Kernel
XeCryptEccGetCurveParameters Kernel ✔️ Weird function, returns an address to a uint32? Is there anything that uses this we can look at?
XeCryptEccEcdhGenerateKeypair Kernel
XeCryptEccEcdhExponentiate Kernel
XeCryptEccEcdsaGenerateSignature Kernel
XeCryptEccEcdsaVerifySignature Kernel

Extra: 2/8

These are mentioned in a header file available on pastebin, doesn't seem like kernel has them included though, need to see if any bootloaders or other OS files might include them (otherwise there's not really any way to tell how they're implemented...)

If nothing uses them I guess they aren't that important, but still worth mentioning for completeness sake.

Export Name Location Implemented Has Tests? Notes
XeCryptBnQwNeRsaPrvExpFromRoot Header Generates private exponent for input private key?
XeCryptBnQwBeSigDifference Header (+ Bootloaders/HV?) ✔️ Mostly same as SigVerify but "returns difference"?
XeCryptMemDiff 1BL ✔️ Used by SigDifference
XeCryptBnQwNeEcSigVerify Header Elliptic curve
XeCryptEmeOaepPack Header
XeCryptEmeOaepUnpack Header
XeCryptPkcs1ReverseBytes Header Related to the EmeOaep funcs above
XeCryptOmac1Compute Header

Xbox 360 controller authentication may be inlcuded in cheeklist ?