【发布时间】:2017-06-12 10:26:46
【问题描述】:
我如何打开 Pem 文件以检查 a) 'Not before' 和 'Not after' 日期是否正常,以及 b) pem 文件中有一系列证书到路由证书颁发机构?
我试过了:
:-use_module(library(http/http_client)).
url('http://fm4dd.com/openssl/source/PEM/certs/512b-rsa-example-cert.pem').
url_data(Url,D):-
http_get(Url,D,[to(string)]).
url_data1(Url,Certificate):-
http_get(Url,D,[to(stream(Stream))]),
load_certificate(Stream, Certificate),
close(Stream).
url_data/1 的工作原理是将 pem 文件作为字符串返回。但是url_data1/1 不起作用。它旨在将每个证书作为术语列表返回。
* 更新 *
我有:
url_data1(Url,Certs):-
http_open(Url,Stream,[]),
all_certs(Stream,Certs),
forall(member(C,Certs),my_validate(C)),
close(Stream).
all_certs(Stream,[C1|Certs]):-
catch(load_certificate(Stream,C1),_,fail),
all_certs(Stream,Certs),!.
all_certs(_Stream,[]).
my_validate(C):-
memberchk(to_be_signed(Signed),C),
memberchk(key(Key),C),
memberchk(signature(Signature),C),
memberchk(signature_algorithm(A),C),
algo_code(A,Code),
rsa_verify(Key,Signed,Signature,[type(Code)]).
algo_code('RSA-SHA256',sha256).
algo_code('RSA-SHA1',sha1).
失败了。正确的论点是什么?
【问题讨论】:
标签: ssl prolog swi-prolog pem