SSL等同于Givedescriptor()和takedescriptor()

时间:2018-06-27 08:24:48

标签: ssl ibm-midrange

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

是否存在GSKit / SSL等效的Give / Take描述符方法?

givedescriptor() API文档

更新:

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

更新2:

看起来与this question类似,所以我也会对此进行阅读。

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

  

“看起来会话句柄只是指向某些存储的指针   在堆里。由于单层存储的设计,您可以复制它们   通过共享内存(memmap,shmget / shmat等)。您只需要确保   打开GSK环境的过程不会消失,或者   激活组将被清理,这些指针将变为   无效。您可能还需要放置一个互斥锁或其他   如果要有多个线程,则将原始对象锁定在它们周围   访问共享数据结构。”

更新3:

这是我用来在进程之间共享内存的示例-Example: Using semaphore set and shared memory functions,但仍不能完全解决问题。

更新4:

我想我将添加更多有关为什么我要问这个问题的细节。我正在更改非阻塞TCP服务器,该服务器用作与IBM i的连接点。它具有“标准”机制,可在连接出现时处理连接,创建线程并协商这些线程中的连接。线程然后创建独立的进程(通过sbmjob)。在原始TCP版本中,我们然后可以通过give/takedescriptor函数为正在运行的作业提供套接字的句柄,并轻松地在套接字中写入和写入。

因此,我需要一种等效的方法来使独立运行的程序能够写入SSL。

使用当前机制可能无法做到这一点。

2 个答案:

答案 0 :(得分:2)

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

编辑

  

这里的答案并没有真正回答潜在的问题,即我应该怎么做,因此尽管悬赏金已经颁发,但我不能接受唯一的答案。

答案是您不能这样做。

  

使用当前机制可能无法做到这一点。

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

答案 1 :(得分:-1)

原则上您的想法并非不可能!如果您认为可行,请尝试找到答案!

如果SO的所有回答者都说这是不可能的,那并非总是如此!

  

例如: 15年前,我试图找到答案,如何编写一个Java小程序,该小程序可以在服务器上读写图像。   每个人都对我说这是不可能的,但我不相信。一世   试图一次又一次地找到我的答案。我找到了答案:我   从一位专家那里拆解了一份在线应用软件   代码我找到了答案:使用PHP服务器,我们可以做到。我问   此小程序的所有者,有关之间的通信详细信息   Java小程序和PHP服务器,他为我提供了帮助。

您必须找到您的专家。这是找到正确答案的第一条规则。可能会在IBM论坛上找到一个人。

第二条规则是从专家那里读很多书。不仅只有一本书。可能是三个或更多个。

我也建议您阅读 How do I ask a good question? ,因为在您的问题中您没有任何计算机语言。而且我认为我们聘请的专家可以为您提供正确的答案。

关于SO的寻找正确专家的第一条规则是设置正确标签。没有正确的标签,只有很少的人会看到您的问题,而幸运的是,他们中的某人是您的正确专家。

保持乐观并尝试相信您!祝你好运,成功!

enter image description here