Wie öffne ich eine Pem-Datei, um zu überprüfen, a) dass die Daten 'Nicht vor' und 'Nicht nach' in Ordnung sind und b) dass es eine Kette von Zertifikaten gibt PEM-Datei an eine Route Zertifizierungsstelle?Öffnen und Überprüfen einer Pem-Datei in SWI-Prolog
Ich habe versucht:
:-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
in arbeitet, dass sie die pem-Datei als String zurückgibt. Aber url_data1/1
funktioniert nicht. Es ist beabsichtigt, jedes Zertifikat als eine Liste von Begriffen zurückzugeben.
* Update *
ich habe:
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).
Welche ausfällt. Was sind die richtigen Argumente?
Danke noch einmal für die sachkundige Antwort. Ich folge nicht dem Abschnitt über die Validierung der Kette - Wenn Sie nicht sagen, ich bin ein Anfänger mit diesem! Ich nehme an, dass ich 'rsa_verify/4' benutze, wobei der Optionstyp auf den Begriff 'signature_algorithm/1' jedes Zertifikats gesetzt ist. Aber wie kann man Schlüssel, Unterschrift und Daten eingeben? Ich werde meine Frage mit dem Code, den ich geschrieben habe, und dem Fehler, den ich bekomme, aktualisieren. – user27815
Bitte legen Sie eine neue Frage zur Überprüfung der Zertifikatskette an. Vielen Dank! – mat