* fix missing case that let bad RSA slip through the cracks in the latest demo app

This commit is contained in:
giantpune@gmail.com 2010-12-18 21:45:14 +00:00
parent 7e64a9f6b5
commit ac2448f98a

View File

@ -320,24 +320,26 @@ bool CheckTitleIntegrity( quint64 tid )
//remember the tmd for checking the actual contents //remember the tmd for checking the actual contents
for( quint8 i = 0; i < 2; i++ ) for( quint8 i = 0; i < 2; i++ )
{ {
QString it = ( i ? "tmd" : "ticket" );
QByteArray ba = nand.GetData( i ? tmdp : tikp ); QByteArray ba = nand.GetData( i ? tmdp : tikp );
if( ba.isEmpty() ) if( ba.isEmpty() )
{ {
if( i ) qDebug() << "error getting" << it << "data";
qDebug() << "error getting tmd data";
else
qDebug() << "error getting ticket data";
return false; return false;
} }
switch( check_cert_chain( ba ) ) switch( check_cert_chain( ba ) )
{ {
case ERROR_SIG_TYPE: case ERROR_SIG_TYPE:
case ERROR_SUB_TYPE: case ERROR_SUB_TYPE:
case ERROR_RSA_HASH:
case ERROR_RSA_TYPE_UNKNOWN: case ERROR_RSA_TYPE_UNKNOWN:
case ERROR_RSA_TYPE_MISMATCH: case ERROR_RSA_TYPE_MISMATCH:
case ERROR_CERT_NOT_FOUND: case ERROR_CERT_NOT_FOUND:
qDebug() << "the RSA signature isn't even close"; qDebug() << "\t" << it << "RSA signature isn't even close";
return false; //return false; //maye in the future this will be true, but for now, this doesnt mean it wont boot
break;
case ERROR_RSA_FAKESIGNED:
qDebug() << "\t" << it << "fakesigned";
break; break;
default: default:
break; break;
@ -631,7 +633,7 @@ int main( int argc, char *argv[] )
qDebug() << "found" << tids.size() << "titles installed"; qDebug() << "found" << tids.size() << "titles installed";
BuildGoodIosList(); BuildGoodIosList();
qDebug() << "found" << validIoses.size() << "good IOS"; qDebug() << "found" << validIoses.size() << "bootable IOS";
foreach( quint64 tid, tids ) foreach( quint64 tid, tids )
{ {
CheckTitleIntegrity( tid ); CheckTitleIntegrity( tid );