aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmd/ocsp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/ocsp.cpp')
-rw-r--r--src/cmd/ocsp.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/cmd/ocsp.cpp b/src/cmd/ocsp.cpp
new file mode 100644
index 000000000..98324caff
--- /dev/null
+++ b/src/cmd/ocsp.cpp
@@ -0,0 +1,38 @@
+#include "apps.h"
+#include <botan/x509cert.h>
+#include <botan/certstor.h>
+#include <botan/x509path.h>
+#include <botan/ocsp.h>
+
+#include <iostream>
+
+using namespace Botan;
+
+int ocsp_check_main(int argc, char* argv[])
+ {
+ if(argc != 2)
+ {
+ std::cout << "Usage: ocsp subject.pem issuer.pem";
+ return 2;
+ }
+
+ X509_Certificate subject(argv[1]);
+ X509_Certificate issuer(argv[2]);
+
+ Certificate_Store_In_Memory cas;
+ cas.add_certificate(issuer);
+ OCSP::Response resp = OCSP::online_check(issuer, subject, &cas);
+
+ auto status = resp.status_for(issuer, subject);
+
+ if(status == Certificate_Status_Code::VERIFIED)
+ {
+ std::cout << "OCSP check OK\n";
+ return 0;
+ }
+ else
+ {
+ std::cout << "OCSP check failed " << Path_Validation_Result::status_string(status) << "\n";
+ return 1;
+ }
+ }