Implementation Status
emoose opened this issue · 1 comments
emoose commented
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 | ❌ | ❌ |
UCTREK-Raymond commented
Xbox 360 controller authentication may be inlcuded in cheeklist ?