diff options
author | Victor Hsieh <victorhsieh@google.com> | 2019-03-15 11:35:45 -0700 |
---|---|---|
committer | Victor Hsieh <victorhsieh@google.com> | 2019-03-15 16:01:01 -0700 |
commit | 327037f06363532c8cff79c7e6b1f64f4de9119c (patch) | |
tree | 0a1c3006a2dc973fc84b9c3547b454c8a305e67f /libkeyutils/mini_keyctl.cpp | |
parent | 0e5b74deff69312063e9f71d3b62f1f806b29526 (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.cpp | 20 |
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); } |