0
ように私は、これは非常に基本的なことを知っているが、それは壁に私を押し上げています:関数は、引数
peercert(Socket) -> {ok, Cert} | {error, Reason}
Types
Socket = sslsocket()
Cert = binary()
The peer certificate is returned as a DER-encoded binary. The certificate can be decoded with public_key:pkix_decode_cert/2.
[OK]を、素晴らしい:
peercertは、以下のように定義されます。最新のSSLSocketが-recordとして定義されている(のSSLSocket、{FD = nilを、PID = nilの})
だから私は実行します。
New = #sslsocket{pid = Pid},
io:fwrite("~n~npeercert~p~n~n", [ssl:peercert(New)]).
をしかし、私は
no function clause matching ssl:peercert({sslsocket,<0.1277.0>,undefined})
は、だから私は実行することをエラーが発生します引数としてPidを指定しても同様のエラーが発生します:
no function clause matching ssl:peercert(<0.1277.0>)
私は完全に困惑しています。私はそれが前に働いていた、関数は引数としてこれらを取ると言う...
あなたの助けを前にありがとう!
この値は私には間違っています。 'pid ='はタプルの3番目の要素を設定し、2番目の要素は設定しないでください。 'ssl:peercert({sslsocket、nil、Pid})'を実行するとどうなりますか? – Dogbert
ドキュメントによると 'sslsocket()= opaque()'なので、手動で作成するべきではありません。私は実装を見ましたが、私が推測できるのは、 'sslsocket'のどこかに矛盾する定義を含めるか、' sslsocket'が別に定義されているErlangバージョンで動作していることだけです(http://erlang.org /doc/apps/ssl/using_ssl.htmlは "sslsocketの返り値はかなり大きくて不透明であるため[...]で省略されています。"これはもう真実ではない) –
@Dogbert私の見た私はそれを試みたが、それはエラーをスローしなかったが、それは無限に掛かった – Ryan