Line 1:
Line 1:
−
=ssl=
+
= ssl =
+
This is "nn::ssl::sf::ISslService".
−
=Client cert+privk=
+
{| class="wikitable" border="1"
+
|-
+
! Cmd || Name
+
|-
+
| 0 || CreateContext
+
|-
+
| 1 || GetContextCount
+
|-
+
| 2 || GetCertificates
+
|-
+
| 3 || GetCertificateBufSize
+
|-
+
| 4 || DebugIoctl
+
|-
+
| 5 || SetInterfaceVersion
+
|}
+
+
== ISslContext ==
+
{| class="wikitable" border="1"
+
|-
+
! Cmd || Name
+
|-
+
| 0 || SetOption
+
|-
+
| 1 || GetOption
+
|-
+
| 2 || CreateConnection
+
|-
+
| 3 || GetConnectionCount
+
|-
+
| 4 || ImportServerPki
+
|-
+
| 5 || ImportClientPki
+
|-
+
| 6 || RemoveServerPki
+
|-
+
| 7 || RemoveClientPki
+
|-
+
| 8 || RegisterInternalPki
+
|-
+
| 9 || AddPolicyOid
+
|-
+
| 10 || ImportCrl
+
|-
+
| 11 || RemoveCrl
+
|}
+
+
=== ISslConnection ===
+
{| class="wikitable" border="1"
+
|-
+
! Cmd || Name
+
|-
+
| 0 || SetSocketDescriptor
+
|-
+
| 1 || SetHostName
+
|-
+
| 2 || SetVerifyOption
+
|-
+
| 3 || SetIoMode
+
|-
+
| 4 || GetSocketDescriptor
+
|-
+
| 5 || GetHostName
+
|-
+
| 6 || GetVerifyOption
+
|-
+
| 7 || GetIoMode
+
|-
+
| 8 || DoHandshake
+
|-
+
| 9 || DoHandshakeGetServerCert
+
|-
+
| 10 || Read
+
|-
+
| 11 || Write
+
|-
+
| 12 || Pending
+
|-
+
| 13 || Peek
+
|-
+
| 14 || Poll
+
|-
+
| 15 || GetVerifyCertError
+
|-
+
| 16 || GetNeededServerCertBufferSize
+
|-
+
| 17 || SetSessionCacheMode
+
|-
+
| 18 || GetSessionCacheMode
+
|-
+
| 19 || FlushSessionCache
+
|-
+
| 20 || SetRenegotiationMode
+
|-
+
| 21 || GetRenegotiationMode
+
|-
+
| 22 || SetOption
+
|-
+
| 23 || GetOption
+
|-
+
| 24 || GetVerifyCertErrors
+
|}
+
+
= Client cert+privk =
SSL-sysmodule uses [[Settings_services|set:cal]] [[Settings_services#GetSslKey|GetSslKey]] and [[Settings_services#GetSslCert|GetSslCert]]. The rest of this section documents handling for the former, which can be decrypted with [[SPL_services|SPL]].
SSL-sysmodule uses [[Settings_services|set:cal]] [[Settings_services#GetSslKey|GetSslKey]] and [[Settings_services#GetSslCert|GetSslCert]]. The rest of this section documents handling for the former, which can be decrypted with [[SPL_services|SPL]].
Line 9:
Line 113:
* 0x100+0x10: If the u32 actual_size is less than (u32)-0x11, and the last 0x10-bytes of the actual-data are all-zero, the data is copied to the output as raw plaintext. If a non-zero byte is found, it will continue with [[SPL_services|SPL]] usage, skipping over the SPL block for the devunit flag. In this case, key=key0 and the flag passed to SPL later is set to 0.
* 0x100+0x10: If the u32 actual_size is less than (u32)-0x11, and the last 0x10-bytes of the actual-data are all-zero, the data is copied to the output as raw plaintext. If a non-zero byte is found, it will continue with [[SPL_services|SPL]] usage, skipping over the SPL block for the devunit flag. In this case, key=key0 and the flag passed to SPL later is set to 0.
* 0x100+0x30: Size must match this if it's not the above, otherwise error 0xC81A is returned. The flag passed to SPL later is set to 1 in this case. Runs the devunit-flag-block: uses [[SPL_services#SPL#GetDevunitFlag]]. key = key1 when out_flag!=0, key2 otherwise.
* 0x100+0x30: Size must match this if it's not the above, otherwise error 0xC81A is returned. The flag passed to SPL later is set to 1 in this case. Runs the devunit-flag-block: uses [[SPL_services#SPL#GetDevunitFlag]]. key = key1 when out_flag!=0, key2 otherwise.
+
+
[[Category:Services]]