SSL services: Difference between revisions

No edit summary
No edit summary
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]]