summaryrefslogtreecommitdiff
path: root/libkeyutils/mini_keyctl.cpp
diff options
context:
space:
mode:
authorVictor Hsieh <victorhsieh@google.com>2019-03-15 11:35:45 -0700
committerVictor Hsieh <victorhsieh@google.com>2019-03-15 16:01:01 -0700
commit327037f06363532c8cff79c7e6b1f64f4de9119c (patch)
tree0a1c3006a2dc973fc84b9c3547b454c8a305e67f /libkeyutils/mini_keyctl.cpp
parent0e5b74deff69312063e9f71d3b62f1f806b29526 (diff)
mini-keyctl: support printing security label
Test: mini-keyctl security <key_id> Bug: 128607724 Change-Id: If92b41d0aa96d626933546391b964ca2a8a48703
Diffstat (limited to 'libkeyutils/mini_keyctl.cpp')
-rw-r--r--libkeyutils/mini_keyctl.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/libkeyutils/mini_keyctl.cpp b/libkeyutils/mini_keyctl.cpp
index 4fe4c3c518..844f873bc5 100644
--- a/libkeyutils/mini_keyctl.cpp
+++ b/libkeyutils/mini_keyctl.cpp
@@ -20,8 +20,11 @@
#include "mini_keyctl_utils.h"
+#include <stdio.h>
#include <unistd.h>
+#include <android-base/parseint.h>
+
static void Usage(int exit_code) {
fprintf(stderr, "usage: mini-keyctl <action> [args,]\n");
fprintf(stderr, " mini-keyctl add <type> <desc> <data> <keyring>\n");
@@ -29,6 +32,7 @@ static void Usage(int exit_code) {
fprintf(stderr, " mini-keyctl dadd <type> <desc_prefix> <cert_dir> <keyring>\n");
fprintf(stderr, " mini-keyctl unlink <key> <keyring>\n");
fprintf(stderr, " mini-keyctl restrict_keyring <keyring>\n");
+ fprintf(stderr, " mini-keyctl security <key>\n");
_exit(exit_code);
}
@@ -66,7 +70,23 @@ int main(int argc, const char** argv) {
key_serial_t key = std::stoi(argv[2], nullptr, 16);
const std::string keyring = argv[3];
return Unlink(key, keyring);
+ } else if (action == "security") {
+ if (argc != 3) Usage(1);
+ const char* key_str = argv[2];
+ key_serial_t key;
+ if (!android::base::ParseInt(key_str, &key)) {
+ fprintf(stderr, "Unparsable key: '%s'\n", key_str);
+ return 1;
+ }
+ std::string context = RetrieveSecurityContext(key);
+ if (context.empty()) {
+ perror(key_str);
+ return 1;
+ }
+ fprintf(stderr, "%s\n", context.c_str());
+ return 0;
} else {
+ fprintf(stderr, "Unrecognized action: %s\n", action.c_str());
Usage(1);
}