Line 125:
Line 125:
| 11 || [3.0.0+] [[#RemoveCrl]]
| 11 || [3.0.0+] [[#RemoveCrl]]
|-
|-
−
| 12 || [16.0.0+] ImportClientCertKeyPki
+
| 12 || [16.0.0+] [[#ImportClientCertKeyPki]]
|-
|-
−
| 13 || [16.0.0+] GeneratePrivateKeyAndCert
+
| 13 || [16.0.0+] [[#GeneratePrivateKeyAndCert]]
|}
|}
Line 189:
Line 189:
=== RemoveCrl ===
=== RemoveCrl ===
Takes an input u64 Id, no output.
Takes an input u64 Id, no output.
+
+
=== ImportClientCertKeyPki ===
+
Takes two type-0x5 input buffers and a [[#CertificateFormat]], returns an output u64 Id.
+
+
=== GeneratePrivateKeyAndCert ===
+
Takes two type-0x6 output buffers, a type-0x5 input buffer containing a [[#KeyAndCertParams]], and an u32, returns two output u32s.
+
+
Official sw passes hard-coded value 1 for the u32.
=== ISslConnection ===
=== ISslConnection ===
Line 518:
Line 526:
| 11 || [[#RemoveCrl]]
| 11 || [[#RemoveCrl]]
|-
|-
−
| 12 || [16.0.0+] ImportClientCertKeyPki
+
| 12 || [16.0.0+] [[#ImportClientCertKeyPki]]
|-
|-
−
| 13 || [16.0.0+] GeneratePrivateKeyAndCert
+
| 13 || [16.0.0+] [[#GeneratePrivateKeyAndCert]]
|-
|-
| 100 || [[#CreateConnectionForSystem]]
| 100 || [[#CreateConnectionForSystem]]
Line 962:
Line 970:
|-
|-
| 0x40 || 0x8 || Protocol version string
| 0x40 || 0x8 || Protocol version string
+
|}
+
+
= KeyAndCertParams =
+
This is "nn::ssl::ContextPrivate::KeyAndCertParams". This is a 0x58-byte struct.
+
+
This was added with [16.0.0+].
+
+
The constructor for this in official sw just clears this struct.
+
+
{| class="wikitable" border="1"
+
|-
+
! Offset
+
! Size
+
! Description
+
|-
+
| 0x0 || 0x4 ||
+
|-
+
| 0x4 || 0x4 || The official wrapper code for [[#GeneratePrivateKeyAndCert]] throws an error if this is value 0.
+
|-
+
| 0x8 || 0x8 || The official wrapper code for [[#GeneratePrivateKeyAndCert]] throws an error if this is value 0.
+
|-
+
| 0x10 || 0x40 || NUL-terminated string.
+
|-
+
| 0x50 || 0x4 || The official wrapper code for [[#GeneratePrivateKeyAndCert]] throws an error if this is value 0 or >0x3F. It also verifies that this matches the output from: <code>strnlen(struct+0x10, 0x40)</code>.
|}
|}