This commit is contained in:
Atul Varma 2008-06-30 14:29:32 -07:00
Родитель f7e43cc1c5 9033253ba8
Коммит 1875fe398b
1 изменённых файлов: 37 добавлений и 13 удалений

Просмотреть файл

@ -6,47 +6,71 @@ Function.prototype.async = Async.sugar;
let __fakeCryptoID = {
keypairAlg: "RSA",
// This private key is encrypted with the passphrase 'passphrase',
// contained in our testing infrastructure.
privkey: "3ytj94K6Wo0mBjAVsiIwjm5x2+ENvpKTDUqLCz19iXbESf8RT6O8PmY7Pqcndpn+adqaQdvmr0T1JQ5bfLEHev0WBfo8oWJb+OS4rKoCWxDNzGwrOlW5hCfxSekw0KrKjqZyDZ0hT1Qt9vn6thlV2v9YWfmyn0OIxNC9hUqGwU3Wb2F2ejM0Tw40+IIW4eLEvFxLGv0vnEXpZvesPt413proL6FGQJe6vyapBg+sdX1JMYGaKZY84PUGIiDPxTbQg7yIWTSe3WlDhJ001khFiyEoTZvPhiAGXfML9ycrCRZUWkHp/cfS7QiusJXs6co0tLjrIk/rTk8h4mHBnyPkFIxh4YrfC7Bwf9npwomhaZCEQ32VK+a8grTDsGYHPZexDm3TcD2+d+hZ/u4lUOHFscQKX4w83tq942yqFtElCD2yQoqEDr1Z9zge5XBnLcYiH9hL0ozfpxBlTtpR1kSH663JHqlYim0qhuk0zrGAPkHna07UMFufxvgQBSd/YUqWCimJFGi+5QeOOFO20Skj882Bh1QDYsmbxZ/JED5ocGNHWSqpaOL2ML1F9nD5rdtffI0BsTe+j9h+HV4GlvzUz0Jd6RRf9xN4RyxqfENb8iGH5Pwbry7Qyk16rfm0s6JgG8pNb/8quKD+87RAtQFybZtdQ9NfGg+gyRiU9pbb6FPuPnGp+KpktaHu/K3HnomrVUoyLQALfCSbPXg2D9ta6dRV0JRqOZz4w52hlHIa62iJO6QecbdBzPYGT0QfOy/vp6ndRDR+2xMD/BmlaQwm3+58cqhIw9SVV5h/Z5PVaXxAOqg5vpU1NjrbF4uIFo5rmR0PyA/6qtxZaBY6w3I4sUWdDkIer8QsyrFrO7MIEdxksvDoFIeIM5eN8BufLu3ymS5ZXBiFr/iRxlYcQVHK2hz0/7syWUYsrz5/l1mj+qbWGx+6daWOk3xt4SH+p0hUpMC4FbJ9m/xr4im+X5m5ZYiajaF1QPOXTTny2plE0vfqMVlwX1HFFTJrAP+E85sZI8LPHAYO80qhSi3tV/LHjxCnC1LHJXaRkG202pQFWF1yVT/o82HBt9OC1xY6TVcy4Uh+6piNIQ9FxXGWrzjz0AUkxwkSN3Foqlfiq+mqJmNwzIdEQTmNAcBBsN3vWngU4elHjYI5qFZBzxJIkH8tfvivOshrOZIZB9TD9GIRhQwIBWc6i4fnqE9GUK2Jle6werdFATiMU4msQg7ClURaMn/p3MOLoxTmsPd1iBYPQkqnJgEAdNfKj3KRqSc6M/x09hGDSzK2d9Y03pyDGPh2sopcMFdCQbMy8VOld2/hEGakMJv6BPoRfhKmJbgGVf5x4B9dWZNa8WCmlcxaZ7KG43UA0zLm1VgfTcDW5qazDFoxIcfhmO5KoRI3q8vNs+Wh+smLC6yFODdF9HzrPimEYSc6OWHWgUcuiIBRjKeo5gBTbExWmri2VG+cn005vQNxK+0s7JVyFB8TzZ96pV3nFjkYy9OUkaiJxGd6OVGcvhbbrcNsKkaZff7OsLqczf6x0bhwh+y8+bLjLkuusGYUdBvdeiuv12IfeRupvwD8Z3aZOgcD7d+8VTyTyd/KX9fu8P7tD5SojJ5joRPjcv4Q8/mhRgtwx1McMIL3YnKHG+U=",
privkeyWrapIV: "fZ7CB/KQAUjEhkmrEkns4Q==",
passphraseSalt: "JFs5h2RKX9m0Op9DlQIcCOSfOH1MuDrrrHxCx+CpCUU=",
pubkey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxxwObnXIoYeQKMG9RbvLkgsu/idDo25qOX87jIEiXkgW1wLKp/1D/DBLUEW303tVszNGVt6bTyAXOIj6skpmYoDs9Z48kvU3+g7Vi4QXEw5moSS4fr+yFpKiYd2Kx1+jCFGvGZjBzAAvnjsWmWrSA+LHJSrFlKY6SM3kNg8KrE8dxUi3wztlZnhZgo1ZYe7/VeBOXUfThtoadIl1VdREw2e79eiMQpPa0XLv4grCaMd/wLRs0be1/nPt7li4NyT0fnYFWg75SU3ni/xSaq/zR4NmW/of5vB2EcKyUG+/mvNplQ0CX+v3hRBCdhpCyPmcbHKUluyKzj7Ms9pKyCkwxwIDAQAB"
};
function checkpassphrase_coroutine() {
function isPassphraseValid(identity) {
var self = yield;
var idRSA = ID.get("WeaveCryptoID");
var idTemp = new Identity("temp", "temp", null);
// Generate a random symmetric key.
Crypto.randomKeyGen.async(Crypto, self.cb, idTemp);
yield;
// Encrypt the symmetric key with the user's public key.
Crypto.wrapKey.async(Crypto, self.cb, idTemp.bulkKey, idRSA);
Crypto.wrapKey.async(Crypto, self.cb, idTemp.bulkKey, identity);
let wrappedKey = yield;
let unwrappedKey;
// Decrypt the symmetric key with the user's private key.
Crypto.unwrapKey.async(Crypto, self.cb, wrappedKey, idRSA);
let unwrappedKey = yield;
try {
Crypto.unwrapKey.async(Crypto, self.cb, wrappedKey, identity);
unwrappedKey = yield;
} catch (e) {
self.done(false);
return;
}
// Ensure that the original symmetric key is identical to
// the decrypted version.
do_check_eq(unwrappedKey, idTemp.bulkKey);
if (unwrappedKey != idTemp.bulkKey)
throw new Error("Unwrapped key is not identical to original key.");
self.done(true);
}
function test_passphrase_checking() {
let syncTesting = new SyncTestingInfrastructure();
function testGenerator() {
let self = yield;
let id = ID.get("WeaveCryptoID");
for (name in __fakeCryptoID)
id[name] = __fakeCryptoID[name];
function checkpassphrase(cb) {
checkpassphrase_coroutine.async({}, cb);
}
isPassphraseValid.async({}, self.cb, id);
let result = yield;
syncTesting.runAsyncFunc("Checking passphrase", checkpassphrase);
do_check_eq(result, true);
id.setTempPassword("incorrect passphrase");
isPassphraseValid.async({}, self.cb, id);
result = yield;
do_check_eq(result, false);
self.done();
}
function run_test() {
let syncTesting = new SyncTestingInfrastructure();
syncTesting.runAsyncFunc(
"Ensuring isPassphraseValid() works",
function runTest(cb) { testGenerator.async({}, cb); }
);
}