blob: 0deda46062613aa6c758f6b9886865a82a3a8f79 [file] [log] [blame]
// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// TPM client for initialization
#include <base/command_line.h>
#include <iostream>
#include "secure_blob.h"
#include "tpm.h"
namespace switches {
static const char kActionSwitch[] = "action";
static const char *kActions[] = {
"initialize",
NULL };
enum ActionEnum {
ACTION_INITIALIZE };
} // namespace switches
int main(int argc, char **argv) {
CommandLine::Init(argc, argv);
CommandLine *cl = CommandLine::ForCurrentProcess();
std::string action = cl->GetSwitchValueASCII(switches::kActionSwitch);
if (!strcmp(switches::kActions[switches::ACTION_INITIALIZE],
action.c_str())) {
tpm_init::Tpm tpm;
tpm.Init();
if (tpm.InitializeTpm()) {
tpm_init::SecureBlob password;
tpm.GetOwnerPassword(&password);
std::string str_password(static_cast<const char*>(password.const_data()),
password.size());
printf("TPM Owner Password: %s\n", str_password.c_str());
} else {
printf("Failed to initialize the TPM\n");
}
} else {
printf("Unknown action or no action given. Available actions: \n");
for(int i = 0; /* loop forever */; i++) {
if(!switches::kActions[i]) {
break;
}
printf(" --action=%s\n", switches::kActions[i]);
}
}
return 0;
}