Line 1: |
Line 1: |
| The Nintendo Switch uses Tegra's Security Engine (SE) for handling cryptographic opearations at the system's lowest level. | | The Nintendo Switch uses Tegra's Security Engine (SE) for handling cryptographic opearations at the system's lowest level. |
| | | |
− | The SE driver is mapped to physical address 0x70012000 with a total size of 0x2000 bytes and exposes several registers for programming the Security Engine.
| + | = Registers = |
| + | Erista only has one SE driver which is mapped to physical address 0x70012000 with a total size of 0x2000 bytes. |
| + | |
| + | Mariko has two SE drivers which are mapped to physical addresses 0x70012000 (SE1) and 0x70412000 (SE2), each with a total size of 0x2000 bytes. |
| + | |
| + | == Erista == |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Name |
| + | ! Address |
| + | |- |
| + | | SE_SE_SECURITY |
| + | | 0x70012000 |
| + | |- |
| + | | SE_TZRAM_SECURITY |
| + | | 0x70012004 |
| + | |- |
| + | | SE_OPERATION |
| + | | 0x70012008 |
| + | |- |
| + | | SE_INT_ENABLE |
| + | | 0x7001200C |
| + | |- |
| + | | SE_INT_STATUS |
| + | | 0x70012010 |
| + | |- |
| + | | SE_CONFIG |
| + | | 0x70012014 |
| + | |- |
| + | | SE_IN_LL_ADDR |
| + | | 0x70012018 |
| + | |- |
| + | | SE_IN_CUR_BYTE_ADDR |
| + | | 0x7001201C |
| + | |- |
| + | | SE_IN_CUR_LL_ID |
| + | | 0x70012020 |
| + | |- |
| + | | SE_OUT_LL_ADDR |
| + | | 0x70012024 |
| + | |- |
| + | | SE_OUT_CUR_BYTE_ADDR |
| + | | 0x70012028 |
| + | |- |
| + | | SE_OUT_CUR_LL_ID |
| + | | 0x7001202C |
| + | |- |
| + | | SE_HASH_RESULT_0 |
| + | | 0x70012030 |
| + | |- |
| + | | SE_HASH_RESULT_1 |
| + | | 0x70012034 |
| + | |- |
| + | | SE_HASH_RESULT_2 |
| + | | 0x70012038 |
| + | |- |
| + | | SE_HASH_RESULT_3 |
| + | | 0x7001203C |
| + | |- |
| + | | SE_HASH_RESULT_4 |
| + | | 0x70012040 |
| + | |- |
| + | | SE_HASH_RESULT_5 |
| + | | 0x70012044 |
| + | |- |
| + | | SE_HASH_RESULT_6 |
| + | | 0x70012048 |
| + | |- |
| + | | SE_HASH_RESULT_7 |
| + | | 0x7001204C |
| + | |- |
| + | | SE_HASH_RESULT_8 |
| + | | 0x70012050 |
| + | |- |
| + | | SE_HASH_RESULT_9 |
| + | | 0x70012054 |
| + | |- |
| + | | SE_HASH_RESULT_10 |
| + | | 0x70012058 |
| + | |- |
| + | | SE_HASH_RESULT_11 |
| + | | 0x7001205C |
| + | |- |
| + | | SE_HASH_RESULT_12 |
| + | | 0x70012060 |
| + | |- |
| + | | SE_HASH_RESULT_13 |
| + | | 0x70012064 |
| + | |- |
| + | | SE_HASH_RESULT_14 |
| + | | 0x70012068 |
| + | |- |
| + | | SE_HASH_RESULT_15 |
| + | | 0x7001206C |
| + | |- |
| + | | SE_CTX_SAVE_CONFIG |
| + | | 0x70012070 |
| + | |- |
| + | | SE_SHA_CONFIG |
| + | | 0x70012200 |
| + | |- |
| + | | SE_SHA_MSG_LENGTH_0 |
| + | | 0x70012204 |
| + | |- |
| + | | SE_SHA_MSG_LENGTH_1 |
| + | | 0x70012208 |
| + | |- |
| + | | SE_SHA_MSG_LENGTH_2 |
| + | | 0x7001220C |
| + | |- |
| + | | SE_SHA_MSG_LENGTH_3 |
| + | | 0x70012210 |
| + | |- |
| + | | SE_SHA_MSG_LEFT_0 |
| + | | 0x70012214 |
| + | |- |
| + | | SE_SHA_MSG_LEFT_1 |
| + | | 0x70012218 |
| + | |- |
| + | | SE_SHA_MSG_LEFT_2 |
| + | | 0x7001221C |
| + | |- |
| + | | SE_SHA_MSG_LEFT_3 |
| + | | 0x70012220 |
| + | |- |
| + | | SE_CRYPTO_SECURITY_PERKEY |
| + | | 0x70012280 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_0 |
| + | | 0x70012284 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_1 |
| + | | 0x70012288 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_2 |
| + | | 0x7001228C |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_3 |
| + | | 0x70012290 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_4 |
| + | | 0x70012294 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_5 |
| + | | 0x70012298 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_6 |
| + | | 0x7001229C |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_7 |
| + | | 0x700122A0 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_8 |
| + | | 0x700122A4 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_9 |
| + | | 0x700122A8 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_10 |
| + | | 0x700122AC |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_11 |
| + | | 0x700122B0 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_12 |
| + | | 0x700122B4 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_13 |
| + | | 0x700122B8 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_14 |
| + | | 0x700122BC |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ACCESS_15 |
| + | | 0x700122C0 |
| + | |- |
| + | | SE_CRYPTO_CONFIG |
| + | | 0x70012304 |
| + | |- |
| + | | SE_CRYPTO_LINEAR_CTR_0 |
| + | | 0x70012308 |
| + | |- |
| + | | SE_CRYPTO_LINEAR_CTR_1 |
| + | | 0x7001230C |
| + | |- |
| + | | SE_CRYPTO_LINEAR_CTR_2 |
| + | | 0x70012310 |
| + | |- |
| + | | SE_CRYPTO_LINEAR_CTR_3 |
| + | | 0x70012314 |
| + | |- |
| + | | SE_CRYPTO_LAST_BLOCK |
| + | | 0x70012318 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_ADDR |
| + | | 0x7001231C |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_DATA |
| + | | 0x70012320 |
| + | |- |
| + | | SE_CRYPTO_KEYTABLE_DST |
| + | | 0x70012330 |
| + | |- |
| + | | SE_RNG_CONFIG |
| + | | 0x70012340 |
| + | |- |
| + | | SE_RNG_SRC_CONFIG |
| + | | 0x70012344 |
| + | |- |
| + | | SE_RNG_RESEED_INTERVAL |
| + | | 0x70012348 |
| + | |- |
| + | | SE_RSA_CONFIG |
| + | | 0x70012400 |
| + | |- |
| + | | SE_RSA_KEY_SIZE |
| + | | 0x70012404 |
| + | |- |
| + | | SE_RSA_EXP_SIZE |
| + | | 0x70012408 |
| + | |- |
| + | | SE_RSA_SECURITY_PERKEY |
| + | | 0x7001240C |
| + | |- |
| + | | SE_RSA_KEYTABLE_ACCESS_0 |
| + | | 0x70012410 |
| + | |- |
| + | | SE_RSA_KEYTABLE_ACCESS_1 |
| + | | 0x70012414 |
| + | |- |
| + | | SE_RSA_KEYTABLE_ADDR |
| + | | 0x70012420 |
| + | |- |
| + | | SE_RSA_KEYTABLE_DATA |
| + | | 0x70012424 |
| + | |- |
| + | | SE_RSA_OUTPUT_0 |
| + | | 0x70012428 |
| + | |- |
| + | | SE_RSA_OUTPUT_1 |
| + | | 0x7001242C |
| + | |- |
| + | | SE_RSA_OUTPUT_2 |
| + | | 0x70012430 |
| + | |- |
| + | | SE_RSA_OUTPUT_3 |
| + | | 0x70012434 |
| + | |- |
| + | | SE_RSA_OUTPUT_4 |
| + | | 0x70012438 |
| + | |- |
| + | | SE_RSA_OUTPUT_5 |
| + | | 0x7001243C |
| + | |- |
| + | | SE_RSA_OUTPUT_6 |
| + | | 0x70012440 |
| + | |- |
| + | | SE_RSA_OUTPUT_7 |
| + | | 0x70012444 |
| + | |- |
| + | | SE_RSA_OUTPUT_8 |
| + | | 0x70012448 |
| + | |- |
| + | | SE_RSA_OUTPUT_9 |
| + | | 0x7001244C |
| + | |- |
| + | | SE_RSA_OUTPUT_10 |
| + | | 0x70012450 |
| + | |- |
| + | | SE_RSA_OUTPUT_11 |
| + | | 0x70012454 |
| + | |- |
| + | | SE_RSA_OUTPUT_12 |
| + | | 0x70012458 |
| + | |- |
| + | | SE_RSA_OUTPUT_13 |
| + | | 0x7001245C |
| + | |- |
| + | | SE_RSA_OUTPUT_14 |
| + | | 0x70012460 |
| + | |- |
| + | | SE_RSA_OUTPUT_15 |
| + | | 0x70012464 |
| + | |- |
| + | | SE_RSA_OUTPUT_16 |
| + | | 0x70012468 |
| + | |- |
| + | | SE_RSA_OUTPUT_17 |
| + | | 0x7001246C |
| + | |- |
| + | | SE_RSA_OUTPUT_18 |
| + | | 0x70012470 |
| + | |- |
| + | | SE_RSA_OUTPUT_19 |
| + | | 0x70012474 |
| + | |- |
| + | | SE_RSA_OUTPUT_20 |
| + | | 0x70012478 |
| + | |- |
| + | | SE_RSA_OUTPUT_21 |
| + | | 0x7001247C |
| + | |- |
| + | | SE_RSA_OUTPUT_22 |
| + | | 0x70012480 |
| + | |- |
| + | | SE_RSA_OUTPUT_23 |
| + | | 0x70012484 |
| + | |- |
| + | | SE_RSA_OUTPUT_24 |
| + | | 0x70012488 |
| + | |- |
| + | | SE_RSA_OUTPUT_25 |
| + | | 0x7001248C |
| + | |- |
| + | | SE_RSA_OUTPUT_26 |
| + | | 0x70012490 |
| + | |- |
| + | | SE_RSA_OUTPUT_27 |
| + | | 0x70012494 |
| + | |- |
| + | | SE_RSA_OUTPUT_28 |
| + | | 0x70012498 |
| + | |- |
| + | | SE_RSA_OUTPUT_29 |
| + | | 0x7001249C |
| + | |- |
| + | | SE_RSA_OUTPUT_30 |
| + | | 0x700124A0 |
| + | |- |
| + | | SE_RSA_OUTPUT_31 |
| + | | 0x700124A4 |
| + | |- |
| + | | SE_RSA_OUTPUT_32 |
| + | | 0x700124A8 |
| + | |- |
| + | | SE_RSA_OUTPUT_33 |
| + | | 0x700124AC |
| + | |- |
| + | | SE_RSA_OUTPUT_34 |
| + | | 0x700124B0 |
| + | |- |
| + | | SE_RSA_OUTPUT_35 |
| + | | 0x700124B4 |
| + | |- |
| + | | SE_RSA_OUTPUT_36 |
| + | | 0x700124B8 |
| + | |- |
| + | | SE_RSA_OUTPUT_37 |
| + | | 0x700124BC |
| + | |- |
| + | | SE_RSA_OUTPUT_38 |
| + | | 0x700124C0 |
| + | |- |
| + | | SE_RSA_OUTPUT_39 |
| + | | 0x700124C4 |
| + | |- |
| + | | SE_RSA_OUTPUT_40 |
| + | | 0x700124C8 |
| + | |- |
| + | | SE_RSA_OUTPUT_41 |
| + | | 0x700124CC |
| + | |- |
| + | | SE_RSA_OUTPUT_42 |
| + | | 0x700124D0 |
| + | |- |
| + | | SE_RSA_OUTPUT_43 |
| + | | 0x700124D4 |
| + | |- |
| + | | SE_RSA_OUTPUT_44 |
| + | | 0x700124D8 |
| + | |- |
| + | | SE_RSA_OUTPUT_45 |
| + | | 0x700124DC |
| + | |- |
| + | | SE_RSA_OUTPUT_46 |
| + | | 0x700124E0 |
| + | |- |
| + | | SE_RSA_OUTPUT_47 |
| + | | 0x700124E4 |
| + | |- |
| + | | SE_RSA_OUTPUT_48 |
| + | | 0x700124E8 |
| + | |- |
| + | | SE_RSA_OUTPUT_49 |
| + | | 0x700124EC |
| + | |- |
| + | | SE_RSA_OUTPUT_50 |
| + | | 0x700124F0 |
| + | |- |
| + | | SE_RSA_OUTPUT_51 |
| + | | 0x700124F4 |
| + | |- |
| + | | SE_RSA_OUTPUT_52 |
| + | | 0x700124F8 |
| + | |- |
| + | | SE_RSA_OUTPUT_53 |
| + | | 0x700124FC |
| + | |- |
| + | | SE_RSA_OUTPUT_54 |
| + | | 0x70012500 |
| + | |- |
| + | | SE_RSA_OUTPUT_55 |
| + | | 0x70012504 |
| + | |- |
| + | | SE_RSA_OUTPUT_56 |
| + | | 0x70012508 |
| + | |- |
| + | | SE_RSA_OUTPUT_57 |
| + | | 0x7001250C |
| + | |- |
| + | | SE_RSA_OUTPUT_58 |
| + | | 0x70012510 |
| + | |- |
| + | | SE_RSA_OUTPUT_59 |
| + | | 0x70012514 |
| + | |- |
| + | | SE_RSA_OUTPUT_60 |
| + | | 0x70012518 |
| + | |- |
| + | | SE_RSA_OUTPUT_61 |
| + | | 0x7001251C |
| + | |- |
| + | | SE_RSA_OUTPUT_62 |
| + | | 0x70012520 |
| + | |- |
| + | | SE_RSA_OUTPUT_63 |
| + | | 0x70012524 |
| + | |- |
| + | | SE_STATUS |
| + | | 0x70012800 |
| + | |- |
| + | | SE_ERR_STATUS |
| + | | 0x70012804 |
| + | |- |
| + | | SE_MISC |
| + | | 0x70012808 |
| + | |- |
| + | | SE_SPARE |
| + | | 0x7001280C |
| + | |- |
| + | | SE_ENTROPY_DEBUG_COUNTER |
| + | | 0x70012810 |
| + | |} |
| | | |
− | = Registers = | + | == Mariko == |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 95: |
Line 537: |
| | SE_CTX_SAVE_CONFIG | | | SE_CTX_SAVE_CONFIG |
| | 0x70012070 | | | 0x70012070 |
| + | |- |
| + | | SE_CTX_SAVE_AUTO |
| + | | 0x70012074 |
| |- | | |- |
| | SE_SHA_CONFIG | | | SE_SHA_CONFIG |
Line 425: |
Line 870: |
| | SE_RSA_OUTPUT_63 | | | SE_RSA_OUTPUT_63 |
| | 0x70012524 | | | 0x70012524 |
| + | |- |
| + | | SE_TZRAM_OPERATION |
| + | | 0x70012540 |
| |- | | |- |
| | SE_STATUS | | | SE_STATUS |