Line 5: |
Line 5: |
| ! Command Header | | ! Command Header |
| ! Available since system-version | | ! Available since system-version |
| + | ! Available from service-sessions |
| ! Description | | ! Description |
| |- | | |- |
| | 0x00010044 | | | 0x00010044 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:Initialize|Initialize]] | | | [[HTTPC:Initialize|Initialize]] |
| |- | | |- |
| | 0x00020082 | | | 0x00020082 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:CreateContext|CreateContext]] | | | [[HTTPC:CreateContext|CreateContext]] |
| |- | | |- |
| | 0x00030040 | | | 0x00030040 |
− | | | + | | [[1.0.0-0]] |
| + | | All |
| | [[HTTPC:CloseContext|CloseContext]] | | | [[HTTPC:CloseContext|CloseContext]] |
| |- | | |- |
| | 0x00040040 | | | 0x00040040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:CancelConnection|CancelConnection]] | | | [[HTTPC:CancelConnection|CancelConnection]] |
| |- | | |- |
| | 0x00050040 | | | 0x00050040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetRequestState|GetRequestState]] | | | [[HTTPC:GetRequestState|GetRequestState]] |
| |- | | |- |
| | 0x00060040 | | | 0x00060040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]] | | | [[HTTPC:GetDownloadSizeState|GetDownloadSizeState]] |
| |- | | |- |
| | 0x00070040 | | | 0x00070040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetRequestError|GetRequestError]] | | | [[HTTPC:GetRequestError|GetRequestError]] |
| |- | | |- |
| | 0x00080042 | | | 0x00080042 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]] | | | [[HTTPC:InitializeConnectionSession|InitializeConnectionSession]] |
| |- | | |- |
| | 0x00090040 | | | 0x00090040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:BeginRequest|BeginRequest]] | | | [[HTTPC:BeginRequest|BeginRequest]] |
| |- | | |- |
| | 0x000A0040 | | | 0x000A0040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:BeginRequestAsync|BeginRequestAsync]] | | | [[HTTPC:BeginRequestAsync|BeginRequestAsync]] |
| |- | | |- |
| | 0x000B0082 | | | 0x000B0082 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:ReceiveData|ReceiveData]] | | | [[HTTPC:ReceiveData|ReceiveData]] |
| |- | | |- |
| | 0x000C0102 | | | 0x000C0102 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:ReceiveDataTimeout|ReceiveDataTimeout]] | | | [[HTTPC:ReceiveDataTimeout|ReceiveDataTimeout]] |
| |- | | |- |
| | 0x000D0146 | | | 0x000D0146 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SetProxy|SetProxy]] | | | [[HTTPC:SetProxy|SetProxy]] |
| |- | | |- |
| | 0x000E0040 | | | 0x000E0040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SetProxyDefault|SetProxyDefault]] | | | [[HTTPC:SetProxyDefault|SetProxyDefault]] |
| |- | | |- |
| | 0x000F00C4 | | | 0x000F00C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SetBasicAuthorization|SetBasicAuthorization]] | | | [[HTTPC:SetBasicAuthorization|SetBasicAuthorization]] |
| |- | | |- |
| | 0x00100080 | | | 0x00100080 |
− | | | + | | [[1.0.0-0]] |
− | | SetSocketBufferSize | + | | Context-only |
| + | | [[HTTPC:SetSocketBufferSize|SetSocketBufferSize]] |
| |- | | |- |
| | 0x001100C4 | | | 0x001100C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:AddRequestHeader|AddRequestHeader]] | | | [[HTTPC:AddRequestHeader|AddRequestHeader]] |
| |- | | |- |
| | 0x001200C4 | | | 0x001200C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:AddPostDataAscii|AddPostDataAscii]] | | | [[HTTPC:AddPostDataAscii|AddPostDataAscii]] |
| |- | | |- |
| | 0x001300C4 | | | 0x001300C4 |
| + | | [[1.0.0-0]] |
| | | | | |
− | | AddPostDataBinary | + | | [[HTTPC:AddPostDataBinary|AddPostDataBinary]] |
| |- | | |- |
| | 0x00140082 | | | 0x00140082 |
| + | | [[1.0.0-0]] |
| | | | | |
− | | AddPostDataRaw | + | | [[HTTPC:AddPostDataRaw|AddPostDataRaw]] |
| |- | | |- |
| | 0x00150080 | | | 0x00150080 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SetPostDataType(u8 enum) | | | SetPostDataType(u8 enum) |
| |- | | |- |
| | 0x001600C4 | | | 0x001600C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SendPostDataAscii | | | SendPostDataAscii |
| |- | | |- |
| | 0x00170144 | | | 0x00170144 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SendPostDataAsciiTimeout | | | SendPostDataAsciiTimeout |
| |- | | |- |
| | 0x001800C4 | | | 0x001800C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SendPostDataBinary | | | SendPostDataBinary |
| |- | | |- |
| | 0x00190144 | | | 0x00190144 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SendPostDataBinaryTimeout | | | SendPostDataBinaryTimeout |
| |- | | |- |
| | 0x001A0082 | | | 0x001A0082 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SendPostDataRaw | | | SendPostDataRaw |
| |- | | |- |
| | 0x001B0102 | | | 0x001B0102 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SendPOSTDataTimeout|SendPOSTDataRawTimeout]] | | | [[HTTPC:SendPOSTDataTimeout|SendPOSTDataRawTimeout]] |
| |- | | |- |
| | 0x001C0080 | | | 0x001C0080 |
| + | | [[1.0.0-0]] |
| | | | | |
| | SetPostDataEncoding | | | SetPostDataEncoding |
| |- | | |- |
| | 0x001D0040 | | | 0x001D0040 |
| + | | [[1.0.0-0]] |
| | | | | |
− | | NotifyFinishSendPostData | + | | [[HTTPC:NotifyFinishSendPostData|NotifyFinishSendPostData]] |
| |- | | |- |
| | 0x001E00C4 | | | 0x001E00C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetResponseHeader|GetResponseHeader]] | | | [[HTTPC:GetResponseHeader|GetResponseHeader]] |
| |- | | |- |
| | 0x001F0144 | | | 0x001F0144 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetResponseHeaderTimeout|GetResponseHeaderTimeout]] | | | [[HTTPC:GetResponseHeaderTimeout|GetResponseHeaderTimeout]] |
| |- | | |- |
| | 0x00200082 | | | 0x00200082 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetResponseData|GetResponseData]] | | | [[HTTPC:GetResponseData|GetResponseData]] |
| |- | | |- |
| | 0x00210102 | | | 0x00210102 |
| + | | [[1.0.0-0]] |
| | | | | |
| | GetResponseDataTimeout | | | GetResponseDataTimeout |
| |- | | |- |
| | 0x00220040 | | | 0x00220040 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]] | | | [[HTTPC:GetResponseStatusCode|GetResponseStatusCode]] |
| |- | | |- |
| | 0x002300C0 | | | 0x002300C0 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:GetResponseStatusCodeTimeout|GetResponseStatusCodeTimeout]] | | | [[HTTPC:GetResponseStatusCodeTimeout|GetResponseStatusCodeTimeout]] |
| |- | | |- |
| | 0x00240082 | | | 0x00240082 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]] | | | [[HTTPC:AddTrustedRootCA|AddTrustedRootCA]] |
| |- | | |- |
| | 0x00250080 | | | 0x00250080 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:AddDefaultCert|AddDefaultCert]] | | | [[HTTPC:AddDefaultCert|AddDefaultCert]] |
| |- | | |- |
| | 0x00260080 | | | 0x00260080 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SelectRootCertChain|SelectRootCertChain]] | | | [[HTTPC:SelectRootCertChain|SelectRootCertChain]] |
| |- | | |- |
| | 0x002700C4 | | | 0x002700C4 |
| + | | [[1.0.0-0]] |
| | | | | |
| | [[HTTPC:SetClientCert|SetClientCert]] | | | [[HTTPC:SetClientCert|SetClientCert]] |
| |- | | |- |
| | 0x00280080 | | | 0x00280080 |
− | | | + | | [[1.0.0-0]] |
− | | Somehow related to [[HTTPC:SetClientCert|SetClientCert]]. | + | | Context-only |
| + | | [[HTTPC:SetClientCertDefault|SetClientCertDefault]] |
| |- | | |- |
| | 0x00290080 | | | 0x00290080 |
− | | | + | | [[1.0.0-0]] |
− | | | + | | Context-only |
| + | | [[HTTPC:SetClientCertContext|SetClientCertContext]] |
| |- | | |- |
| | 0x002A0040 | | | 0x002A0040 |
− | | | + | | [[1.0.0-0]] |
− | | GetSSLError? | + | | All |
| + | | (u32 contexthandle) GetSSLError? This loads a value from state, this doesn't seem to use any sslc command. |
| |- | | |- |
| | 0x002B0080 | | | 0x002B0080 |
− | | | + | | [[1.0.0-0]] |
| + | | Context-only |
| | [[HTTPC:SetSSLOpt|SetSSLOpt]] | | | [[HTTPC:SetSSLOpt|SetSSLOpt]] |
| |- | | |- |
| | 0x002C0080 | | | 0x002C0080 |
− | | | + | | [[1.0.0-0]] |
| + | | Context-only |
| | [[HTTPC:SetSSLClearOpt|SetSSLClearOpt]] | | | [[HTTPC:SetSSLClearOpt|SetSSLClearOpt]] |
| |- | | |- |
| | 0x002D0000 | | | 0x002D0000 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:CreateRootCertChain|CreateRootCertChain]] | | | [[HTTPC:CreateRootCertChain|CreateRootCertChain]] |
| |- | | |- |
| | 0x002E0040 | | | 0x002E0040 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:DestroyRootCertChain|DestroyRootCertChain]] | | | [[HTTPC:DestroyRootCertChain|DestroyRootCertChain]] |
| |- | | |- |
| | 0x002F0082 | | | 0x002F0082 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:RootCertChainAddCert|RootCertChainAddCert]] | | | [[HTTPC:RootCertChainAddCert|RootCertChainAddCert]] |
| |- | | |- |
| | 0x00300080 | | | 0x00300080 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:RootCertChainAddDefaultCert|RootCertChainAddDefaultCert]] | | | [[HTTPC:RootCertChainAddDefaultCert|RootCertChainAddDefaultCert]] |
| |- | | |- |
| | 0x00310080 | | | 0x00310080 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | [[HTTPC:RootCertChainRemoveCert|RootCertChainRemoveCert]] | | | [[HTTPC:RootCertChainRemoveCert|RootCertChainRemoveCert]] |
| |- | | |- |
| | 0x00320084 | | | 0x00320084 |
− | | | + | | [[1.0.0-0]] |
− | | | + | | Main-only |
| + | | [[HTTPC:OpenClientCertContext|OpenClientCertContext]] |
| |- | | |- |
| | 0x00330040 | | | 0x00330040 |
− | | | + | | [[1.0.0-0]] |
− | | | + | | Main-only |
| + | | [[HTTPC:OpenDefaultClientCertContext|OpenDefaultClientCertContext]] |
| |- | | |- |
| | 0x00340040 | | | 0x00340040 |
− | | | + | | [[1.0.0-0]] |
− | | | + | | Main-only |
| + | | [[HTTPC:CloseClientCertContext|CloseClientCertContext]] |
| |- | | |- |
| | 0x00350186 | | | 0x00350186 |
− | | | + | | [[1.0.0-0]] |
| + | | Main-only |
| | SetDefaultProxy | | | SetDefaultProxy |
| |- | | |- |
| | 0x00360000 | | | 0x00360000 |
| + | | [[1.0.0-0]] |
| | | | | |
| | ClearDNSCache | | | ClearDNSCache |
| |- | | |- |
| | 0x00370080 | | | 0x00370080 |
| + | | [[2.0.0-2|2.0.0-X]] |
| | | | | |
| | SetKeepAlive (bool) | | | SetKeepAlive (bool) |
| |- | | |- |
| | 0x003800C0 | | | 0x003800C0 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[3.0.0-5|3.0.0-X]]. |
| + | | |
| | SetPostDataTypeSize (u8 enum, u32 size) (similar to SetPostDataType) | | | SetPostDataTypeSize (u8 enum, u32 size) (similar to SetPostDataType) |
| |- | | |- |
| | 0x00390000 | | | 0x00390000 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[3.0.0-5|3.0.0-X]]. |
| + | | |
| | Finalize | | | Finalize |
| |- | | |- |
− | | 0x003A.... | + | | 0x003A0080 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[8.0.0-18|8.0.0-X]] |
− | | | + | | |
| + | |SetKeepAlive? |
| |- | | |- |
| | 0x003B0082 | | | 0x003B0082 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |SetCrl |
| |- | | |- |
− | | 0x003C.... | + | | 0x003C0080 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |SetInternalCrl |
| |- | | |- |
− | | 0x003D.... | + | | 0x003D0080 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |SetCrlStore |
| |- | | |- |
− | | 0x003E.... | + | | 0x003E0000 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |CreateCrlStore |
| |- | | |- |
− | | 0x003F.... | + | | 0x003F0040 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |DestroyCrlStore |
| |- | | |- |
| | 0x00400082 | | | 0x00400082 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |AddCrlToCrlStore |
| |- | | |- |
− | | 0x0041.... | + | | 0x00410080 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |AddInternalCrl |
| |- | | |- |
− | | 0x0042.... | + | | 0x00420040 |
− | | Unknown, >[[2.0.0-2|2.0.0-X]]. | + | | [[9.0.0-20|9.0.0-X]] |
− | | | + | | |
| + | |RemoveCrlFromCrlStore |
| |} | | |} |
| | | |
Line 275: |
Line 342: |
| Initially a HTTP context will not trust ''any'' root-CAs at all. Which root-CAs to trust must be ''explicitly'' specified via the add-root-CA service command(s). | | Initially a HTTP context will not trust ''any'' root-CAs at all. Which root-CAs to trust must be ''explicitly'' specified via the add-root-CA service command(s). |
| | | |
− | RootCertChains can be used to easily select a particular chain of trusted root-CAs with multiple HTTP contexts, without having to re-send each of the root-CA commands for each HTTP context. The maximum number of RootCertChains that can exist for a HTTPC service session handle, is only 1. | + | RootCertChains can be used to easily select a particular chain of trusted root-CAs with multiple HTTP contexts, without having to re-send each of the root-CA commands for each HTTP context. The maximum number of RootCertChains that can exist for an user-process, is only 2. |
| + | |
| + | When using the context-specific RootCA commands such as [[HTTPC:AddTrustedRootCA]] where [[HTTPC:SelectRootCertChain]] was already used, the cert will just be added to the selected RootCertChain. |
| + | |
| + | =ClientCert Contexts= |
| + | These are basically the same as RootCertChains except for TLS client cert+privk. The maximum number of ClientCert-contexts that can exist for an user-process, is only 2. |
| | | |
| = Error codes = | | = Error codes = |
Line 284: |
Line 356: |
| |- | | |- |
| | 0xd8a0a03c | | | 0xd8a0a03c |
− | | The HTTPS server's TLS certificate is signed by an unknown/not-trusted root CA. | + | | Failed to verify the HTTPS server's TLS certificate. |
| |- | | |- |
| | 0xd8a0a046 | | | 0xd8a0a046 |
− | | This is returned by [[HTTPC:Initialize]] when no network connection is available(or at least when wifi is disabled via Home Menu on New3DS). | + | | This is returned by [[HTTPC:Initialize]] when no network connection is available(or at least when wifi is disabled via Home Menu on New3DS). Seems to be caused by DNS lookup failure([[SOCU:getaddrinfo]] returning an error). |
| + | |- |
| + | | 0xd8a0a049 |
| + | | Seems to be caused by a socket connect() timeout error? |
| |- | | |- |
| | 0xd8a0a066 | | | 0xd8a0a066 |
| | This indicates that the context handle is wrong. | | | This indicates that the context handle is wrong. |
| + | |- |
| + | | 0xd820a069 |
| + | | This is returned when the call times out (with any call with a timeout arg) |
| |} | | |} |