SSL等效于givedescriptor()和takedescriptor()

mmm*_*mmm 9 ssl ibm-midrange

我正在转换旧的仅使用tcp的服务器以使用SSL(通过IBM的GSkit),其中一个问题是将SSL句柄转换为生成的程序.原始代码将原始套接字传递给via givedescriptor(),然后用于takedescriptor()获取然后使用传入的套接字.

是否有GSKit/SSL等同于给/取说明方法?

givedescriptor() API文档

更新:

问题是socket和SSLHandle是在一个进程中创建的,它初始化了SSL环境,然后需要完全传递给另一个进程 - 因此需要提供/获取描述符,因为socket/SSLHandle需要'给予新流程(它实际上是一个提交并独立于原始程序运行的RPG程序).

更新2:

看起来与这个问题类似,所以我也会读到这个问题.

从另一篇文章(没有基于代码的答案,但书面解决方案)

"看起来会话句柄只是堆中某些存储的指针.由于单级存储的设计,你可以通过共享内存(memmap,shmget/shmat,...)复制它们.你只需要确保打开GSK环境的过程不会消失,或者激活组将被清除,并且这些指针将变为无效.如果你有多个,你也可能需要在它们周围加一个互斥锁或其他一些锁定原语.访问共享数据结构的线程."

更新3:

这是我用来在进程之间共享内存的示例 - 示例:使用信号量集和共享内存函数,但仍未完全解决问题.

更新4:

我想我会添加更多细节,说明为什么我需要提出这个问题.我正在更改一个非阻塞TCP服务器,该服务器用作IBM i的连接点.它具有处理连接的"标准"机制,创建线程并协商这些线程中的连接.然后线程创建独立的进程(via sbmjob).在vanilla TCP版本中,我们可以通过give/takedescriptor函数为正在运行的作业提供套接字的句柄,并将快速写入套接字和从套接字写入.

所以我需要一种等效的方法来让独立运行的程序能够写入SSL.

也许这对当前机制来说是不可能的.

use*_*421 2

不存在操作系统已知且可由子进程继承或可转移到其他进程的“SSL 句柄”之类的东西。“SSL 句柄”将不可避免地成为指向原始进程中某些不透明数据结构的指针,,因为 SSL 是应用层协议,因此是在进程中实现的,而不是在内核中实现的。因此,您不能将“SSL 句柄”“给予”另一个进程并期望它能够工作。

编辑

这里的答案并没有真正回答根本的问题,即我应该如何做到这一点,所以尽管赏金已经授予,但我不能接受唯一的答案。

答案是你不能

以目前的机制来说,这或许是不可能的。

正确的。正如您在问题中预见到这种可能性一样,很难理解为什么您不能在答案中接受它。