summaryrefslogtreecommitdiffstats
path: root/adb
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2014-11-17 18:56:25 +0000
committerandroid-build-merger <android-build-merger@google.com>2014-11-17 18:56:25 +0000
commit33aacf1963dd1914c0ff94c4ddd05f729cdba3b6 (patch)
treeb9f1eb413bc8483b651f04c23cdc55de6f5e1795 /adb
parent52b88980564b6f0f1f8b9ceb1eebb80204bab29e (diff)
parent86c9e5f7e20a3f1712038ce642628c2e1e866434 (diff)
downloadsystem_core-33aacf1963dd1914c0ff94c4ddd05f729cdba3b6.zip
system_core-33aacf1963dd1914c0ff94c4ddd05f729cdba3b6.tar.gz
system_core-33aacf1963dd1914c0ff94c4ddd05f729cdba3b6.tar.bz2
Introduce "adb keygen"
automerge: 86c9e5f * commit '86c9e5f7e20a3f1712038ce642628c2e1e866434': Introduce "adb keygen"
Diffstat (limited to 'adb')
-rw-r--r--adb/adb_auth.h1
-rw-r--r--adb/adb_auth_host.c27
-rw-r--r--adb/commandline.c9
3 files changed, 34 insertions, 3 deletions
diff --git a/adb/adb_auth.h b/adb/adb_auth.h
index b24c674..54dd537 100644
--- a/adb/adb_auth.h
+++ b/adb/adb_auth.h
@@ -18,6 +18,7 @@
#define __ADB_AUTH_H
void adb_auth_init(void);
+int adb_auth_keygen(const char* filename);
void adb_auth_verified(atransport *t);
void send_auth_request(atransport *t);
diff --git a/adb/adb_auth_host.c b/adb/adb_auth_host.c
index e53f059..a859199 100644
--- a/adb/adb_auth_host.c
+++ b/adb/adb_auth_host.c
@@ -117,18 +117,34 @@ out:
static void get_user_info(char *buf, size_t len)
{
char hostname[1024], username[1024];
- int ret;
+ int ret = -1;
+
+ if (getenv("HOSTNAME") != NULL) {
+ strncpy(hostname, getenv("HOSTNAME"), sizeof(hostname));
+ hostname[sizeof(hostname)-1] = '\0';
+ ret = 0;
+ }
#ifndef _WIN32
- ret = gethostname(hostname, sizeof(hostname));
if (ret < 0)
+ ret = gethostname(hostname, sizeof(hostname));
#endif
+ if (ret < 0)
strcpy(hostname, "unknown");
+ ret = -1;
+
+ if (getenv("LOGNAME") != NULL) {
+ strncpy(username, getenv("LOGNAME"), sizeof(username));
+ username[sizeof(username)-1] = '\0';
+ ret = 0;
+ }
+
#if !defined _WIN32 && !defined ADB_HOST_ON_TARGET
- ret = getlogin_r(username, sizeof(username));
if (ret < 0)
+ ret = getlogin_r(username, sizeof(username));
#endif
+ if (ret < 0)
strcpy(username, "unknown");
ret = snprintf(buf, len, " %s@%s", username, hostname);
@@ -439,6 +455,11 @@ int adb_auth_get_userkey(unsigned char *data, size_t len)
return ret + 1;
}
+int adb_auth_keygen(const char* filename) {
+ adb_trace_mask |= (1 << TRACE_AUTH);
+ return (generate_key(filename) == 0);
+}
+
void adb_auth_init(void)
{
int ret;
diff --git a/adb/commandline.c b/adb/commandline.c
index d84d4ff..a85ce92 100644
--- a/adb/commandline.c
+++ b/adb/commandline.c
@@ -36,6 +36,7 @@
#define TRACE_TAG TRACE_ADB
#include "adb.h"
#include "adb_client.h"
+#include "adb_auth.h"
#include "file_sync_service.h"
static int do_cmd(transport_type ttype, char* serial, char *cmd, ...);
@@ -190,6 +191,9 @@ void help()
" adb restore <file> - restore device contents from the <file> backup archive\n"
"\n"
" adb disable-verity - disable dm-verity checking on USERDEBUG builds\n"
+ " adb keygen <file> - generate adb public/private key. The private key is stored in <file>,\n"
+ " and the public key is stored in <file>.pub. Any existing files\n"
+ " are overwritten.\n"
" adb help - show this help message\n"
" adb version - show version num\n"
"\n"
@@ -1720,6 +1724,11 @@ top:
return restore(argc, argv);
}
+ if (!strcmp(argv[0], "keygen")) {
+ if (argc < 2) return usage();
+ return adb_auth_keygen(argv[1]);
+ }
+
if (!strcmp(argv[0], "jdwp")) {
int fd = adb_connect("jdwp");
if (fd >= 0) {