void tcert_RawPackageInfo(char *rawOpt, char *pkgName, char *param3p)
{
  char rawDir[MAX_CERT_PATH];
  int rValue; //, nOpts;
  
  if (NULL == rawOpt)
    {
      printf("ERROR: Raw file option not set\n");
      printUsage(rawFileInfoList, RAW_FILE_INFO_LIST_SIZE);
      return;
    }
  
  switch(rawOpt[0])
    {
    case 'd':
      {
        int fType = returnFileType(pkgName);
        
        switch(fType)
          {
          case CERT_P12_FILE:
            tcert_DumpPKCS12(pkgName);
            break;
          default:
            printf("Unimplemented type for %s (%d)\n",
                   pkgName, fType);
            break;
          }
      }
      break;
      
    case 'l':  // l[ist raw packages]
      if (CERT_OK ==
          (rValue = CertCfgGetObjectStrValue(CERTCFG_PACKAGE_DIR,
                                              rawDir, MAX_CERT_PATH)))
        {
          //printf("\tPEM files (.pem):\n");
          tcert_ListDirExt(rawDir, "pem", 2);
          //printf("\tPKCS files (.p12):\n");
          tcert_ListDirExt(rawDir, "p12", 2);
          //printf("\tPKCS files (.pfx):\n");
          tcert_ListDirExt(rawDir, "pfx", 2);
          //printf("\tDER files (.der):\n");
          tcert_ListDirExt(rawDir, "der", 2);
        }
      else
        printf("ERROR: Unavailable package dir (errno == %d)\n", rValue);
      break;
      
    default:
      printUsage(rawFileInfoList, RAW_FILE_INFO_LIST_SIZE);
    }
}
示例#2
0
int CMessageFile::Open(const TCHAR* lpszPath, MessageFileType fType)
{
    if (!lpszPath)
    {
        return -1;
    }
    if (_tfopen_s(&m_File, lpszPath, returnFileType(fType)) != 0)
    {
        return -1;
    }
    if (m_File == NULL)
    {
        return -1;
    }
    return 0;
}
//int CertPemToX509(const char* pemPath, X509** hCert);
void tcert_X509PackageInfo(char *certOpt, char *explodeProp, char *certFile)
{
  //  char param1[MAX_CERT_PATH];
  //char param2[MAX_CERT_PATH];
  
  if (NULL == certOpt)
    {
      printUsage(x509InfoList, X509_INFO_LIST_SIZE);
      return;
    }
  
  switch (certOpt[0])
    {
    case 'd':  // d[atabase of current certificates]
      tcert_printDatabase();
      break;
      
    case 'i':  // i[nstall] and validate a certificate
      if (NULL == explodeProp)
        {
          printf("ERROR: undefined explode option\n");
          printUsage(x509InfoList, X509_INFO_LIST_SIZE);
          break;
        }
      else
        {
          int serial = 0;

          sscanf(explodeProp, "%x", &serial);

          if (0 != serial)
            CertAddAuthorizedCert(serial);
          
        }
      break;
      
    case 's':  // s[erial number]
      printf("UNIMPLEMENTED\n");
      break;

    case 'v':
      if (NULL == explodeProp)
        {
          printf("ERROR: undefined certificate serial number\n");
          printUsage(x509InfoList, X509_INFO_LIST_SIZE);
          break;
        }
      else
        {
          int serial = 0;

          sscanf(explodeProp, "%x", &serial);

          if (0 != serial)
            CertValidateCertificate(serial);
          
        }
      break;
      
    case 'x': // x[plode] the given certificate
      if (NULL == explodeProp)
        {
          printf("ERROR: undefined explode option\n");
          printUsage(x509ExplodePropertyList, X509_EXPLODE_PROPERTY_LIST_SIZE);
          break;
        }
      else if (NULL == certFile)
        {
          printf("ERROR: undefined certificate name\n");
          break;
        }
      else
        {
          X509 *cert;
          int fileType;
          unsigned int result;
          int property = CERTX509_UNKNOWN_PROPERTY;
          char propertyStr[64];
          
          fileType = returnFileType(certFile);
          switch (fileType)
            {
            case CERT_PEM_FILE:
              result = CertPemToX509(certFile, &cert);
              break;
              
            default:
              printf("ERROR: Illegal file type for %s (%d)\n",
                     certFile, fileType);
              result = CERT_UNSUPPORTED_CERT_TYPE;
            }
          if (CERT_OK != result)
            {
              PRINT_RETURN_CODE(result);
              break;;
            }
          switch(explodeProp[0])
            {
            case 'b': // Begining of certificate period
              property = CERTX509_START_DATE;
              break;
              
            case 'e': // End of certificate period
              property = CERTX509_EXPIRATION_DATE;
              break;
              
            case 'i': // issuer
              property = CERTX509_ISSUER_COMMON_NAME;
              break;
              
            case 'o': // subject Org
              property = CERTX509_SUBJECT_ORGANIZATION_NAME;
              break;
              
            case 'O': // issuer Org
              property = CERTX509_ISSUER_ORGANIZATION_NAME;
              break;
              
            case 's': // subject common name
              property = CERTX509_SUBJECT_COMMON_NAME;
              break;
              
            case 'S': // subject Surname
              property = CERTX509_SUBJECT_SURNAME;
              break;
              
            case 'u': // subject organization unit
              property = CERTX509_SUBJECT_ORGANIZATION_UNIT_NAME;
              break;

            case 'U': // issuer organization unit
              property = CERTX509_ISSUER_ORGANIZATION_UNIT_NAME;
              break;
            }
          
          if (property == CERTX509_UNKNOWN_PROPERTY)
            {
              printf("ERROR: Unknown property %s\n", explodeProp);
              printUsage(x509ExplodePropertyList, X509_EXPLODE_PROPERTY_LIST_SIZE);
              result = CERT_UNKNOWN_PROPERTY;
           }
          else if ((CERTX509_START_DATE == property) ||
                   (CERTX509_EXPIRATION_DATE == property))
            {
              result = CertX509ReadTimeProperty(cert,
                                                property,
                                                propertyStr, 64);
            }
          else
            {
              result = CertX509ReadStrProperty(cert,
                                               property,
                                               propertyStr, 64);
            }
          if (CERT_OK == result)
            {
              printf("%s::%s\n",
                     x509PropertyNameList[property],
                     propertyStr);
            }
          else
            PRINT_RETURN_CODE(result);
        }
      break;
      
    default:
      printUsage(x509InfoList, X509_INFO_LIST_SIZE);
      break;
    }
}