admin_cmds.c revision 47e946e784719ae402ace34695f67b0e6e76ae5c
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <strings.h>
#include <fcntl.h>
#include <inttypes.h>
#include <sha1.h>
#include <libintl.h>
#include <tss/tss_defines.h>
#include "tpmadm.h"
cmdtable_t commands[] = {
};
/*
* TPM status
*/
static int
{
struct {
} info;
return (ERR_FAIL);
"SpecLevel: %d, ErrataRev: %d)\n"),
return (0);
}
static int
{
return (0);
return (owned);
}
static int
{
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (ERR_FAIL);
return (0);
}
static int
{
int i;
return (ERR_FAIL);
num_pcrs);
/* Print each PCR */
for (i = 0; i < num_pcrs; i++) {
if (ret) {
return (ret);
}
(void) printf("\tPCR %u:\t", i);
if (ret) {
return (ret);
}
}
return (0);
}
/*ARGSUSED*/
int
{
return (ERR_FAIL);
} else {
}
return (0);
}
/*
* Key Information
*/
typedef struct {
char *str;
} decode_map_t;
decode_map_t key_usage[] = {
{ TSS_KEYUSAGE_SIGN, "Signing" },
{ TSS_KEYUSAGE_STORAGE, "Storage" },
{ TSS_KEYUSAGE_IDENTITY, "Identity" },
{ TSS_KEYUSAGE_AUTHCHANGE, "Authchange" },
{ TSS_KEYUSAGE_BIND, "Bind" },
{ TSS_KEYUSAGE_LEGACY, "Legacy" },
{ TSS_KEYUSAGE_MIGRATE, "Migrate" },
{ 0, NULL },
};
decode_map_t key_algorithm[] = {
{ TSS_ALG_RSA, "RSA" },
{ TSS_ALG_DES, "DES" },
{ TSS_ALG_3DES, "3-DES" },
{ TSS_ALG_SHA, "SHA" },
{ TSS_ALG_HMAC, "HMAC" },
{ TSS_ALG_AES, "AES" },
{ TSS_ALG_MGF1, "MGF1" },
{ TSS_ALG_AES192, "AES192" },
{ TSS_ALG_AES256, "AES256" },
{ TSS_ALG_XOR, "XOR" },
{ 0, NULL },
};
decode_map_t key_sigscheme[] = {
{ TSS_SS_NONE, "None" },
{ TSS_SS_RSASSAPKCS1V15_SHA1, "RSASSAPKCS1v15_SHA1" },
{ TSS_SS_RSASSAPKCS1V15_DER, "RSASSAPKCS1v15_DER" },
{ 0, NULL },
};
decode_map_t key_encscheme[] = {
{ TSS_ES_NONE, "None" },
{ TSS_ES_RSAESPKCSV15, "RSAESPKCSv15" },
{ TSS_ES_RSAESOAEP_SHA1_MGF1, "RSAESOAEP_SHA1_MGF1" },
{ TSS_ES_SYM_CNT, "SYM_CNT" },
{ TSS_ES_SYM_OFB, "SYM_OFB" },
{ 0, NULL },
};
static char *
{
static char buf[20];
int i;
}
return (buf);
}
static void
{
/* Key size */
if (ret) {
}
/* Key usage */
if (ret) {
}
/* Algorithm */
if (ret) {
}
/* Authorization required */
if (ret) {
}
/* Signature scheme */
if (ret) {
}
/* Encoding scheme */
if (ret) {
}
/* Key blob */
if (ret) {
}
if (ret) {
}
}
typedef struct hash_node {
} hash_node_t;
#define HASHSIZE 17
static hash_node_t *
{
char *cp;
for (i = 0; i < sizeof (TSS_UUID); i++)
break;
}
}
return (node);
}
static void
{
return;
}
}
static void
{
"USER" : "SYSTEM";
}
/*ARGSUSED*/
int
{
union {
} uuid;
switch (argc) {
case 1:
/* Print key hierarchy */
if (ret) {
return (ERR_FAIL);
}
for (i = 0; i < num_keys; i++) {
sizeof (TSS_UUID)) == 0)
}
if (ret) {
return (ERR_FAIL);
}
return (0);
case 2:
/* Print detailed info about a single key */
return (ERR_FAIL);
}
if (ret) {
return (ERR_FAIL);
}
return (0);
default:
return (ERR_USAGE);
}
}
/*ARGSUSED*/
int
{
union {
} uuid;
if (argc < 2) {
return (ERR_USAGE);
}
return (ERR_FAIL);
}
if (ret) {
return (ERR_FAIL);
}
return (0);
}
/*
* Clear
*/
static int
{
return (ERR_FAIL);
if (ret) {
return (ERR_FAIL);
}
return (0);
}
static int
{
return (ERR_FAIL);
if (ret) {
return (ERR_FAIL);
}
return (0);
}
/*ARGSUSED*/
int
{
return (clearowner(hTPM));
} else {
return (ERR_USAGE);
}
}
/*
* TPM initialization
*/
static int
{
if (fd == -1) {
return (-1);
}
buf = randomBytes;
while (size > 0) {
if (len <= 0) {
return (-1);
}
}
return (0);
}
static int
{
/* Create the empty key struct for EK */
&hKeyEK);
if (ret) {
return (ERR_FAIL);
}
if (ret)
return (ERR_FAIL);
if (ret) {
return (ERR_FAIL);
}
return (0);
}
/*ARGSUSED*/
int
{
return (ERR_FAIL);
if (ret) {
return (ERR_FAIL);
}
sizeof (well_known), well_known))
return (ERR_FAIL);
if (ret == TPM_E_NO_ENDORSEMENT) {
return (ERR_FAIL);
}
if (ret) {
return (ERR_FAIL);
}
return (0);
}
/*
* Auth
*/
/*ARGSUSED*/
int
{
return (ERR_FAIL);
/* new policy object */
if (ret) {
return (ERR_FAIL);
}
0, NULL);
if (ret) {
return (ERR_FAIL);
}
if (ret) {
return (ERR_FAIL);
}
return (0);
}