Changes

Jump to navigation Jump to search
no edit summary
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

Navigation menu