使用libssh从消息中提取SSH公钥

我在节点应用程序中使用node-libssh作为libssh的一个很好的绑定,并且可以很容易地模拟一个ssh服务器。 不过,我需要从传入的SSH会话中提取公钥。 我需要一个string化的密钥版本,以便以后在数据库查询中使用,并且它必须与您在id_rsa.pub文件中find的格式相同。

我已经能够将其缩小到需要一种方法来在libssh ssh_key到char数组之间进行转换。

它简单到使用ssh_key pubKey = ssh_message_auth_pubkey(message); 获得ssh_key版本,但是在libssh中似乎没有任何方法可以将ssh_key转换为任何可以传回到我的nodejs进程的其他格式。 我预见了这样的解决scheme:

 ssh_key authKey = ssh_message_auth_pubkey(m->message); const char *pubKey = ssh_key_to_char(authKey); if (pubKey) instance->Set(NanSymbol("pubKey"), v8::String::New(pubKey)); 

但是,自然不是这样简单,因为没有方法ssh_key_to_char存在,我真的很感激任何指针在这里。

挖了很长一段时间后,我能够find这个方法,我可以用它来build立这个function:

ssh_pki_export_pubkey_base64(ssh_key, char*)

这将ssh_key转换为其base64等价物。