4
如何打開Pem文件來檢查a)'Not before'和'Not after'日期是否正常,以及b)是否存在一個證書鏈pem文件到路由證書頒發機構?打開並檢查SWI-Prolog中的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).
哪些失敗。什麼是正確的論點?
再次感謝有見識的回答。 我不關注驗證鏈 - 如果你不能告訴我這是一個初學者!我假設我使用'rsa_verify/4',並將選項類型設置爲每個證書的'signature_algorithm/1'項中的內容。但是如何輸入密鑰,簽名和數據呢?我將用我寫的代碼和我得到的錯誤更新我的問題。 – user27815
請提交一個用於驗證證書鏈的新問題。謝謝! – mat