/* (C) 2003-2007 Willem Jan Hengeveld * Web: http://www.xs4all.nl/~itsme/ * http://wiki.xda-developers.com/ * * $Id$ */ #include #include #include "debug.h" #include #include "stringutils.h" #include "args.h" #include "FileFunctions.h" #include "ConfigApi.h" void usage() { printf("(C) 2003-2008 Willem jan Hengeveld itsme@xs4all.nl\n"); debug("Usage: prapi [-q|-d] [-p | -s | -c | -m] \n"); debug(" -v : verbose: always print repsonse\n"); debug(" -q -p : query policy setting\n"); debug(" -p : set policy\n"); debug(" -d -p : delete policy setting\n"); debug(" -q -m : query metabase key\n"); debug(" -m [-r role] [-a access] : set metabase key\n"); debug(" -d -m : delete metabase key\n"); debug(" -q [] : query registry key or value\n"); debug(" -s : set registry key\n"); debug(" -d [] : delete registry key or value\n"); debug(" -q -c[STORE] [file.cer] : query certificate, whole store, or one cert\n"); debug(" -c[STORE] [-r role] : add certificate to store\n"); debug(" -d -c[STORE] : delete certificate from store\n"); debug("Stores: codesigning: p=privileged, u=unprivileged, c=SPC/cabsigning\n"); debug(" ssl/webserver: a=Certificate Authorities, r=root, m=my\n"); } int main(int argc, char **argv) { DebugStdOut(); bool bPrintAnswer= false; bool doSetSecurityPolicy= false; bool doSetRegistryValue= false; bool doSetMetabase= false; bool doDelete= false; bool doQuery= false; bool doLoadCertificate= false; DWORD dwCertStore= 0; DWORD role=0; DWORD rwaccess=3; StringList args; for (int i=1 ; i=2) xml= pd_DeleteRegistryValues(args[0], args.begin()+1, args.end()); else { usage(); return 1; } } else { usage(); return 1; } if (!LoadRapi()) return 1; if (xml.empty()) { printf("error - no query selected\n"); usage(); return 1; } std::string answer; bool bRes= LoadProvisioningDoc(xml, answer); int nResult= bRes ? 0 : 1; UnloadRapi(); if (bPrintAnswer) { for (size_t i=answer.find("><") ; i!=answer.npos ; i= answer.find("><", i+1)) answer.replace(i, 2, ">\n<"); // .. don't use debug here, it truncates at 16K fputs(answer.c_str(), stdout); } return nResult; }