tpm test

我的系统是fc8,内核升级2.6.30(它集成了tpm驱动),安装的软件是trousers,tpm-tools.

装好以后,

# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
#tcsd

#tpm_version

可以查看tpm版本号。

也可以通过安装tpmmanger来查看24个PCR值.

 

 为了测试一下接口,写了以下程序test.c来验证:

TPM 测试程序:

 

#include <stdio.h>
#include <fcntl.h>
#include "../include/trousers/tss.h"
#define TPMMAX 4096
int TPM_Transmit(unsigned char * blob){
  unsigned int tpmfp, len;
  int i, size;
  tpmfp = open("/dev/tpm0", O_RDWR);
  if(tpmfp < 0){
    printf("could not open /dev/tpm0/n");
    exit(-1);
    };

  size = ntohl (*(int *)&blob[2]);
  len = write(tpmfp, blob, size);
  len = read(tpmfp, blob,TPMMAX);
  for(i = 0; i< len; i++) {
    printf("%02x ", blob[i]); 
    }
  printf("/n");
  close(tpmfp);
  return len;
}
int TPM_Reset() {
  unsigned char blob[TPMMAX] = {
         0,  193,     /* TPM_TAG_RQU_COMMAND */
         0,  0,  0,  10, 0,   /* length */
         0, 0, 90  /* TPM_ORD_Reset */
  };
 return (TPM_Transmit(blob));
}
int TPM_PcrRead(int pcrindex){
  unsigned char blob[TPMMAX] = {
    0, 193,            /* TPM_TAG_RQU_COMMAND */
    0, 0, 0, 14,        /* length */
    0, 0, 0, 21,        /* TPM_ORD_PcrRead */
    0, 0, 0, pcrindex    /* PCR index */
  };
 
  return (TPM_Transmit(blob));
 }
int TPM_Extend(int pcrindex){
  unsigned char blob[TPMMAX] = {
    0, 193,            /* TPM_TAG_RQU_COMMAND */
     0, 0, 0, 34,        /* length */
     0, 0, 0, 20,        /* TPM_ORD_Extend */
     0, 0, 0, pcrindex    ,/* PCR index */
    0,  0,  0, 0, 0,  0,  0, 0, 0,  0,  0, 0, 0,  0,  0, 0, 0,  0,  0, 1 /* data*/
  };
  return (TPM_Transmit(blob));
}
int TPM_SHA1Start(){
  unsigned char blob[TPMMAX] = {
    0, 193,            /* TPM_TAG_RQU_COMMAND */
     0, 0, 0, 10,        /* length */
     0, 0, 0, 160,        /* TPM_ORD_SHA1Start */
  };
  return (TPM_Transmit(blob));
}
int TPM_SHA1Complete(){
  unsigned char blob[TPMMAX] = {
    0, 193,            /* TPM_TAG_RQU_COMMAND */
     0, 0, 0, 15,        /* length */
     0, 0, 0, 162,        /* TPM_ORD_SHA1Start */
    0, 0, 0, 1,  /* Hashdatasize */
    1 /* Hashdata */
  };
  return (TPM_Transmit(blob));
}
int main(){
  TPM_PcrRead(0);
  TPM_Extend(0);
  TPM_Reset();
  TPM_SHA1Start();
  TPM_SHA1Complete();
}

 

#gcc -o test test.c

#./test

出现错误: Device or Resource busy

#fuser /dev/tpm0

发现有个进程在用它,

#kill ~

OK

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值