diff --git a/CMakeLists.txt b/CMakeLists.txt index 77d547e..3337468 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,278 +10,343 @@ set_property(CACHE NVN_API PROPERTY STRINGS "C" "CPP") set(NN_SOURCES "") -if(NN_GFX_TARGET) - # gfx_NvnHelper.cpp includes the C impl - if(NVN_API STREQUAL "C") - unset(NVN_API CACHE) - endif() +if (NN_GFX_TARGET) + # gfx_NvnHelper.cpp includes the C impl + if (NVN_API STREQUAL "C") + unset(NVN_API CACHE) + endif () - set(NN_GFX_SOURCES - include/nn/gfx/detail/gfx_DataContainer.h - include/nn/gfx/detail/gfx_Fwd.h - include/nn/gfx/detail/gfx_Misc.h - include/nn/gfx/detail/gfx_RequiredMemory.h - include/nn/gfx/detail/gfx_ResShaderImpl.h - include/nn/gfx/detail/gfx_RootSignature-api.common.h - include/nn/gfx/util/gfx_PrimitiveShape.h + set(NN_GFX_SOURCES + include/nn/gfx/detail/gfx_DataContainer.h + include/nn/gfx/detail/gfx_Fwd.h + include/nn/gfx/detail/gfx_Misc.h + include/nn/gfx/detail/gfx_RequiredMemory.h + include/nn/gfx/detail/gfx_ResShaderImpl.h + include/nn/gfx/detail/gfx_RootSignature-api.common.h + include/nn/gfx/util/gfx_PrimitiveShape.h - include/nn/gfx/gfx_Buffer.h - include/nn/gfx/gfx_BufferInfo.h - include/nn/gfx/gfx_BufferInfoData.h - include/nn/gfx/gfx_CommandBuffer.h - include/nn/gfx/gfx_CommandBufferInfo.h - include/nn/gfx/gfx_CommandBufferInfoData.h - include/nn/gfx/gfx_Common.h - include/nn/gfx/gfx_DescriptorPool.h - include/nn/gfx/gfx_DescriptorPoolInfo.h - include/nn/gfx/gfx_DescriptorPoolInfoData.h - include/nn/gfx/gfx_DescriptorSlot.h - include/nn/gfx/gfx_Device.h - include/nn/gfx/gfx_DeviceInfo.h - include/nn/gfx/gfx_DeviceInfoData.h - include/nn/gfx/gfx_Enum.h - include/nn/gfx/gfx_GpuAddress.h - include/nn/gfx/gfx_MemoryPool.h - include/nn/gfx/gfx_MemoryPoolInfo.h - include/nn/gfx/gfx_MemoryPoolInfoData.h - include/nn/gfx/gfx_Queue.h - include/nn/gfx/gfx_QueueInfo.h - include/nn/gfx/gfx_QueueInfoData.h - include/nn/gfx/gfx_ResShader.h - include/nn/gfx/gfx_ResShaderData.h - include/nn/gfx/gfx_ResTexture.h - include/nn/gfx/gfx_ResTextureData.h - include/nn/gfx/gfx_ResUserData.h - include/nn/gfx/gfx_ResUserDataData.h - include/nn/gfx/gfx_RootSignatureData-api.common.h - include/nn/gfx/gfx_RootSignatureInfo.h - include/nn/gfx/gfx_RootSignatureInfoData.h - include/nn/gfx/gfx_Sampler.h - include/nn/gfx/gfx_SamplerInfo.h - include/nn/gfx/gfx_SamplerInfoData.h - include/nn/gfx/gfx_Shader.h - include/nn/gfx/gfx_ShaderInfo.h - include/nn/gfx/gfx_ShaderInfoData.h - include/nn/gfx/gfx_State.h - include/nn/gfx/gfx_StateInfo.h - include/nn/gfx/gfx_StateInfoData.h - include/nn/gfx/gfx_SwapChain.h - include/nn/gfx/gfx_SwapChainInfo.h - include/nn/gfx/gfx_SwapChainInfoData.h - include/nn/gfx/gfx_Sync.h - include/nn/gfx/gfx_SyncInfo.h - include/nn/gfx/gfx_SyncInfoData.h - include/nn/gfx/gfx_Texture.h - include/nn/gfx/gfx_TextureInfo.h - include/nn/gfx/gfx_TextureInfoData.h - include/nn/gfx/gfx_Types.h - include/nn/gfx/gfx_VariationBase.h - - src/NintendoSDK/gfx/detail/gfx_CommonHelper.cpp - src/NintendoSDK/gfx/detail/gfx_CommonHelper.h - src/NintendoSDK/gfx/util/gfx_PrimitiveShape.cpp + include/nn/gfx/gfx_Buffer.h + include/nn/gfx/gfx_BufferInfo.h + include/nn/gfx/gfx_BufferInfoData.h + include/nn/gfx/gfx_CommandBuffer.h + include/nn/gfx/gfx_CommandBufferInfo.h + include/nn/gfx/gfx_CommandBufferInfoData.h + include/nn/gfx/gfx_Common.h + include/nn/gfx/gfx_DescriptorPool.h + include/nn/gfx/gfx_DescriptorPoolInfo.h + include/nn/gfx/gfx_DescriptorPoolInfoData.h + include/nn/gfx/gfx_DescriptorSlot.h + include/nn/gfx/gfx_Device.h + include/nn/gfx/gfx_DeviceInfo.h + include/nn/gfx/gfx_DeviceInfoData.h + include/nn/gfx/gfx_Enum.h + include/nn/gfx/gfx_GpuAddress.h + include/nn/gfx/gfx_MemoryPool.h + include/nn/gfx/gfx_MemoryPoolInfo.h + include/nn/gfx/gfx_MemoryPoolInfoData.h + include/nn/gfx/gfx_Queue.h + include/nn/gfx/gfx_QueueInfo.h + include/nn/gfx/gfx_QueueInfoData.h + include/nn/gfx/gfx_ResShader.h + include/nn/gfx/gfx_ResShaderData.h + include/nn/gfx/gfx_ResTexture.h + include/nn/gfx/gfx_ResTextureData.h + include/nn/gfx/gfx_ResUserData.h + include/nn/gfx/gfx_ResUserDataData.h + include/nn/gfx/gfx_RootSignatureData-api.common.h + include/nn/gfx/gfx_RootSignatureInfo.h + include/nn/gfx/gfx_RootSignatureInfoData.h + include/nn/gfx/gfx_Sampler.h + include/nn/gfx/gfx_SamplerInfo.h + include/nn/gfx/gfx_SamplerInfoData.h + include/nn/gfx/gfx_Shader.h + include/nn/gfx/gfx_ShaderInfo.h + include/nn/gfx/gfx_ShaderInfoData.h + include/nn/gfx/gfx_State.h + include/nn/gfx/gfx_StateInfo.h + include/nn/gfx/gfx_StateInfoData.h + include/nn/gfx/gfx_SwapChain.h + include/nn/gfx/gfx_SwapChainInfo.h + include/nn/gfx/gfx_SwapChainInfoData.h + include/nn/gfx/gfx_Sync.h + include/nn/gfx/gfx_SyncInfo.h + include/nn/gfx/gfx_SyncInfoData.h + include/nn/gfx/gfx_Texture.h + include/nn/gfx/gfx_TextureInfo.h + include/nn/gfx/gfx_TextureInfoData.h + include/nn/gfx/gfx_Types.h + include/nn/gfx/gfx_VariationBase.h - src/NintendoSDK/gfx/gfx_BufferInfo.cpp - src/NintendoSDK/gfx/gfx_CommandBufferInfo.cpp - src/NintendoSDK/gfx/gfx_DescriptorPoolInfo.cpp - src/NintendoSDK/gfx/gfx_DeviceInfo.cpp - src/NintendoSDK/gfx/gfx_MemoryPoolInfo.cpp - src/NintendoSDK/gfx/gfx_QueueInfo.cpp - src/NintendoSDK/gfx/gfx_ResShader.cpp - src/NintendoSDK/gfx/gfx_ResTexture.cpp - src/NintendoSDK/gfx/gfx_SamplerInfo.cpp - src/NintendoSDK/gfx/gfx_ShaderInfo.cpp - src/NintendoSDK/gfx/gfx_StateInfo.cpp - src/NintendoSDK/gfx/gfx_SwapChainInfo.cpp - src/NintendoSDK/gfx/gfx_SyncInfo.cpp - src/NintendoSDK/gfx/gfx_TextureInfo.cpp - ) + src/NintendoSDK/gfx/detail/gfx_CommonHelper.cpp + src/NintendoSDK/gfx/detail/gfx_CommonHelper.h + src/NintendoSDK/gfx/util/gfx_PrimitiveShape.cpp - if(NN_GFX_TARGET STREQUAL "NVN") - list(APPEND NN_GFX_SOURCES - include/nn/gfx/detail/gfx_Buffer-api.nvn.8.h - include/nn/gfx/detail/gfx_CommandBuffer-api.nvn.8.h - include/nn/gfx/detail/gfx_Common-api.nvn.h - include/nn/gfx/detail/gfx_DescriptorPool-api.nvn.8.h - include/nn/gfx/detail/gfx_Device-api.nvn.8.h - include/nn/gfx/detail/gfx_MemoryPool-api.nvn.8.h - include/nn/gfx/detail/gfx_Pipeline-api.nvn.8.h - include/nn/gfx/detail/gfx_Queue-api.nvn.8.h - include/nn/gfx/detail/gfx_RootSignature-api.nvn.8.h - include/nn/gfx/detail/gfx_Sampler-api.nvn.8.h - include/nn/gfx/detail/gfx_Shader-api.nvn.8.h - include/nn/gfx/detail/gfx_State-api.nvn.8.h - include/nn/gfx/detail/gfx_SwapChain-api.nvn.8.h - include/nn/gfx/detail/gfx_Sync-api.nvn.8.h - include/nn/gfx/detail/gfx_Texture-api.nvn.8.h + src/NintendoSDK/gfx/gfx_BufferInfo.cpp + src/NintendoSDK/gfx/gfx_CommandBufferInfo.cpp + src/NintendoSDK/gfx/gfx_DescriptorPoolInfo.cpp + src/NintendoSDK/gfx/gfx_DeviceInfo.cpp + src/NintendoSDK/gfx/gfx_MemoryPoolInfo.cpp + src/NintendoSDK/gfx/gfx_QueueInfo.cpp + src/NintendoSDK/gfx/gfx_ResShader.cpp + src/NintendoSDK/gfx/gfx_ResTexture.cpp + src/NintendoSDK/gfx/gfx_SamplerInfo.cpp + src/NintendoSDK/gfx/gfx_ShaderInfo.cpp + src/NintendoSDK/gfx/gfx_StateInfo.cpp + src/NintendoSDK/gfx/gfx_SwapChainInfo.cpp + src/NintendoSDK/gfx/gfx_SyncInfo.cpp + src/NintendoSDK/gfx/gfx_TextureInfo.cpp + ) - include/nn/gfx/gfx_BufferData-api.nvn.8.h - include/nn/gfx/gfx_CommandBufferData-api.nvn.8.h - include/nn/gfx/gfx_DescriptorPoolData-api.nvn.8.h - include/nn/gfx/gfx_DeviceData-api.nvn.8.h - include/nn/gfx/gfx_Interoperation-api.nvn.8.h - include/nn/gfx/gfx_MemoryPoolData-api.nvn.8.h - include/nn/gfx/gfx_PipelineData-api.nvn.8.h - include/nn/gfx/gfx_QueueData-api.nvn.8.h - include/nn/gfx/gfx_ResShaderData-api.nvn.h - include/nn/gfx/gfx_SamplerData-api.nvn.8.h - include/nn/gfx/gfx_ShaderData-api.nvn.8.h - include/nn/gfx/gfx_StateData-api.nvn.8.h - include/nn/gfx/gfx_SwapChainData-api.nvn.8.h - include/nn/gfx/gfx_SyncData-api.nvn.8.h - include/nn/gfx/gfx_TextureData-api.nvn.8.h + if (NN_GFX_TARGET STREQUAL "NVN") + list(APPEND NN_GFX_SOURCES + include/nn/gfx/detail/gfx_Buffer-api.nvn.8.h + include/nn/gfx/detail/gfx_CommandBuffer-api.nvn.8.h + include/nn/gfx/detail/gfx_Common-api.nvn.h + include/nn/gfx/detail/gfx_DescriptorPool-api.nvn.8.h + include/nn/gfx/detail/gfx_Device-api.nvn.8.h + include/nn/gfx/detail/gfx_MemoryPool-api.nvn.8.h + include/nn/gfx/detail/gfx_Pipeline-api.nvn.8.h + include/nn/gfx/detail/gfx_Queue-api.nvn.8.h + include/nn/gfx/detail/gfx_RootSignature-api.nvn.8.h + include/nn/gfx/detail/gfx_Sampler-api.nvn.8.h + include/nn/gfx/detail/gfx_Shader-api.nvn.8.h + include/nn/gfx/detail/gfx_State-api.nvn.8.h + include/nn/gfx/detail/gfx_SwapChain-api.nvn.8.h + include/nn/gfx/detail/gfx_Sync-api.nvn.8.h + include/nn/gfx/detail/gfx_Texture-api.nvn.8.h - src/NintendoSDK/gfx/detail/gfx_Buffer-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_CommandBuffer-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_DescriptorPool-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_Device-api.nvn.8-os.horizon.cpp - src/NintendoSDK/gfx/detail/gfx_GlslcFunction.cpp - src/NintendoSDK/gfx/detail/gfx_MemoryPool-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_NvnHelper-os.horizon.cpp - src/NintendoSDK/gfx/detail/gfx_NvnHelper.cpp - src/NintendoSDK/gfx/detail/gfx_NvnHelper.h - src/NintendoSDK/gfx/detail/gfx_ResShader-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_Sampler-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_Shader-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_State-api.nvn.8.cpp - src/NintendoSDK/gfx/detail/gfx_Texture-api.nvn.8.cpp + include/nn/gfx/gfx_BufferData-api.nvn.8.h + include/nn/gfx/gfx_CommandBufferData-api.nvn.8.h + include/nn/gfx/gfx_DescriptorPoolData-api.nvn.8.h + include/nn/gfx/gfx_DeviceData-api.nvn.8.h + include/nn/gfx/gfx_Interoperation-api.nvn.8.h + include/nn/gfx/gfx_MemoryPoolData-api.nvn.8.h + include/nn/gfx/gfx_PipelineData-api.nvn.8.h + include/nn/gfx/gfx_QueueData-api.nvn.8.h + include/nn/gfx/gfx_ResShaderData-api.nvn.h + include/nn/gfx/gfx_SamplerData-api.nvn.8.h + include/nn/gfx/gfx_ShaderData-api.nvn.8.h + include/nn/gfx/gfx_StateData-api.nvn.8.h + include/nn/gfx/gfx_SwapChainData-api.nvn.8.h + include/nn/gfx/gfx_SyncData-api.nvn.8.h + include/nn/gfx/gfx_TextureData-api.nvn.8.h - src/NintendoSDK/gfx/util/gfx_ObjectDebugLabel-api.nvn.8.cpp - src/NintendoSDK/gfx/gfx_Interoperation-api.nvn.cpp - ) - endif() + src/NintendoSDK/gfx/detail/gfx_Buffer-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_CommandBuffer-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_DescriptorPool-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_Device-api.nvn.8-os.horizon.cpp + src/NintendoSDK/gfx/detail/gfx_GlslcFunction.cpp + src/NintendoSDK/gfx/detail/gfx_MemoryPool-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_NvnHelper-os.horizon.cpp + src/NintendoSDK/gfx/detail/gfx_NvnHelper.cpp + src/NintendoSDK/gfx/detail/gfx_NvnHelper.h + src/NintendoSDK/gfx/detail/gfx_ResShader-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_Sampler-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_Shader-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_State-api.nvn.8.cpp + src/NintendoSDK/gfx/detail/gfx_Texture-api.nvn.8.cpp - list(APPEND NN_SOURCES ${NN_GFX_SOURCES}) -endif() + src/NintendoSDK/gfx/util/gfx_ObjectDebugLabel-api.nvn.8.cpp + src/NintendoSDK/gfx/gfx_Interoperation-api.nvn.cpp + ) + endif () + + list(APPEND NN_SOURCES ${NN_GFX_SOURCES}) +endif () add_library(NintendoSDK OBJECT - ${NN_SOURCES} + ${NN_SOURCES} + + include/nn/account.h + include/nn/am.h + include/nn/aoc.h + include/nn/applet.h + include/nn/atk.h + include/nn/atk/AuxBus.h + include/nn/atk/detail/AdvancedWaveSoundRuntime.h + include/nn/atk/detail/BasicSound.h + include/nn/atk/detail/SequenceSoundRuntime.h + include/nn/atk/detail/SoundArchiveManager.h + include/nn/atk/detail/StreamSoundRuntime.h + include/nn/atk/detail/WaveSoundRuntime.h + include/nn/atk/SoundArchivePlayer.h + include/nn/atk/SoundDataManager.h + include/nn/atk/SoundPlayer.h + include/nn/audio.h + include/nn/bcat.h + include/nn/crypto.h + include/nn/diag.h + include/nn/err.h + include/nn/font/font_Util.h + include/nn/friends.h + include/nn/fs.h + include/nn/fs/fs_bcat.h + include/nn/fs/fs_directories.h + include/nn/fs/fs_files.h + include/nn/fs/fs_mount.h + include/nn/fs/fs_rom.h + include/nn/fs/fs_save.h + include/nn/fs/fs_types.h + include/nn/g3d/BindFuncTable.h + include/nn/g3d/ModelObj.h + include/nn/g3d/ResFile.h + include/nn/g3d/ResFogAnim.h + include/nn/g3d/ResLightAnim.h + include/nn/g3d/ResMaterial.h + include/nn/g3d/ResMaterialAnim.h + include/nn/g3d/ResModel.h + include/nn/g3d/ResSceneAnim.h + include/nn/g3d/ResShapeAnim.h + include/nn/g3d/ResSkeletalAnim.h + include/nn/g3d/ResSkeleton.h + include/nn/g3d/SkeletonObj.h + include/nn/g3d/World.h + include/nn/hid.h + include/nn/image.h + include/nn/init.h + include/nn/irs.h + include/nn/irs/ClusteringData.h + include/nn/irs/ClusteringProcessorConfig.h + include/nn/irs/ClusteringProcessorState.h + include/nn/irs/DpdProcessorConfig.h + include/nn/irs/DpdProcessorPointingState.h + include/nn/irs/DpdProcessorState.h + include/nn/irs/HandAnalysisConfig.h + include/nn/irs/HandAnalysisMode.h + include/nn/irs/ImageTransferProcessorConfig.h + include/nn/irs/ImageTransferProcessorFormat.h + include/nn/irs/ImageTransferProcessorState.h + include/nn/irs/MomentProcessorConfig.h + include/nn/irs/MomentProcessorState.h + include/nn/irs/MomentStatistic.h + include/nn/irs/Rect.h + include/nn/irs/sys.h + include/nn/irs/TeraPluginProcessorConfig.h + include/nn/irs/TeraPluginProcessorState.h + include/nn/mem.h + include/nn/nfp.h + include/nn/nfp/nfp.h + include/nn/nfp/nfp_types.h + include/nn/nifm.h + include/nn/nn.h + include/nn/nn_BitTypes.h + include/nn/nnmusl.hpp + include/nn/oe.h + include/nn/os.h + include/nn/os/detail/os_InternalConditionVariable.h + include/nn/os/detail/os_InternalConditionVariable-os.horizon.h + include/nn/os/detail/os_InternalCriticalSection.h + include/nn/os/detail/os_InternalCriticalSection-os.horizon.h + include/nn/os/detail/os_ThreadTypes-os.horizon.h + include/nn/os/os_ConditionVariableCommon.h + include/nn/os/os_MessageQueueTypes.h + include/nn/os/os_Mutex.h + include/nn/os/os_MutexTypes.h + include/nn/os/os_ThreadCommon.h + include/nn/os/os_ThreadTypes.h + include/nn/pl.h + include/nn/prepo.h + include/nn/ro.h + include/nn/settings.h + include/nn/sf.h + include/nn/sf/hipc.h + include/nn/sf/IServiceObject.h + include/nn/sf/ISharedObject.h + include/nn/socket.h + include/nn/ssl.h + include/nn/ssl/BuiltInManager.h + include/nn/ssl/Connection.h + include/nn/ssl/Context.h + include/nn/ssl/Debug.h + include/nn/ssl/sf/ISslConnection.h + include/nn/ssl/sf/ISslContext.h + include/nn/ssl/sf/ISslService.h + include/nn/ssl/ssl-c-bindings.h + include/nn/svc.h + include/nn/swkbd/swkbd.h + include/nn/time.h + include/nn/types.h + include/nn/ui2d/detail/TexCoordArray.h + include/nn/ui2d/Layout.h + include/nn/ui2d/Material.h + include/nn/ui2d/Pane.h + include/nn/ui2d/Parts.h + include/nn/ui2d/Types.h + include/nn/ui2d/Util.h + include/nn/util.h + include/nn/util/detail/util_ArithmeticImpl.h + include/nn/util/detail/util_TypeTraits.h + include/nn/util/AccessorBase.h + include/nn/util/MathTypes.h + include/nn/util/util_Arithmetic.h + include/nn/util/util_BinaryFormat.h + include/nn/util/util_BinTypes.h + include/nn/util/util_BitArray.h + include/nn/util/util_BitFlagSet.h + include/nn/util/util_BitPack.h + include/nn/util/util_BitUtil.h + include/nn/util/util_BytePtr.h + include/nn/util/util_IntrusiveList.h + include/nn/util/util_ResDic.h + include/nn/util/util_StringView.h + include/nn/util/util_TypedStorage.h + include/nn/vfx/Config.h + include/nn/vfx/Heap.h + include/nn/vfx/Resource.h + include/nn/vfx/System.h + include/nn/vi.h + include/nn/xcd.h - include/nn/types.h - include/nn/fs.h - include/nn/os.h - include/nn/nifm.h - include/nn/prepo.h - include/nn/vfx/Config.h - include/nn/vfx/System.h - include/nn/vfx/Heap.h - include/nn/socket.h - include/nn/aoc.h - include/nn/ro.h - include/nn/oe.h - include/nn/util.h - include/nn/image.h - include/nn/util/AccessorBase.h - include/nn/util/MathTypes.h - include/nn/util/util_Arithmetic.h - include/nn/util/util_BinTypes.h - include/nn/util/util_BitPack.h - include/nn/util/util_BytePtr.h - include/nn/util/util_IntrusiveList.h - include/nn/util/util_BitUtil.h - include/nn/util/util_ResDic.h - include/nn/util/util_StringView.h - include/nn/ui2d/detail/TexCoordArray.h - include/nn/ui2d/Layout.h - include/nn/ui2d/Material.h - include/nn/ui2d/Pane.h - include/nn/ui2d/Parts.h - include/nn/ui2d/Types.h - include/nn/ui2d/Util.h - include/nn/g3d/BindFuncTable.h - include/nn/g3d/ModelObj.h - include/nn/g3d/ResMaterialAnim.h - include/nn/g3d/ResShapeAnim.h - include/nn/g3d/ResLightAnim.h - include/nn/g3d/ResSkeletalAnim.h - include/nn/g3d/ResSceneAnim.h - include/nn/g3d/ResFile.h - include/nn/g3d/ResMaterial.h - include/nn/g3d/ResFogAnim.h - include/nn/g3d/ResModel.h - include/nn/g3d/ResSkeleton.h - include/nn/g3d/SkeletonObj.h - include/nn/g3d/World.h - include/nn/nn.h - include/nn/settings.h - include/nn/hid.h - include/nn/atk/detail/StreamSoundRuntime.h - include/nn/atk/detail/BasicSound.h - include/nn/atk/detail/WaveSoundRuntime.h - include/nn/atk/detail/SequenceSoundRuntime.h - include/nn/atk/detail/SoundArchiveManager.h - include/nn/atk/detail/AdvancedWaveSoundRuntime.h - include/nn/atk/AuxBus.h - include/nn/atk/SoundArchivePlayer.h - include/nn/atk/SoundPlayer.h - include/nn/atk/SoundDataManager.h - include/nn/nfp.h - include/nn/nfp/nfp.h - include/nn/nfp/nfp_types.h - include/nn/time.h - include/nn/diag.h - include/nn/init.h - include/nn/crypto.h - include/nn/ssl.h - include/nn/fs/fs_bcat.h - include/nn/fs/fs_directories.h - include/nn/fs/fs_files.h - include/nn/fs/fs_mount.h - include/nn/fs/fs_rom.h - include/nn/fs/fs_save.h - include/nn/fs/fs_types.h - include/nn/vi.h - include/nn/account.h - include/nn/audio.h - include/nn/friends.h - include/nn/mem.h + include/nvn/nvn.h + include/nvn/nvn_Cpp.h + include/nvn/nvn_CppFuncPtrBase.h + include/nvn/nvn_CppMethods.h + include/nvn/nvn_DeviceConstantsNX.h + include/nvn/nvn_FuncPtrBase.h + include/nvn/nvn_FuncPtrInline.h - include/nvn/nvn_Cpp.h - include/nvn/nvn_CppFuncPtrBase.h - include/nvn/nvn_CppMethods.h - include/nvn/nvn_FuncPtrBase.h - include/nvn/nvn_FuncPtrInline.h - include/nvn/nvn.h - - include/vapours/results.hpp - include/vapours/results/sf_results.hpp - include/vapours/results/capsrv_results.hpp - include/vapours/results/pgl_results.hpp - include/vapours/results/lr_results.hpp - include/vapours/results/spl_results.hpp - include/vapours/results/pm_results.hpp - include/vapours/results/settings_results.hpp - include/vapours/results/debug_results.hpp - include/vapours/results/cal_results.hpp - include/vapours/results/i2c_results.hpp - include/vapours/results/results_common.hpp - include/vapours/results/time_results.hpp - include/vapours/results/vi_results.hpp - include/vapours/results/ns_results.hpp - include/vapours/results/fs_results.hpp - include/vapours/results/hipc_results.hpp - include/vapours/results/os_results.hpp - include/vapours/results/ro_results.hpp - include/vapours/results/loader_results.hpp - include/vapours/results/err_results.hpp - include/vapours/results/ncm_results.hpp - include/vapours/results/svc_results.hpp - include/vapours/results/nim_results.hpp - include/vapours/results/exosphere_results.hpp - include/vapours/results/creport_results.hpp - include/vapours/results/erpt_results.hpp - include/vapours/results/kvdb_results.hpp - include/vapours/results/dmnt_results.hpp - include/vapours/results/updater_results.hpp - include/vapours/results/fatal_results.hpp - include/vapours/results/sm_results.hpp - include/vapours/results/psc_results.hpp - include/vapours/results/nfp_results.hpp - include/nv.h + include/nvnTool/nvnTool_GlslcInterface.h - src/NintendoSDK/nvn/nvn_CppFuncPtrImpl.h - src/NintendoSDK/nvn/nvn_FuncPtrImpl.h - src/NintendoSDK/nvn/nvn_Impl.cpp + include/vapours/results/cal_results.hpp + include/vapours/results/capsrv_results.hpp + include/vapours/results/creport_results.hpp + include/vapours/results/debug_results.hpp + include/vapours/results/dmnt_results.hpp + include/vapours/results/erpt_results.hpp + include/vapours/results/err_results.hpp + include/vapours/results/exosphere_results.hpp + include/vapours/results/fatal_results.hpp + include/vapours/results/fs_results.hpp + include/vapours/results/hipc_results.hpp + include/vapours/results/i2c_results.hpp + include/vapours/results/kvdb_results.hpp + include/vapours/results/loader_results.hpp + include/vapours/results/lr_results.hpp + include/vapours/results/ncm_results.hpp + include/vapours/results/nfp_results.hpp + include/vapours/results/nim_results.hpp + include/vapours/results/ns_results.hpp + include/vapours/results/os_results.hpp + include/vapours/results/pgl_results.hpp + include/vapours/results/pm_results.hpp + include/vapours/results/psc_results.hpp + include/vapours/results/results_common.hpp + include/vapours/results/ro_results.hpp + include/vapours/results/settings_results.hpp + include/vapours/results/sf_results.hpp + include/vapours/results/sm_results.hpp + include/vapours/results/spl_results.hpp + include/vapours/results/svc_results.hpp + include/vapours/results/time_results.hpp + include/vapours/results/updater_results.hpp + include/vapours/results/vi_results.hpp + include/vapours/results.hpp + + include/nv.h + + src/NintendoSDK/nvn/nvn_CppFuncPtrImpl.h + src/NintendoSDK/nvn/nvn_FuncPtrImpl.h + src/NintendoSDK/nvn/nvn_Impl.cpp ) target_include_directories(NintendoSDK PUBLIC include/) @@ -292,27 +357,27 @@ target_compile_options(NintendoSDK PRIVATE -Wall -Wextra) target_compile_options(NintendoSDK PRIVATE -Wno-invalid-offsetof) if (NVN_API) - target_compile_definitions(NintendoSDK PRIVATE NVN_API_${NVN_API}) -endif() + target_compile_definitions(NintendoSDK PRIVATE NVN_API_${NVN_API}) +endif () function(nn_ver ID) - set(VER ${${ID}}) - string(REPLACE "." ";" VER "${VER}") + set(VER ${${ID}}) + string(REPLACE "." ";" VER "${VER}") + + list(LENGTH VER SEGS) + if (SEGS LESS 3) + set(DEF_VER 1 0 0) + list(SUBLIST DEF_VER ${SEGS} -1 DEF_VER) + list(APPEND VER ${DEF_VER}) - list(LENGTH VER SEGS) - if(SEGS LESS 3) - set(DEF_VER 1 0 0) - list(SUBLIST DEF_VER ${SEGS} -1 DEF_VER) - list(APPEND VER ${DEF_VER}) + message(AUTHOR_WARNING "${ID} semver is not complete (%d.%d.%d): ${${ID}}") + endif () - message(AUTHOR_WARNING "${ID} semver is not complete (%d.%d.%d): ${${ID}}") - endif() + list(POP_FRONT VER MAJOR MINOR PATCH) - list(POP_FRONT VER MAJOR MINOR PATCH) - - foreach(VAR IN ITEMS MAJOR MINOR PATCH) - target_compile_definitions(NintendoSDK PRIVATE ${ID}_${VAR}=${${VAR}}) - endforeach() + foreach (VAR IN ITEMS MAJOR MINOR PATCH) + target_compile_definitions(NintendoSDK PRIVATE ${ID}_${VAR}=${${VAR}}) + endforeach () endfunction() nn_ver(NN_WARE) diff --git a/include/nn/sf/IServiceObject.h b/include/nn/sf/IServiceObject.h new file mode 100644 index 0000000..45e17be --- /dev/null +++ b/include/nn/sf/IServiceObject.h @@ -0,0 +1,11 @@ +#pragma once + +#include + +namespace nn::sf { +class IServiceObject : public ISharedObject { +public: + virtual void* GetInterfaceTypeInfo() { return nullptr; } + virtual void* GetProxyInfo() { return nullptr; } // CmifProxyInfo* ? +}; +} // namespace nn::sf diff --git a/include/nn/sf/ISharedObject.h b/include/nn/sf/ISharedObject.h new file mode 100644 index 0000000..c26085e --- /dev/null +++ b/include/nn/sf/ISharedObject.h @@ -0,0 +1,6 @@ +#pragma once + +namespace nn::sf { +// TODO: stubbed for now +class ISharedObject {}; +} // namespace nn::sf diff --git a/include/nn/ssl.h b/include/nn/ssl.h index c962954..50824b3 100644 --- a/include/nn/ssl.h +++ b/include/nn/ssl.h @@ -1,26 +1,80 @@ -/** - * @file ssl.h - * @brief SSL implementation. - */ - #pragma once #include -namespace nn { -namespace ssl { -enum CertificateFormat { PEM = 0x01, DER = 0x02 }; +namespace nn::ssl { +enum class CertificateFormat { PEM = 1, DER = 2 }; +enum class CaCertificateId { + All = -1, // [3.0.0+] -class Context { -public: - enum SslVersion { Auto = 0x01, v10 = 0x08, v11 = 0x10, v12 = 0x20 }; + NintendoCAG3 = 1, + NintendoClass2CAG3 = 2, + NintendoRootCAG4 = 3, // [16.0.0+] - Result Create(nn::ssl::Context::SslVersion version); - Result ImportServerPki(u64*, char const* certData, u32 certSize, - nn::ssl::CertificateFormat certFormat); + AmazonRootCA1 = 1000, + StarfieldServicesRootCertificateAuthorityG2 = 1001, + AddTrustExternalCARoot = 1002, + COMODOCertificationAuthority = 1003, + UTNDATACorpSGC = 1004, + UTNUSERFirstHardware = 1005, + BaltimoreCyberTrustRoot = 1006, + CybertrustGlobalRoot = 1007, + VerizonGlobalRootCA = 1008, + DigiCertAssuredIDRootCA = 1009, + DigiCertAssuredIDRootG2 = 1010, + DigiCertGlobalRootCA = 1011, + DigiCertGlobalRootG2 = 1012, + DigiCertHighAssuranceEVRootCA = 1013, + EntrustnetCertificationAuthority2048 = 1014, + EntrustRootCertificationAuthority = 1015, + EntrustRootCertificationAuthorityG2 = 1016, + GeoTrustGlobalCA2 = 1017, + GeoTrustGlobalCA = 1018, + GeoTrustPrimaryCertificationAuthorityG3 = 1019, + GeoTrustPrimaryCertificationAuthority = 1020, + GlobalSignRootCA = 1021, + GlobalSignRootCAR2 = 1022, + GlobalSignRootCAR3 = 1023, + GoDaddyClass2CertificationAuthority = 1024, + GoDaddyRootCertificateAuthorityG2 = 1025, + StarfieldClass2CertificationAuthority = 1026, + StarfieldRootCertificateAuthorityG2 = 1027, + ThawtePrimaryRootCAG3 = 1028, + ThawtePrimaryRootCA = 1029, + VeriSignClass3PublicPrimaryCertificationAuthorityG3 = 1030, + VeriSignClass3PublicPrimaryCertificationAuthorityG5 = 1031, + VeriSignUniversalRootCertificationAuthority = 1032, + DSTRootCAX3 = 1033, // [6.0.0+] + USERTrustRsaCertificationAuthority = 1034, // [10.0.3+] + ISRGRootX10 = 1035, // [10.1.0+] + USERTrustEccCertificationAuthority = 1036, // [10.1.0+] + COMODORsaCertificationAuthority = 1037, // [10.1.0+] + COMODOEccCertificationAuthority = 1038, // [10.1.0+] + AmazonRootCA2 = 1039, // [11.0.0+] + AmazonRootCA3 = 1040, // [11.0.0+] + AmazonRootCA4 = 1041, // [11.0.0+] + DigiCertAssuredIDRootG3 = 1042, // [11.0.0+] + DigiCertGlobalRootG3 = 1043, // [11.0.0+] + DigiCertTrustedRootG4 = 1044, // [11.0.0+] + EntrustRootCertificationAuthorityEC1 = 1045, // [11.0.0+] + EntrustRootCertificationAuthorityG4 = 1046, // [11.0.0+] + GlobalSignECCRootCAR4 = 1047, // [11.0.0+] + GlobalSignECCRootCAR5 = 1048, // [11.0.0+] + GlobalSignECCRootCAR6 = 1049, // [11.0.0+] + GTSRootR1 = 1050, // [11.0.0+] + GTSRootR2 = 1051, // [11.0.0+] + GTSRootR3 = 1052, // [11.0.0+] + GTSRootR4 = 1053, // [11.0.0+] + SecurityCommunicationRootCA = 1054, // [12.0.0+] + GlobalSignRootE4 = 1055, // [15.0.0+] + GlobalSignRootR4 = 1056, // [15.0.0+] + TTeleSecGlobalRootClass2 = 1057, // [15.0.0+] + DigiCertTLSECCP384RootG5 = 1058, // [16.0.0+] + DigiCertTLSRSA4096RootG5 = 1059 // [16.0.0+] }; Result Initialize(); +Result Initialize(u32 concurrencyLimit); Result Finalize(); -} // namespace ssl -} // namespace nn +Result GetSslResultFromValue(Result*, const char*, u32); +} // namespace nn::ssl diff --git a/include/nn/ssl/BuiltInManager.h b/include/nn/ssl/BuiltInManager.h new file mode 100644 index 0000000..74b3c1a --- /dev/null +++ b/include/nn/ssl/BuiltInManager.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +namespace nn::ssl { +enum class CaCertificateId; +} // namespace nn::ssl + +namespace nn::ssl::BuiltInManager { +struct BuiltInCertificateInfo; // TODO + +Result GetBuiltInCertificates(BuiltInCertificateInfo**, u8*, u32, CaCertificateId*, u32); +Result GetBuiltInCertificateBufSize(u32*, CaCertificateId*, u32); +} // namespace nn::ssl::BuiltInManager diff --git a/include/nn/ssl/Connection.h b/include/nn/ssl/Connection.h new file mode 100644 index 0000000..840d9c3 --- /dev/null +++ b/include/nn/ssl/Connection.h @@ -0,0 +1,87 @@ +#pragma once + +#include + +namespace nn::ssl { +struct Context; + +class Connection { +public: + enum class VerifyOption { + PeerCa = 1 << 0, + HostName = 1 << 1, + DateCheck = 1 << 2, + EvCertPartial = 1 << 3, + EvPolicyOid = 1 << 4, // [6.0.0+] + EvCertFingerprint = 1 << 5 // [6.0.0+] + }; + + enum class IoMode { Blocking = 1, NonBlocking = 2 }; + + enum class SessionCacheMode { None, SessionId, SessionTicket }; + + enum class RenegotiationMode { None, Secure }; + + enum class PollEvent { Read = 1 << 0, Write = 1 << 1, Except = 1 << 2 }; + + enum class OptionType { + DoNotCloseSocket, + GetServerCertChain, // [3.0.0+] + SkipDefaultVerify, // [5.0.0+] + EnableAlpn // [9.0.0+] + }; + + // TODO + struct ServerCertDetail; + + Connection(); + ~Connection(); + + Result Create(Context* context); + Result Destroy(); + Result SetSocketDescriptor(s32 socketDescriptor); + Result SetHostName(const char* hostName, u32 hostNameSize); + Result SetVerifyOption(VerifyOption verifyOption); + Result SetServerCertBuffer(const char* serverCertificateBuffer, + u32 serverCertificateBufferSize); + Result SetIoMode(IoMode ioMode); + Result SetSessionCacheMode(SessionCacheMode sessionCacheMode); + Result SetRenegotiationMode(RenegotiationMode renegotiationMode); + Result GetSocketDescriptor(s32* outSocketDescriptor); + Result GetHostName(const char* outHostName, u32* outHostNameSize, u32 maxHostNameSize); + Result GetVerifyOption(VerifyOption* outVerifyOption); + Result GetIoMode(IoMode* outIoMode); + Result GetSessionCacheMode(SessionCacheMode* outSessionCacheMode); + Result GetRenegotiationMode(RenegotiationMode* outRenegotiationMode); + Result FlushSessionCache(); + Result DoHandshake(); + Result DoHandshake(u32* outServerCertificateBufferSize, u32* outNumCertificates); + Result DoHandshake(u32* outServerCertificateBufferSize, u32* outNumCertificates, + char* outServerCertificateBuffer, u32 serverCertificateBufferMaxSize); + Result GetServerCertDetail(ServerCertDetail*, const char*, u32); + Result Read(char* outBuffer, u32 maxBufferSize); + Result Read(char* outBuffer, s32* outBufferSize, u32 maxBufferSize); + Result Write(const char* buffer, u32 maxBufferSize); + Result Write(const char* buffer, s32* outWrittenBufferSize, u32 maxBufferSize); + Result Pending(); + Result Pending(s32*); + Result Peek(char* outBuffer, s32* outBufferSize, u32 maxBufferSize); + Result Poll(PollEvent*, PollEvent*, u32 timeout); + Result GetLastError(Result* outErrorResult); + Result GetVerifyCertError(Result* outErrorResult); + Result GetVerifyCertErrors(Result* outErrorResults, u32*, u32*, u32 maxErrorResultCount); + Result GetNeededServerCertBufferSize(u32* outNeededServerCertBufferSize); + Result GetContextId(u64* outContextId); + Result GetConnectionId(u64* outConnectionId); + Result SetOption(OptionType option, bool value); + Result GetOption(bool* outValue, OptionType option); + +private: + u64 mConnectionId; + u64 mContextId; + unsigned char _10[8]; + const char* mServerCertificateBuffer; + u32 mServerCertificateBufferSize; + Result _24; +}; +} // namespace nn::ssl diff --git a/include/nn/ssl/Context.h b/include/nn/ssl/Context.h new file mode 100644 index 0000000..657bcd4 --- /dev/null +++ b/include/nn/ssl/Context.h @@ -0,0 +1,58 @@ +#pragma once + +#include +#include + +namespace nn::ssl { +// TODO: find the size of this struct +class Context { +public: + enum class SslVersion { + Auto = 0x01, + v10 = 0x08, + v11 = 0x10, + v12 = 0x20, + v13 = 0x40, // [11.0.0+] + Auto24 = 0x1000000 // [11.0.0+] + }; + + enum class InternalPki { DeviceClientCertDefault = 1 }; + + enum class ContextOption { CrlImportDateCheckEnable = 1 }; + + Context(); + ~Context(); + + Result Create(SslVersion version); + Result Destroy(); + Result SetOption(ContextOption option, s32 value); + Result GetOption(s32* outValue, ContextOption option); + Result GetContextId(u64* outId); + Result ImportServerPki(u64* outId, const char* certificateBuffer, u32 certificateBufferSize, + CertificateFormat certificateFormat); + Result ImportClientPki(u64* outId, const char* certificateBuffer, + const char* certificatePassword, u32 certificateBufferSize, + u32 certificatePasswordSize); + Result RemovePki(u64 id); + Result RegisterInternalPki(u64* outId, InternalPki pki); + Result AddPolicyOid(const char* policyOidBuffer, u32 policyOidBufferSize); + Result ImportCrl(u64* outId, const char* certificateRevocationListBuffer, + u32 certificateRevocationListBufferSize); + +private: + u64 mContextId; +}; + +// TODO: I'm pretty sure there is inheritance between ContextPrivate and Context +class ContextPrivate { +public: + enum class SslVersion { + // TODO + }; + + Result Create(SslVersion version); + +private: + Context context; +}; +} // namespace nn::ssl diff --git a/include/nn/ssl/Debug.h b/include/nn/ssl/Debug.h new file mode 100644 index 0000000..13725c2 --- /dev/null +++ b/include/nn/ssl/Debug.h @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace nn::ssl::Debug { +struct Output; // TODO +struct Input; // TODO +enum class IoctlCommand; // TODO + +struct HeapTrackPoint { +public: + HeapTrackPoint(); + +private: + char _0[0x10]; + bool _10; +}; + +Result Ioctl(Output*, Input*, IoctlCommand); +} // namespace nn::ssl::Debug diff --git a/include/nn/ssl/sf/ISslConnection.h b/include/nn/ssl/sf/ISslConnection.h new file mode 100644 index 0000000..22c081c --- /dev/null +++ b/include/nn/ssl/sf/ISslConnection.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +namespace nn::ssl::sf { +class ISslConnection : public nn::sf::IServiceObject {}; +} // namespace nn::ssl::sf diff --git a/include/nn/ssl/sf/ISslContext.h b/include/nn/ssl/sf/ISslContext.h new file mode 100644 index 0000000..ee6a63c --- /dev/null +++ b/include/nn/ssl/sf/ISslContext.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +namespace nn::ssl::sf { +class ISslContext : public nn::sf::IServiceObject {}; +} // namespace nn::ssl::sf diff --git a/include/nn/ssl/sf/ISslService.h b/include/nn/ssl/sf/ISslService.h new file mode 100644 index 0000000..f9aa793 --- /dev/null +++ b/include/nn/ssl/sf/ISslService.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +namespace nn::ssl::sf { +class ISslService : public nn::sf::IServiceObject {}; +} // namespace nn::ssl::sf diff --git a/include/nn/ssl/ssl-c-bindings.h b/include/nn/ssl/ssl-c-bindings.h new file mode 100644 index 0000000..693fc7b --- /dev/null +++ b/include/nn/ssl/ssl-c-bindings.h @@ -0,0 +1,67 @@ +#pragma once + +#include +#include +#include + +extern "C" { +nn::Result nnsslInitialize(void); +nn::Result nnsslInitializeWithConcurrencyLimit(u32 limit); +nn::Result nnsslFinialize(void); +nn::Result nnsslContextCreate(nn::ssl::Context* context, nn::ssl::Context::SslVersion version); +nn::Result nnsslContextDestroy(nn::ssl::Context* context); +nn::Result nnsslContextGetContextId(nn::ssl::Context* context, u64* outId); +nn::Result nnsslConnectionCreate(nn::ssl::Connection* connection, nn::ssl::Context* context); +nn::Result nnsslConnectionDestroy(nn::ssl::Connection* connection); +nn::Result nnsslConnectionSetSocketDescriptor(nn::ssl::Connection* connection, + s32 socketDescriptor); +nn::Result nnsslConnectionSetHostName(nn::ssl::Connection* connection, const char* hostName, + u32 hostNameSize); +nn::Result nnsslConnectionSetVerifyOption(nn::ssl::Connection* connection, + nn::ssl::Connection::VerifyOption verifyOption); +nn::Result nnsslConnectionSetServerCertBuffer(nn::ssl::Connection* connection, + const char* serverCertificateBuffer, + u32 serverCertificateBufferSize); +nn::Result nnsslConnectionSetIoMode(nn::ssl::Connection* connection, + nn::ssl::Connection::IoMode ioMode); +nn::Result +nnsslConnectionSetSessionCacheMode(nn::ssl::Connection* connection, + nn::ssl::Connection::SessionCacheMode sessionCacheMode); +nn::Result nnsslConnectionGetSocketDescriptor(nn::ssl::Connection* connection, + s32* outSocketDescriptor); +nn::Result nnsslConnectionGetHostName(nn::ssl::Connection* connection, const char* outHostName, + u32* outHostNameSize, u32 maxHostNameSize); +nn::Result nnsslConnectionGetVerifyOption(nn::ssl::Connection* connection, + nn::ssl::Connection::VerifyOption* outVerifyOption); +nn::Result nnsslConnectionGetIoMode(nn::ssl::Connection* connection, + nn::ssl::Connection::IoMode* outIoMode); +nn::Result nnsslConnectionDoHandshake(nn::ssl::Connection* connection); +nn::Result nnsslConnectionDoHandshakeWithCertBuffer(nn::ssl::Connection* connection, + u32* outServerCertificateBufferSize, + u32* outNumCertificates); +nn::Result nnsslConnectionDoHandshakeWithBuffer(nn::ssl::Connection* connection, + u32* outServerCertificateBufferSize, + u32* outNumCertificates, + char* outServerCertificateBuffer, + u32 serverCertificateBufferMaxSize); +nn::Result nnsslConnectionGetServerCertDetail(nn::ssl::Connection* connection, + nn::ssl::Connection::ServerCertDetail*, const char*, + u32); +nn::Result nnsslConnectionRead(nn::ssl::Connection* connection, char* outBuffer, s32* outBufferSize, + u32 maxBufferSize); +nn::Result nnsslConnectionWrite(nn::ssl::Connection* connection, const char* buffer, + s32* outWrittenBufferSize, u32 maxBufferSize); +nn::Result nnsslConnectionPending(nn::ssl::Connection* connection, s32*); +nn::Result nnsslConnectionPeek(nn::ssl::Connection* connection, char* outBuffer, s32* outBufferSize, + u32 maxBufferSize); +nn::Result nnsslConnectionPoll(nn::ssl::Connection* connection, PollEvent*, PollEvent*, + u32 timeout); +nn::Result nnsslConnectionGetVerifyCertError(nn::ssl::Connection* connection, + nn::Result* outErrorResult); +nn::Result nnsslConnectionGetContextId(nn::ssl::Connection* connection, u64* outContextId); +nn::Result nnsslConnectionGetConnectionId(nn::ssl::Connection* connection, u64* outConnectionId); +nn::Result nnsslConnectionSetOption(nn::ssl::Connection* connection, + nn::ssl::Connection::OptionType option, bool value); +nn::Result nnsslConnectionGetOption(nn::ssl::Connection* connection, bool* outValue, + nn::ssl::Connection::OptionType option); +}