int Device::getProcessingFBMixerSingleCurrent(int id, int iPlugNum, int iAChNum, int oAChNum) { AVC::FunctionBlockCmd fbCmd(get1394Service(), AVC::FunctionBlockCmd::eFBT_Processing, id, AVC::FunctionBlockCmd::eCA_Current); fbCmd.setNodeId(getNodeId()); fbCmd.setSubunitId(0x00); fbCmd.setCommandType(AVCCommand::eCT_Status); fbCmd.setVerboseLevel( getDebugLevel() ); AVC::FunctionBlockProcessing *fbp = fbCmd.m_pFBProcessing; fbp->m_selectorLength = 0x04; fbp->m_fbInputPlugNumber = iPlugNum; fbp->m_inputAudioChannelNumber = iAChNum; fbp->m_outputAudioChannelNumber = oAChNum; // mixer object is not generated automatically fbp->m_pMixer = new AVC::FunctionBlockProcessingMixer; if ( !fbCmd.fire() ) { debugError( "cmd failed\n" ); return 0; } if( (fbCmd.getResponse() != AVCCommand::eR_Implemented) ) { debugWarning("fbCmd.getResponse() != AVCCommand::eR_Implemented\n"); } int16_t setting = (int16_t)(fbp->m_pMixer->m_mixerSetting); return setting; }
bool Device::setFeatureFBLRBalanceCurrent(int id, int channel, int v) { FunctionBlockCmd fbCmd( get1394Service(), FunctionBlockCmd::eFBT_Feature, id, FunctionBlockCmd::eCA_Current ); fbCmd.setNodeId( getNodeId() ); fbCmd.setSubunitId( 0x00 ); fbCmd.setCommandType( AVCCommand::eCT_Control ); fbCmd.m_pFBFeature->m_audioChannelNumber = channel; fbCmd.m_pFBFeature->m_controlSelector = FunctionBlockFeature::eCSE_Feature_LRBalance; AVC::FunctionBlockFeatureLRBalance bl; fbCmd.m_pFBFeature->m_pLRBalance = bl.clone(); fbCmd.m_pFBFeature->m_pLRBalance->m_lrBalance = v; fbCmd.setVerboseLevel( getDebugLevel() ); if ( !fbCmd.fire() ) { debugError( "cmd failed\n" ); return false; } // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { // Util::Cmd::CoutSerializer se; // fbCmd.serialize( se ); // } if((fbCmd.getResponse() != AVCCommand::eR_Accepted)) { debugWarning("fbCmd.getResponse() != AVCCommand::eR_Accepted\n"); } return (fbCmd.getResponse() == AVCCommand::eR_Accepted); }
int Device::getFeatureFBLRBalanceValue(int id, int channel, FunctionBlockCmd::EControlAttribute controlAttribute) { FunctionBlockCmd fbCmd( get1394Service(), FunctionBlockCmd::eFBT_Feature, id, controlAttribute); fbCmd.setNodeId( getNodeId() ); fbCmd.setSubunitId( 0x00 ); fbCmd.setCommandType( AVCCommand::eCT_Status ); fbCmd.m_pFBFeature->m_audioChannelNumber = channel; fbCmd.m_pFBFeature->m_controlSelector = FunctionBlockFeature::eCSE_Feature_LRBalance; AVC::FunctionBlockFeatureLRBalance bl; fbCmd.m_pFBFeature->m_pLRBalance = bl.clone(); fbCmd.m_pFBFeature->m_pLRBalance->m_lrBalance = 0; fbCmd.setVerboseLevel( getDebugLevel() ); if ( !fbCmd.fire() ) { debugError( "cmd failed\n" ); return 0; } // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { // Util::Cmd::CoutSerializer se; // fbCmd.serialize( se ); // } if((fbCmd.getResponse() != AVCCommand::eR_Implemented)) { debugWarning("fbCmd.getResponse() != AVCCommand::eR_Implemented\n"); } int16_t balance=(int16_t)(fbCmd.m_pFBFeature->m_pLRBalance->m_lrBalance); return balance; }
uint8_t Device::getConfigurationIdSampleRate() { ExtendedStreamFormatCmd extStreamFormatCmd( get1394Service() ); UnitPlugAddress unitPlugAddress( UnitPlugAddress::ePT_PCR, 0 ); extStreamFormatCmd.setPlugAddress( PlugAddress( PlugAddress::ePD_Input, PlugAddress::ePAM_Unit, unitPlugAddress ) ); extStreamFormatCmd.setNodeId( getNodeId() ); extStreamFormatCmd.setCommandType( AVCCommand::eCT_Status ); extStreamFormatCmd.setVerbose( getDebugLevel() ); if ( !extStreamFormatCmd.fire() ) { debugError( "Stream format command failed\n" ); return 0; } FormatInformation* formatInfo = extStreamFormatCmd.getFormatInformation(); FormatInformationStreamsCompound* compoundStream = dynamic_cast< FormatInformationStreamsCompound* > ( formatInfo->m_streams ); if ( compoundStream ) { debugOutput(DEBUG_LEVEL_VERBOSE, "Sample rate 0x%02x\n", compoundStream->m_samplingFrequency ); return compoundStream->m_samplingFrequency; } debugError( "Could not retrieve sample rate\n" ); return 0; }
int Device::getSelectorFBValue(int id) { FunctionBlockCmd fbCmd( get1394Service(), FunctionBlockCmd::eFBT_Selector, id, FunctionBlockCmd::eCA_Current ); fbCmd.setNodeId( getNodeId() ); fbCmd.setSubunitId( 0x00 ); fbCmd.setCommandType( AVCCommand::eCT_Status ); fbCmd.m_pFBSelector->m_inputFbPlugNumber = 0xFF; fbCmd.setVerboseLevel( getDebugLevel() ); if ( !fbCmd.fire() ) { debugError( "cmd failed\n" ); return -1; } // if ( getDebugLevel() >= DEBUG_LEVEL_NORMAL ) { // Util::Cmd::CoutSerializer se; // fbCmd.serialize( se ); // } if((fbCmd.getResponse() != AVCCommand::eR_Implemented)) { debugWarning("fbCmd.getResponse() != AVCCommand::eR_Implemented\n"); } return fbCmd.m_pFBSelector->m_inputFbPlugNumber; }
uint8_t Device::getConfigurationIdNumberOfChannel( PlugAddress::EPlugDirection ePlugDirection ) { ExtendedPlugInfoCmd extPlugInfoCmd( get1394Service() ); UnitPlugAddress unitPlugAddress( UnitPlugAddress::ePT_PCR, 0 ); extPlugInfoCmd.setPlugAddress( PlugAddress( ePlugDirection, PlugAddress::ePAM_Unit, unitPlugAddress ) ); extPlugInfoCmd.setNodeId( getNodeId() ); extPlugInfoCmd.setCommandType( AVCCommand::eCT_Status ); extPlugInfoCmd.setVerbose( getDebugLevel() ); ExtendedPlugInfoInfoType extendedPlugInfoInfoType( ExtendedPlugInfoInfoType::eIT_NoOfChannels ); extendedPlugInfoInfoType.initialize(); extPlugInfoCmd.setInfoType( extendedPlugInfoInfoType ); if ( !extPlugInfoCmd.fire() ) { debugError( "Number of channels command failed\n" ); return 0; } ExtendedPlugInfoInfoType* infoType = extPlugInfoCmd.getInfoType(); if ( infoType && infoType->m_plugNrOfChns ) { debugOutput(DEBUG_LEVEL_VERBOSE, "Number of channels 0x%02x\n", infoType->m_plugNrOfChns->m_nrOfChannels ); return infoType->m_plugNrOfChns->m_nrOfChannels; } debugError( "Could not retrieve number of channels\n" ); return 0; }
bool Device::setActiveClockSource(ClockSource s) { AVC::SignalSourceCmd cmd(get1394Service()); cmd.setCommandType(AVC::AVCCommand::eCT_Control); cmd.setNodeId(getNodeId()); cmd.setSubunitType(AVC::eST_Unit); cmd.setSubunitId(0xff); cmd.setVerbose(getDebugLevel()); AVC::SignalSubunitAddress dst; dst.m_subunitType = AVC::eST_Music; dst.m_subunitId = 0x00; dst.m_plugId = 0x05; cmd.setSignalDestination(dst); if (s.id == 0x00) { AVC::SignalSubunitAddress src; src.m_subunitType = AVC::eST_Music; src.m_subunitId = 0x00; src.m_plugId = 0x06; cmd.setSignalSource( src ); } else { AVC::SignalUnitAddress src; src.m_plugId = 0x83; cmd.setSignalSource(src); } if (!cmd.fire()) { debugError( "Signal source command failed\n" ); return false; } return true; }
void FFADODevice::handleBusReset() { debugOutput( DEBUG_LEVEL_VERBOSE, "Handle bus reset...\n"); // update the config rom node id sleep(1); Util::MutexLockHelper lock(m_DeviceMutex); getConfigRom().setVerboseLevel(getDebugLevel()); getConfigRom().updatedNodeId(); }
bool Device::buildMixer() { debugOutput(DEBUG_LEVEL_VERBOSE, "Building a maudio special mixer...\n"); delete m_special_mixer; m_special_mixer = new Mixer(*this); if (m_special_mixer) m_special_mixer->setVerboseLevel(getDebugLevel()); return (m_special_mixer != NULL); }
bool Device::loadFromCache() { std::string sDevicePath = getCachePath() + getConfigRom().getGuidString(); char* configId; asprintf(&configId, "%016"PRIx64"", getConfigurationId() ); if ( !configId ) { debugError( "could not create id string\n" ); return false; } std::string sFileName = sDevicePath + "/" + configId + ".xml"; free( configId ); debugOutput( DEBUG_LEVEL_NORMAL, "filename %s\n", sFileName.c_str() ); struct stat buf; if ( stat( sFileName.c_str(), &buf ) != 0 ) { debugOutput( DEBUG_LEVEL_NORMAL, "\"%s\" does not exist\n", sFileName.c_str() ); return false; } else { if ( !S_ISREG( buf.st_mode ) ) { debugOutput( DEBUG_LEVEL_NORMAL, "\"%s\" is not a regular file\n", sFileName.c_str() ); return false; } } Util::XMLDeserialize deser( sFileName, getDebugLevel() ); if (!deser.isValid()) { debugOutput( DEBUG_LEVEL_NORMAL, "cache not valid: %s\n", sFileName.c_str() ); return false; } bool result = deserialize( "", deser ); if ( result ) { debugOutput( DEBUG_LEVEL_NORMAL, "could create valid bebob driver from %s\n", sFileName.c_str() ); } if(result) { buildMixer(); } return result; }
uint16_t Device::getConfigurationIdSyncMode() { SignalSourceCmd signalSourceCmd( get1394Service() ); SignalUnitAddress signalUnitAddr; signalUnitAddr.m_plugId = 0x01; signalSourceCmd.setSignalDestination( signalUnitAddr ); signalSourceCmd.setNodeId( getNodeId() ); signalSourceCmd.setSubunitType( eST_Unit ); signalSourceCmd.setSubunitId( 0xff ); signalSourceCmd.setVerbose( getDebugLevel() ); signalSourceCmd.setCommandType( AVCCommand::eCT_Status ); if ( !signalSourceCmd.fire() ) { debugError( "Signal source command failed\n" ); return 0; } SignalAddress* pSyncPlugSignalAddress = signalSourceCmd.getSignalSource(); SignalSubunitAddress* pSyncPlugSubunitAddress = dynamic_cast<SignalSubunitAddress*>( pSyncPlugSignalAddress ); if ( pSyncPlugSubunitAddress ) { debugOutput(DEBUG_LEVEL_VERBOSE, "Sync mode 0x%02x\n", ( pSyncPlugSubunitAddress->m_subunitType << 3 | pSyncPlugSubunitAddress->m_subunitId ) << 8 | pSyncPlugSubunitAddress->m_plugId ); return ( pSyncPlugSubunitAddress->m_subunitType << 3 | pSyncPlugSubunitAddress->m_subunitId ) << 8 | pSyncPlugSubunitAddress->m_plugId; } SignalUnitAddress* pSyncPlugUnitAddress = dynamic_cast<SignalUnitAddress*>( pSyncPlugSignalAddress ); if ( pSyncPlugUnitAddress ) { debugOutput(DEBUG_LEVEL_VERBOSE, "Sync mode 0x%02x\n", 0xff << 8 | pSyncPlugUnitAddress->m_plugId ); return ( 0xff << 8 | pSyncPlugUnitAddress->m_plugId ); } debugError( "Could not retrieve sync mode\n" ); return 0; }
/** * * @param port * @return */ bool PortManager::registerPort(Port *port) { assert(port); debugOutput( DEBUG_LEVEL_VERBOSE, "Adding port %s, type: %d, dir: %d\n", port->getName().c_str(), port->getPortType(), port->getDirection()); port->setVerboseLevel(getDebugLevel()); if (makeNameUnique(port)) { m_Ports.push_back(port); callUpdateHandlers(); return true; } else { return false; } }
enum FFADODevice::eClockSourceType Device::getClkSrc() { AVC::SignalSourceCmd cmd(get1394Service()); cmd.setCommandType(AVC::AVCCommand::eCT_Status); cmd.setNodeId(getNodeId()); cmd.setSubunitType(AVC::eST_Unit); cmd.setSubunitId(0xff); cmd.setVerbose(getDebugLevel()); AVC::SignalSubunitAddress dst; dst.m_subunitType = AVC::eST_Music; dst.m_subunitId = 0x00; dst.m_plugId = 0x05; cmd.setSignalDestination(dst); if (!cmd.fire()) { debugError( "Signal source command failed\n" ); return eCT_Invalid; } AVC::SignalAddress* pSyncPlugSignalAddress = cmd.getSignalSource(); AVC::SignalSubunitAddress* pSyncPlugSubunitAddress = dynamic_cast<AVC::SignalSubunitAddress*>( pSyncPlugSignalAddress ); if (pSyncPlugSubunitAddress) { debugOutput(DEBUG_LEVEL_VERBOSE, "Sync mode 0x%02x\n", ( pSyncPlugSubunitAddress->m_subunitType << 3 | pSyncPlugSubunitAddress->m_subunitId ) << 8 | pSyncPlugSubunitAddress->m_plugId ); return eCT_Internal; } AVC::SignalUnitAddress* pSyncPlugUnitAddress = dynamic_cast<AVC::SignalUnitAddress*>( pSyncPlugSignalAddress ); if (pSyncPlugUnitAddress) { debugOutput(DEBUG_LEVEL_VERBOSE, "Sync mode 0x%02x\n", 0xff << 8 | pSyncPlugUnitAddress->m_plugId ); return eCT_SPDIF; } debugError( "Could not retrieve sync mode\n" ); return eCT_Invalid; }
bool Device::buildMixer() { debugOutput(DEBUG_LEVEL_VERBOSE, "Building a generic BeBoB mixer...\n"); // create a Mixer // this removes the mixer if it already exists // note: a mixer self-registers to it's parent delete m_Mixer; // create the mixer & register it if(getAudioSubunit(0) == NULL) { debugWarning("Could not find audio subunit, mixer not available.\n"); m_Mixer = NULL; } else { m_Mixer = new Mixer(*this); } if (m_Mixer) m_Mixer->setVerboseLevel(getDebugLevel()); return m_Mixer != NULL; }
AVC::Subunit* Device::createSubunit(AVC::Unit& unit, AVC::ESubunitType type, AVC::subunit_t id ) { AVC::Subunit* s=NULL; switch (type) { case eST_Audio: s=new BeBoB::SubunitAudio(unit, id ); break; case eST_Music: s=new BeBoB::SubunitMusic(unit, id ); break; default: s=NULL; break; } if(s) s->setVerboseLevel(getDebugLevel()); return s; }
// The AV/C methods to set parameters bool FocusriteDevice::setSpecificValueAvc(uint32_t id, uint32_t v) { FocusriteVendorDependentCmd cmd( get1394Service() ); cmd.setCommandType( AVC::AVCCommand::eCT_Control ); cmd.setNodeId( getConfigRom().getNodeId() ); cmd.setSubunitType( AVC::eST_Unit ); cmd.setSubunitId( 0xff ); cmd.setVerbose( getDebugLevel() ); // cmd.setVerbose( DEBUG_LEVEL_VERY_VERBOSE ); cmd.m_id=id; cmd.m_value=v; if ( !cmd.fire() ) { debugError( "FocusriteVendorDependentCmd info command failed\n" ); return false; } return true; }
AVC::Plug * Device::createPlug( AVC::Unit* unit, AVC::Subunit* subunit, AVC::function_block_type_t functionBlockType, AVC::function_block_type_t functionBlockId, AVC::Plug::EPlugAddressType plugAddressType, AVC::Plug::EPlugDirection plugDirection, AVC::plug_id_t plugId, int globalId ) { Plug *p= new BeBoB::Plug( unit, subunit, functionBlockType, functionBlockId, plugAddressType, plugDirection, plugId, globalId ); if (p) p->setVerboseLevel(getDebugLevel()); return p; }
int main(int argc, char *argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvk:c:P:l:q:g:o:Xp:d:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"akHandle",1,NULL,'k'}, {"akContext",1,NULL,'c'}, {"akPassword",1,NULL,'P'}, //add ak auth {"idList",1,NULL,'l'}, {"algorithm",1,NULL,'g'}, {"qualifiedData",1,NULL,'q'}, {"outFile",1,NULL,'o'}, {"passwdInHex",0,NULL,'X'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {0,0,0,0} }; char *contextFilePath = NULL; TPM_HANDLE akHandle; TPMI_ALG_HASH algorithmId; PCR_LIST pcrList; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, k_flag = 0, c_flag = 0, P_flag = 0, l_flag = 0, g_flag = 0, q_flag = 0, o_flag = 0; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'k': if(getSizeUint32Hex(optarg,&akHandle) != 0) { showArgError(optarg, argv[0]); returnVal = -1; break; } k_flag = 1; break; case 'c': contextFilePath = optarg; if(contextFilePath == NULL || contextFilePath[0] == '\0') { returnVal = -2; break; } printf("contextFile = %s\n", contextFilePath); c_flag = 1; break; case 'P': sessionData.hmac.t.size = sizeof(sessionData.hmac.t) - 2; if(str2ByteStructure(optarg,&sessionData.hmac.t.size,sessionData.hmac.t.buffer) != 0) { returnVal = -3; break; } P_flag = 1; break; case 'l': if(parseList(optarg, &pcrList) != 0) { returnVal = -4; break; } l_flag = 1; break; case 'g': if(getSizeUint16Hex(optarg,&algorithmId) != 0) { showArgError(optarg, argv[0]); returnVal = -5; break; } g_flag = 1; break; case 'q': qualifedData.t.size = sizeof(qualifedData.t.buffer); if(loadDataFromFile(optarg, qualifedData.t.buffer, &qualifedData.t.size) != 0) { returnVal = -6; break; } q_flag = 1; break; case 'o': safeStrNCpy(outFilePath, optarg, sizeof(outFilePath)); if(checkOutFile(outFilePath) != 0) { returnVal = -7; break; } o_flag = 1; break; case 'X': hexPasswd = true; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -8; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -9; } break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -10; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -11; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag + k_flag + c_flag + l_flag + g_flag + o_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -12; } } else if(flagCnt == 4 && ((k_flag || c_flag) && l_flag && g_flag && o_flag)) { if(P_flag == 0) sessionData.hmac.t.size = 0; prepareTest(hostName, port, debugLevel); if(c_flag) returnVal = loadTpmContextFromFile(sysContext, &akHandle, contextFilePath); if(returnVal == TPM_RC_SUCCESS) returnVal = quote(akHandle, pcrList, algorithmId); finishTest(); if(returnVal) return -13; } else { showArgMismatch(argv[0]); return -13; } return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; TPMI_RH_HIERARCHY hierarchyValue; TPM2B_PUBLIC inPublic; TPM2B_SENSITIVE inPrivate; UINT16 size; memset(&inPublic,0,sizeof(TPM2B_PUBLIC)); memset(&inPrivate,0,sizeof(TPM2B_SENSITIVE)); setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvH:u:r:p:d:C:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"Hierachy",1,NULL,'H'}, {"pubfile",1,NULL,'u'}, {"privfile",1,NULL,'r'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {"context",1,NULL,'C'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, H_flag = 0, u_flag = 0, C_flag = 0, r_flag = 0; char *contextFile = NULL; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'H': if(getHierarchyValue(optarg,&hierarchyValue) != 0) { returnVal = -1; break; } printf("\nhierarchyValue: 0x%x\n\n",hierarchyValue); H_flag = 1; break; case 'u': size = sizeof(inPublic); if(loadDataFromFile(optarg, (UINT8 *)&inPublic, &size) != 0) { returnVal = -2; break; } u_flag = 1; break; case 'r': size = sizeof(inPrivate); if(loadDataFromFile(optarg, (UINT8 *)&inPrivate, &size) != 0) { returnVal = -3; break; } r_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -4; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -5; } break; case 'C': contextFile = optarg; if(contextFile == NULL || contextFile[0] == '\0') { returnVal = -6; break; } printf("contextFile = %s\n", contextFile); C_flag = 1; break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -7; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -8; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag + H_flag + u_flag ; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -9; } } else if(flagCnt == 2 && H_flag == 1 && u_flag == 1) { prepareTest(hostName, port, debugLevel); returnVal = loadExternal(hierarchyValue, &inPublic, &inPrivate, r_flag); if(returnVal == 0 && C_flag) returnVal = saveTpmContextToFile(sysContext, handle2048rsa, contextFile); finishTest(); if(returnVal) return -10; } else { showArgMismatch(argv[0]); return -11; } return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; TPMI_DH_OBJECT keyHandle; TPM2B_PUBLIC_KEY_RSA cipherText; char outFilePath[PATH_MAX] = {0}; char *contextKeyFile = NULL; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvk:P:I:o:p:d:c:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"keyHandle",1,NULL,'k'}, {"pwdk",1,NULL,'P'}, {"inFile",1,NULL,'I'}, {"outFile",1,NULL,'o'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {"keyContext",1,NULL,'c'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, k_flag = 0, P_flag = 0, I_flag = 0, c_flag = 0, o_flag = 0; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'k': if(getSizeUint32Hex(optarg,&keyHandle) != 0) { returnVal = -1; break; } k_flag = 1; break; case 'P': sessionData.hmac.t.size = sizeof(sessionData.hmac.t) - 2; if(str2ByteStructure(optarg,&sessionData.hmac.t.size,sessionData.hmac.t.buffer) != 0) { returnVal = -2; break; } P_flag = 1; break; case 'I': cipherText.t.size = sizeof(cipherText) - 2; if(loadDataFromFile(optarg, cipherText.t.buffer, &cipherText.t.size) != 0) { returnVal = -3; break; } I_flag = 1; break; case 'o': safeStrNCpy(outFilePath, optarg, sizeof(outFilePath)); if(checkOutFile(outFilePath) != 0) { returnVal = -4; break; } o_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -5; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -6; } break; case 'c': contextKeyFile = optarg; if(contextKeyFile == NULL || contextKeyFile[0] == '\0') { returnVal = -7; break; } printf("contextKeyFile = %s\n", contextKeyFile); c_flag = 1; break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -8; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -9; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; if(P_flag == 0) sessionData.hmac.t.size = 0; flagCnt = h_flag + v_flag + k_flag + I_flag + o_flag + c_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -10; } } else if((flagCnt == 3) && (k_flag == 1 || c_flag == 1) && (I_flag == 1) && (o_flag == 1)) { prepareTest(hostName, port, debugLevel); if(c_flag) returnVal = loadTpmContextFromFile(sysContext, &keyHandle, contextKeyFile); if(returnVal == 0) returnVal = rsaDecrypt(keyHandle, &cipherText, outFilePath); finishTest(); if(returnVal) return -11; } else { showArgMismatch(argv[0]); return -12; } return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; //DEFAULT_TPM_PORT; TPMI_RH_PROVISION auth = TPM_RH_NULL; TPMI_DH_OBJECT objectHandle; TPMI_DH_OBJECT persistentHandle; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvA:H:S:P:p:d:c:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"auth",1,NULL,'A'}, {"handle",1,NULL,'H'}, {"persistent",1,NULL,'S'}, {"pwda",1,NULL,'P'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {"context",1,NULL,'c'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, A_flag = 0, H_flag = 0, S_flag = 0, c_flag = 0, P_flag = 0; char *contextFile = NULL; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'A': if(strcmp(optarg,"o") == 0 || strcmp(optarg,"O") == 0) auth = TPM_RH_OWNER; else if(strcmp(optarg,"p") == 0 || strcmp(optarg,"P") == 0) auth = TPM_RH_PLATFORM; else { printf("ERROR: auth '%s' not supported!\n", optarg); returnVal = -1; break; } A_flag = 1; break; case 'H': if(getSizeUint32Hex(optarg, &objectHandle) != 0) { returnVal = -2; break; } printf("\nobjectHandle: 0x%x\n\n",objectHandle); H_flag = 1; break; case 'S': if(getSizeUint32Hex(optarg, &persistentHandle) != 0) { returnVal = -3; break; } printf("\npersistentHandle: 0x%x\n\n",persistentHandle); S_flag = 1; break; case 'P': if( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the authenticating password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA)-1); returnVal = -4; break; } if( strlen(optarg) > 0 ) { sessionData.hmac.t.size = strlen(optarg); safeStrNCpy( (char *)&sessionData.hmac.t.buffer[0], optarg, sizeof(sessionData.hmac.t.buffer) ); } P_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -5; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -6; } break; case 'c': contextFile = optarg; if(contextFile == NULL || contextFile[0] == '\0') { returnVal = -7; break; } printf("contextFile = %s\n", contextFile); c_flag = 1; break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -8; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -9; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag + A_flag + H_flag + S_flag + c_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -10; } } else if(flagCnt == 3 && A_flag == 1 && (H_flag == 1 || c_flag) && S_flag == 1) { prepareTest(hostName, port, debugLevel); if(c_flag) returnVal = loadTpmContextFromFile(sysContext, &objectHandle, contextFile); if (returnVal == 0) returnVal = evictControl(auth, objectHandle, persistentHandle, P_flag); finishTest(); if(returnVal) return -11; } else { showArgMismatch(argv[0]); return -12; } return 0; }
int main(int argc, char *argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; int opt; int returnVal = 1; int ProvisioningreturnVal = 0; struct option sOpts[] = { { "endorsePasswd", required_argument, NULL, 'e' }, { "ownerPasswd" , required_argument, NULL, 'o' }, { "handle" , required_argument, NULL, 'H' }, { "ekPasswd" , required_argument, NULL, 'P' }, { "alg" , required_argument, NULL, 'g' }, { "file" , required_argument, NULL, 'f' }, { "passwdInHex" , no_argument, NULL, 'X' }, { "port" , required_argument, NULL, 'p' }, { "dbg" , required_argument, NULL, 'd' }, { "help" , no_argument, NULL, 'h' }, { "version" , no_argument, NULL, 'v' }, { "NonPersistent", no_argument, NULL, 'N' }, { "OfflineProv" , no_argument, NULL, 'O' }, { "ECcertFile" , required_argument, NULL, 'E' }, { "EKserverAddr" , required_argument, NULL, 'S' }, { "SSL_NO_VERIFY", no_argument, NULL, 'U' }, { NULL , no_argument, NULL, 0 }, }; if (argc == 1) { showHelp(argv[0]); return 0; } if ( argc > (int)(2 * sizeof(sOpts) / sizeof(struct option)) ) { showArgMismatch(argv[0]); return -1; } while ( ( opt = getopt_long( argc, argv, "e:o:H:P:g:f:Xp:d:S:E:OUNhv", sOpts, NULL ) ) != -1 ) { switch ( opt ) { case 'h': case '?': showHelp(argv[0]); return 0; case 'v': showVersion(argv[0]); return 0; case 'H': if ( getSizeUint32Hex(optarg, &persistentHandle) ) { printf("\nPlease input the handle used to make EK persistent(hex) in correct format.\n"); return -2; } break; case 'e': if ( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the endorsement password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA) - 1); return -3; } safeStrNCpy(endorsePasswd, optarg, sizeof(endorsePasswd)); break; case 'o': if ( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the owner password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA) - 1); return -4; } safeStrNCpy(ownerPasswd, optarg, sizeof(ownerPasswd)); break; case 'P': if ( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the EK password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA) - 1); return -5; } safeStrNCpy(ekPasswd, optarg, sizeof(ekPasswd)); break; case 'g': if ( getSizeUint32Hex(optarg, &algorithmType) ) { printf("\nPlease input the algorithm type in correct format.\n"); return -6; } break; case 'f': if ( optarg == NULL ) { printf("\nPlease input the file used to save the pub ek.\n"); return -7; } safeStrNCpy(outputFile, optarg, sizeof(outputFile)); break; case 'X': hexPasswd = true; break; case 'p': if ( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); return -8; } break; case 'd': if ( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); return -9; } break; case 'E': if ( optarg == NULL ) { printf("\nPlease input the file used to save the EC Certificate retrieved from server\n"); return -99; } safeStrNCpy(ECcertFile, optarg, sizeof(ECcertFile)); break; case 'N': nonPersistentRead = 1; printf("Tss2_Sys_CreatePrimary called with Endorsement Handle without making it persistent\n"); break; case 'O': OfflineProv = 1; printf("Setting up for offline provisioning - reading the retrieved EK specified by the file \n"); break; case 'U': SSL_NO_VERIFY = 1; printf("CAUTION: TLS communication with the said TPM manufacturer server setup with SSL_NO_VERIFY!\n"); break; case 'S': if (optarg == NULL ) { printf("TPM Manufacturer Endorsement Credential Server Address cannot be NULL\n"); return -99; } EKserverAddr = (char *)malloc(strlen(optarg)); strncpy(EKserverAddr, optarg, strlen(optarg)); printf("TPM Manufacturer EK provisioning address -- %s\n", EKserverAddr); break; default: showHelp(argv[0]); return -10; } } prepareTest(hostName, port, debugLevel); if (!OfflineProv) returnVal = createEKHandle(); ProvisioningreturnVal = TPMinitialProvisioning(); finishTest(); if ( returnVal && ProvisioningreturnVal) return -11; return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; TPMI_DH_OBJECT keyHandle; BYTE *msg = NULL; UINT16 length = 0; UINT16 size = 0; long fileSize = 0; TPMT_TK_HASHCHECK validation; TPMI_ALG_HASH halg; char outFilePath[PATH_MAX] = {0}; char inMsgFileName[PATH_MAX] = {0}; char *contextKeyFile = NULL; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvk:P:g:m:t:s:p:d:c:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"keyHandle",1,NULL,'k'}, {"pwdk",1,NULL,'P'}, {"halg",1,NULL,'g'}, {"msg",1,NULL,'m'}, {"sig",1,NULL,'s'}, {"ticket",1,NULL,'t'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {"keyContext",1,NULL,'c'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, k_flag = 0, P_flag = 0, g_flag = 0, m_flag = 0, t_flag = 0, c_flag = 0, s_flag = 0; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'k': if(getSizeUint32Hex(optarg,&keyHandle) != 0) { returnVal = -1; break; } k_flag = 1; break; case 'P': sessionData.hmac.t.size = sizeof(sessionData.hmac.t) - 2; if(str2ByteStructure(optarg,&sessionData.hmac.t.size,sessionData.hmac.t.buffer) != 0) { returnVal = -2; break; } P_flag = 1; break; case 'g': if(getSizeUint16Hex(optarg,&halg) != 0) { showArgError(optarg, argv[0]); returnVal = -3; break; } printf("halg = 0x%4.4x\n", halg); g_flag = 1; break; case 'm': safeStrNCpy(inMsgFileName, optarg, sizeof(inMsgFileName)); m_flag = 1; break; case 't': size = sizeof(validation); if(loadDataFromFile(optarg, (UINT8 *)&validation, &size) != 0) { returnVal = -4; break; } t_flag = 1; break; case 's': safeStrNCpy(outFilePath, optarg, sizeof(outFilePath)); if(checkOutFile(outFilePath) != 0) { returnVal = -5; break; } s_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -6; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -7; } break; case 'c': contextKeyFile = optarg; if(contextKeyFile == NULL || contextKeyFile[0] == '\0') { returnVal = -8; break; } printf("contextKeyFile = %s\n", contextKeyFile); c_flag = 1; break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -9; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -10; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) goto end; if(m_flag) { if(getFileSize(inMsgFileName, &fileSize)) { returnVal = -11; goto end; } if(fileSize == 0) { printf("the message file is empty !\n"); returnVal = -12; goto end; } if(fileSize > 0xffff) { printf("the message file was too long !\n"); returnVal = -13; goto end; } msg = (BYTE*)malloc(fileSize); if(msg == NULL) { returnVal = -14; goto end; } memset(msg, 0, fileSize); length = fileSize; if(loadDataFromFile(inMsgFileName, msg, &length) != 0) { returnVal = -15; goto end; } #if 0 printf("\nmsg length: %d\n",length); printf("msg content: "); for(int i = 0; i < length; i++) { printf("%02x ", msg[i]); } printf("\n"); return -1; #endif } if(P_flag == 0) sessionData.hmac.t.size = 0; if(t_flag == 0) { validation.tag = TPM_ST_HASHCHECK; validation.hierarchy = TPM_RH_NULL; validation.digest.t.size = 0; } flagCnt = h_flag + v_flag + k_flag + g_flag + m_flag + s_flag + c_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); returnVal = -16; } } else if((flagCnt == 4) && (k_flag == 1 || c_flag == 1) && (g_flag == 1) && (m_flag == 1) && (s_flag == 1)) { prepareTest(hostName, port, debugLevel); if(c_flag) returnVal = loadTpmContextFromFile(sysContext, &keyHandle, contextKeyFile); if(returnVal == 0) returnVal = sign(keyHandle, halg, msg, length, &validation, outFilePath); finishTest(); if(returnVal) returnVal = -17; } else { showArgMismatch(argv[0]); returnVal = -18; } end: if(msg) free(msg); return returnVal; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; TPM2B_SENSITIVE_CREATE inSensitive; inSensitive.t.sensitive.data.t.size = 0; TPM2B_PUBLIC inPublic; TPMI_ALG_PUBLIC type; TPMI_ALG_HASH nameAlg; TPMI_DH_OBJECT parentHandle; UINT32 objectAttributes = 0; char opuFilePath[PATH_MAX] = {0}; char oprFilePath[PATH_MAX] = {0}; char *contextParentFilePath = NULL; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvH:P:K:g:G:A:I:L:o:O:p:d:c:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"parent",1,NULL,'H'}, {"pwdp",1,NULL,'P'}, {"pwdk",1,NULL,'K'}, {"halg",1,NULL,'g'}, {"kalg",1,NULL,'G'}, {"objectAttributes",1,NULL,'A'}, {"inFile",1,NULL,'I'}, {"policyFile",1,NULL,'L'}, {"opu",1,NULL,'o'}, {"opr",1,NULL,'O'}, {"contextParent",1,NULL,'c'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, H_flag = 0, P_flag = 0, K_flag = 0, g_flag = 0, G_flag = 0, A_flag = 0, I_flag = 0, L_flag = 0, o_flag = 0, c_flag = 0, O_flag = 0/*, f_flag = 0*/; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'H': if(getSizeUint32Hex(optarg,&parentHandle) != 0) { showArgError(optarg, argv[0]); returnVal = -1; break; } H_flag = 1; break; case 'P': sessionData.hmac.t.size = sizeof(sessionData.hmac.t) - 2; if(str2ByteStructure(optarg,&sessionData.hmac.t.size,sessionData.hmac.t.buffer) != 0) { returnVal = -2; break; } P_flag = 1; break; case 'K': inSensitive.t.sensitive.userAuth.t.size = sizeof(inSensitive.t.sensitive.userAuth.t) - 2; if(str2ByteStructure(optarg,&inSensitive.t.sensitive.userAuth.t.size, inSensitive.t.sensitive.userAuth.t.buffer) != 0) { returnVal = -3; break; } K_flag = 1; break; case 'g': if(getSizeUint16Hex(optarg,&nameAlg) != 0) { showArgError(optarg, argv[0]); returnVal = -4; break; } printf("nameAlg = 0x%4.4x\n", nameAlg); g_flag = 1; break; case 'G': if(getSizeUint16Hex(optarg,&type) != 0) { showArgError(optarg, argv[0]); returnVal = -5; break; } printf("type = 0x%4.4x\n", type); G_flag = 1; break; case 'A': if(getSizeUint32Hex(optarg,&objectAttributes) != 0) { showArgError(optarg, argv[0]); returnVal = -6; break; } A_flag = 1;//H_flag = 1; break; case 'I': inSensitive.t.sensitive.data.t.size = sizeof(inSensitive.t.sensitive.data) - 2; if(loadDataFromFile(optarg, inSensitive.t.sensitive.data.t.buffer, &inSensitive.t.sensitive.data.t.size) != 0) { returnVal = -7; break; } I_flag = 1; printf("inSensitive.t.sensitive.data.t.size = %d\n",inSensitive.t.sensitive.data.t.size); break; case 'L': inPublic.t.publicArea.authPolicy.t.size = sizeof(inPublic.t.publicArea.authPolicy) - 2; if(loadDataFromFile(optarg, inPublic.t.publicArea.authPolicy.t.buffer, &inPublic.t.publicArea.authPolicy.t.size) != 0) { returnVal = -8; break; } L_flag = 1; break; case 'o': safeStrNCpy(opuFilePath, optarg, sizeof(opuFilePath)); if(checkOutFile(opuFilePath) != 0) { returnVal = -9; break; } o_flag = 1; break; case 'O': safeStrNCpy(oprFilePath, optarg, sizeof(oprFilePath)); if(checkOutFile(oprFilePath) != 0) { returnVal = -10; break; } O_flag = 1; break; case 'c': contextParentFilePath = optarg; if(contextParentFilePath == NULL || contextParentFilePath[0] == '\0') { returnVal = -11; break; } printf("contextParentFile = %s\n", contextParentFilePath); c_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -12; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -13; } break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -14; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -15; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; if(P_flag == 0) sessionData.hmac.t.size = 0; if(I_flag == 0) inSensitive.t.sensitive.data.t.size = 0; if(K_flag == 0) inSensitive.t.sensitive.userAuth.t.size = 0; if(L_flag == 0) inPublic.t.publicArea.authPolicy.t.size = 0; *((UINT8 *)((void *)&sessionData.sessionAttributes)) = 0; flagCnt = h_flag + v_flag + H_flag + g_flag + G_flag + c_flag ; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -16; } } else if(flagCnt == 3 && (H_flag == 1 || c_flag == 1) && g_flag == 1 && G_flag == 1) { prepareTest(hostName, port, debugLevel); if(c_flag) returnVal = loadTpmContextFromFile(sysContext, &parentHandle, contextParentFilePath); if(returnVal == 0) returnVal = create(parentHandle, &inPublic, &inSensitive, type, nameAlg, opuFilePath, oprFilePath, o_flag, O_flag, I_flag, A_flag, objectAttributes); finishTest(); if(returnVal) return -17; } else { showArgMismatch(argv[0]); return -18; } return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; TPMI_RH_HIERARCHY hierarchyValue; TPM2B_MAX_BUFFER data; TPMI_ALG_HASH halg; char outHashFilePath[PATH_MAX] = {0}; char outTicketFilePath[PATH_MAX] = {0}; long fileSize = 0; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvH:g:I:o:t:p:d:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"Hierachy",1,NULL,'H'}, {"halg",1,NULL,'g'}, {"infile",1,NULL,'I'}, {"outfile",1,NULL,'o'}, {"ticket",1,NULL,'t'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, H_flag = 0, g_flag = 0, I_flag = 0, o_flag = 0, t_flag = 0; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'H': if(getHierarchyValue(optarg,&hierarchyValue) != 0) { returnVal = -1; break; } printf("\nhierarchyValue: 0x%x\n\n",hierarchyValue); H_flag = 1; break; case 'g': if(getSizeUint16Hex(optarg,&halg) != 0) { showArgError(optarg, argv[0]); returnVal = -2; break; } printf("halg = 0x%4.4x\n", halg); g_flag = 1; break; case 'I': if( getFileSize(optarg, &fileSize) != 0) { returnVal = -3; break; } if(fileSize > MAX_DIGEST_BUFFER) { printf("Input data too long: %ld, should be less than %d bytes\n", fileSize, MAX_DIGEST_BUFFER); returnVal = -4; break; } data.t.size = fileSize; if(loadDataFromFile(optarg, data.t.buffer, &data.t.size) != 0) { returnVal = -5; break; } I_flag = 1; break; case 'o': safeStrNCpy(outHashFilePath, optarg, sizeof(outHashFilePath)); if(checkOutFile(outHashFilePath) != 0) { returnVal = -6; break; } o_flag = 1; break; case 't': safeStrNCpy(outTicketFilePath, optarg, sizeof(outTicketFilePath)); if(checkOutFile(outTicketFilePath) != 0) { returnVal = -7; break; } t_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -8; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -9; } break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -10; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -11; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag + H_flag + g_flag + I_flag + o_flag + t_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -12; } } else if(flagCnt == 5 && h_flag != 1 && v_flag != 1) { prepareTest(hostName, port, debugLevel); returnVal = hash(hierarchyValue, &data, halg, outHashFilePath, outTicketFilePath); finishTest(); if(returnVal) return -13; } else { showArgMismatch(argv[0]); return -14; } return 0; }
int main(int argc, char* argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; UINT16 size; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hve:s:n:o:p:d:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"encKey",1,NULL,'e'}, {"sec",1,NULL,'s'}, {"name",1,NULL,'n'}, {"outFile",1,NULL,'o'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {0,0,0,0} }; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, e_flag = 0, s_flag = 0, n_flag = 0, o_flag = 0; if(argc == 1) { showHelp(argv[0]); return 0; } while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'e': size = sizeof(inPublic); if(loadDataFromFile(optarg, (UINT8 *)&inPublic, &size) != 0) { returnVal = -1; break; } e_flag = 1; break; case 's': inCredential.t.size = sizeof(inCredential) - 2; if(loadDataFromFile(optarg, inCredential.t.buffer, &inCredential.t.size) != 0) { returnVal = -2; break; } s_flag = 1; break; case 'n': objectName.t.size = sizeof(objectName) - 2; if(hex2ByteStructure(optarg,&objectName.t.size,objectName.t.name) != 0) { returnVal = -3; break; } n_flag = 1; break; case 'o': safeStrNCpy(outFilePath, optarg, sizeof(outFilePath)); if(checkOutFile(outFilePath) != 0) { returnVal = -4; break; } o_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -5; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -6; } break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -7; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -8; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag + e_flag + s_flag + n_flag + o_flag; if(flagCnt == 1) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -9; } } else if(flagCnt == 4 && h_flag != 1 && v_flag != 1) { prepareTest(hostName, port, debugLevel); returnVal = makeCredential(); finishTest(); if(returnVal) return -10; } else { showArgMismatch(argv[0]); return -11; } return 0; }
int main(int argc, char *argv[]) { char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; setbuf(stdout, NULL); setvbuf (stdout, NULL, _IONBF, BUFSIZ); int opt = -1; const char *optstring = "hvg:p:d:o:"; static struct option long_options[] = { {"help",0,NULL,'h'}, {"version",0,NULL,'v'}, {"algorithm",1,NULL,'g'}, {"output",1,NULL,'o'}, {"port",1,NULL,'p'}, {"debugLevel",1,NULL,'d'}, {0,0,0,0} }; TPMI_ALG_HASH algorithmId; int returnVal = 0; int flagCnt = 0; int h_flag = 0, v_flag = 0, o_flag = 0, g_flag = 0; while((opt = getopt_long(argc,argv,optstring,long_options,NULL)) != -1) { switch(opt) { case 'h': h_flag = 1; break; case 'v': v_flag = 1; break; case 'g': if(getSizeUint16Hex(optarg,&algorithmId) != 0) { showArgError(optarg, argv[0]); returnVal = -1; break; } g_flag = 1; break; case 'o': safeStrNCpy(outFilePath, optarg, sizeof(outFilePath)); if(checkOutFile(outFilePath) != 0) { returnVal = -2; break; } o_flag = 1; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); returnVal = -3; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); returnVal = -4; } break; // case 0: // break; case ':': // printf("Argument %c needs a value!\n",optopt); returnVal = -5; break; case '?': // printf("Unknown Argument: %c\n",optopt); returnVal = -6; break; //default: // break; } if(returnVal) break; }; if(returnVal != 0) return returnVal; flagCnt = h_flag + v_flag; if(o_flag) { fp = fopen(outFilePath,"w+"); if(NULL == fp) { printf("OutFile: %s Can Not Be Created !\n",outFilePath); return -7; } } if(flagCnt == 1) { //if(argc == 2) { if(h_flag == 1) showHelp(argv[0]); else if(v_flag == 1) showVersion(argv[0]); else { showArgMismatch(argv[0]); return -8; } return 0; } } else if(flagCnt == 0) { prepareTest(hostName, port, debugLevel); if(g_flag) returnVal = showSpPcrValues(algorithmId); else showAllPcrValues(); finishTest(); if(fp) fclose(fp); if(returnVal) return -9; } else { showArgMismatch(argv[0]); return -10; } return 0; }
int AVCCommand::getVerboseLevel() { return getDebugLevel(); }
bool AVCCommand::fire() { memset( &m_fcpFrame, 0x0, sizeof( m_fcpFrame ) ); Util::Cmd::BufferSerialize se( m_fcpFrame, sizeof( m_fcpFrame ) ); if ( !serialize( se ) ) { debugFatal( "fire: Could not serialize\n" ); return false; } unsigned short fcpFrameSize = se.getNrOfProducesBytes(); if (getDebugLevel() >= DEBUG_LEVEL_VERY_VERBOSE) { debugOutputShort( DEBUG_LEVEL_VERY_VERBOSE, "%s:\n", getCmdName() ); debugOutputShort( DEBUG_LEVEL_VERY_VERBOSE, " Request:\n"); showFcpFrame( m_fcpFrame, fcpFrameSize ); Util::Cmd::StringSerializer se_dbg; serialize( se_dbg ); // output the debug message in smaller chunks to avoid problems // with a max message size unsigned int chars_to_write=se_dbg.getString().size(); unsigned int chars_written=0; while (chars_written<chars_to_write) { debugOutputShort(DEBUG_LEVEL_VERY_VERBOSE, "%s\n", se_dbg.getString().substr(chars_written, DEBUG_MAX_MESSAGE_LENGTH).c_str()); chars_written += DEBUG_MAX_MESSAGE_LENGTH-1; } } bool result = false; unsigned int resp_len; quadlet_t* resp = m_p1394Service->transactionBlock( m_nodeId, (quadlet_t*)m_fcpFrame, ( fcpFrameSize+3 ) / 4, &resp_len ); if ( resp ) { resp_len *= 4; unsigned char* buf = ( unsigned char* ) resp; m_eResponse = ( EResponse )( *buf ); switch ( m_eResponse ) { case eR_Accepted: case eR_Implemented: case eR_Rejected: case eR_NotImplemented: { Util::Cmd::BufferDeserialize de( buf, resp_len ); result = deserialize( de ); debugOutputShort( DEBUG_LEVEL_VERY_VERBOSE," Response:\n"); showFcpFrame( buf, de.getNrOfConsumedBytes() ); Util::Cmd::StringSerializer se_dbg; serialize( se_dbg ); // output the debug message in smaller chunks to avoid problems // with a max message size unsigned int chars_to_write=se_dbg.getString().size(); unsigned int chars_written=0; while (chars_written<chars_to_write) { debugOutputShort(DEBUG_LEVEL_VERY_VERBOSE, "%s\n", se_dbg.getString().substr(chars_written, DEBUG_MAX_MESSAGE_LENGTH).c_str()); chars_written += DEBUG_MAX_MESSAGE_LENGTH-1; } } break; default: debugWarning( "unexpected response received (0x%x)\n", m_eResponse ); debugOutputShort( DEBUG_LEVEL_VERY_VERBOSE," Response:\n"); Util::Cmd::BufferDeserialize de( buf, resp_len ); deserialize( de ); showFcpFrame( buf, de.getNrOfConsumedBytes() ); result = false; } debugOutputShort( DEBUG_LEVEL_VERY_VERBOSE, "\n" ); m_p1394Service->transactionBlockClose(); } else { debugOutput( DEBUG_LEVEL_VERBOSE, "no response\n" ); result = false; m_p1394Service->transactionBlockClose(); } return result; }
int main(int argc, char* argv[]) { int opt; char hostName[200] = DEFAULT_HOSTNAME; int port = DEFAULT_RESMGR_TPM_PORT; int returnVal = 0; struct option sOpts[] = { { "index" , required_argument, NULL, 'x' }, { "authHandle" , required_argument, NULL, 'a' }, { "size" , required_argument, NULL, 's' }, { "attribute" , required_argument, NULL, 't' }, { "handlePasswd", required_argument, NULL, 'P' }, { "indexPasswd" , required_argument, NULL, 'I' }, { "passwdInHex" , no_argument, NULL, 'X' }, { "port" , required_argument, NULL, 'p' }, { "dbg" , required_argument, NULL, 'd' }, { "help" , no_argument, NULL, 'h' }, { "version" , no_argument, NULL, 'v' }, { NULL , no_argument, NULL, 0 }, }; if( argc == 1) { showHelp(argv[0]); return 0; } if( argc > (int)(2*sizeof(sOpts)/sizeof(struct option)) ) { showArgMismatch(argv[0]); return -1; } while ( ( opt = getopt_long( argc, argv, "x:a:s:t:P:I:Xp:d:hv", sOpts, NULL ) ) != -1 ) { switch ( opt ) { case 'h': case '?': showHelp(argv[0]); return -2; case 'v': showVersion(argv[0]); return -3; case 'x': if( getSizeUint32Hex(optarg, &nvIndex) != 0 ) return -4; break; case 'a': if( getSizeUint32Hex(optarg, &authHandle) != 0 ) return -5; break; case 's': if( getSizeUint32(optarg, &size) != 0 ) return -6; break; case 't': if( getSizeUint32Hex(optarg, &nvAttribute) != 0 ) return -7; break; case 'P': if( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the handle password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA)-1); return -8; } safeStrNCpy(handlePasswd, optarg, sizeof(handlePasswd)); break; case 'I': if( optarg == NULL || (strlen(optarg) >= sizeof(TPMU_HA)) ) { printf("\nPlease input the index password(optional,no more than %d characters).\n", (int)sizeof(TPMU_HA)-1); return -9; } safeStrNCpy(indexPasswd, optarg, sizeof(indexPasswd)); break; case 'X': hexPasswd = true; break; case 'p': if( getPort(optarg, &port) ) { printf("Incorrect port number.\n"); return -10; } break; case 'd': if( getDebugLevel(optarg, &debugLevel) ) { printf("Incorrect debug level.\n"); return -11; } break; } } if( nvIndex == 0 ) { printf("\nYou must provide an index (!= 0) for the NV area.\n"); return -12; } if( authHandle == 0 ) { printf("\nYou must provide an right auth handle for this operation.\n"); showHelp(argv[0]); return -13; } prepareTest(hostName, port, debugLevel); returnVal = nvSpaceDefine(); finishTest(); if(returnVal) return -14; return 0; }