Introduce "adb keygen"

automerge: 86c9e5f

* commit '86c9e5f7e20a3f1712038ce642628c2e1e866434':
  Introduce "adb keygen"
This commit is contained in:
Nick Kralevich 2014-11-17 18:56:25 +00:00 committed by android-build-merger
commit 33aacf1963
3 changed files with 34 additions and 3 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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) {