Overview
| Comment: | ChromeOS: Updated to pass original message back correctly |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
3783f79015b8cf7c93ed240588da0d1f |
| User & Date: | rkeene on 2016-02-26 16:35:42 |
| Original Comment: | Updated to pass original message back correctly |
| Other Links: | manifest | tags |
Context
|
2016-02-26
| ||
| 18:20 | ChromeOS: Fixed issue with including signed data in the reply check-in: c27bb81788 user: rkeene tags: trunk | |
| 16:35 | ChromeOS: Updated to pass original message back correctly check-in: 3783f79015 user: rkeene tags: trunk | |
| 16:23 | ChromeOS: Updated to support raw PKCS#1 message signing using the interface Chrome provides it check-in: ea7a58ef60 user: rkeene tags: trunk | |
Changes
Modified build/chrome/cackey-chrome-init.cc from [84155dbf3d] to [cd9d30207a].
| ︙ | ︙ | |||
26 27 28 29 30 31 32 |
public:
explicit CACKeyInstance(PP_Instance instance, pp::Core *core) : pp::Instance(instance) {
corePointer = core;
}
virtual ~CACKeyInstance() {}
| | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
public:
explicit CACKeyInstance(PP_Instance instance, pp::Core *core) : pp::Instance(instance) {
corePointer = core;
}
virtual ~CACKeyInstance() {}
virtual void HandleMessageThread(pp::VarDictionary *message, pp::Var *messagePlain) {
cackey_chrome_returnType signRet;
char *pinPrompt = NULL;
const char *pin;
const char *smartcardManagerAppId = NULL;
unsigned char buffer[8192];
struct cackey_certificate *certificates, incomingCertificateCACKey;
pp::VarDictionary *reply;
pp::VarArray certificatesPPArray;
pp::VarArrayBuffer *certificateContents, *incomingCertificateContents, *incomingData, *outgoingData;
pp::Var command;
const pp::Var *outgoingDataAsVar = NULL;
int numCertificates, i;
unsigned long outgoingDataLength;
/*
* Extract the command
*/
command = message->Get("command");
|
| ︙ | ︙ | |||
133 134 135 136 137 138 139 |
outgoingDataAsVar = new pp::Var(outgoingData->pp_var());
delete outgoingData;
reply->Set("status", "success");
reply->Set("signedData", outgoingDataAsVar);
| < < < < | < < | 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
outgoingDataAsVar = new pp::Var(outgoingData->pp_var());
delete outgoingData;
reply->Set("status", "success");
reply->Set("signedData", outgoingDataAsVar);
break;
case CACKEY_CHROME_ERROR:
reply->Set("status", "error");
reply->Set("error", "Unable to sign data");
break;
case CACKEY_CHROME_NEEDLOGIN:
case CACKEY_CHROME_NEEDPROTECTEDLOGIN:
reply->Set("status", "retry");
reply->Set("originalrequest", *messagePlain);
reply->Set("pinprompt", pinPrompt);
break;
}
if (pinPrompt != NULL) {
free(pinPrompt);
}
}
|
| ︙ | ︙ | |||
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
* Send the reply back to the requestor, hopefully they are waiting for this message
*/
PostMessage(*reply);
delete reply;
delete message;
return;
}
virtual void HandleMessage(const pp::Var& messagePlain) {
pp::VarDictionary *message;
pp::Var target;
/*
* The incoming message must be a dictionary
*/
if (!messagePlain.is_dictionary()) {
pcscNaClHandleMessage(messagePlain);
| > > > > > > > | 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
* Send the reply back to the requestor, hopefully they are waiting for this message
*/
PostMessage(*reply);
delete reply;
delete message;
delete messagePlain;
if (outgoingDataAsVar) {
delete outgoingDataAsVar;
}
return;
}
virtual void HandleMessage(const pp::Var& messagePlain) {
pp::VarDictionary *message;
pp::Var *messagePlainCopy;
pp::Var target;
/*
* The incoming message must be a dictionary
*/
if (!messagePlain.is_dictionary()) {
pcscNaClHandleMessage(messagePlain);
|
| ︙ | ︙ | |||
242 243 244 245 246 247 248 | return; } /* * Process the request in another thread */ | > | | 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
return;
}
/*
* Process the request in another thread
*/
messagePlainCopy = new pp::Var(messagePlain);
std::thread(&CACKeyInstance::HandleMessageThread, this, message, messagePlainCopy).detach();
return;
}
};
class CACKeyModule : public pp::Module {
public:
|
| ︙ | ︙ |