Support ownerKey in file hash
parent
d4d07f3332
commit
14905a5693
|
@ -15,6 +15,19 @@ var factory = function (Util, Crypto, Nacl) {
|
|||
.decodeUTF8(JSON.stringify(list))));
|
||||
};
|
||||
|
||||
// XXX move this code?
|
||||
Hash.generateSignPair = function (safe) {
|
||||
var ed = Nacl.sign.keyPair();
|
||||
var makeSafe = function (key) {
|
||||
if (!safe) { return key; }
|
||||
return Crypto.b64RemoveSlashes(key).replace(/=+$/g, '');
|
||||
};
|
||||
return {
|
||||
validateKey: makeSafe(encode64(ed.publicKey)),
|
||||
signKey: makeSafe(encode64(ed.secretKey)),
|
||||
};
|
||||
};
|
||||
|
||||
var getEditHashFromKeys = Hash.getEditHashFromKeys = function (secret) {
|
||||
var version = secret.version;
|
||||
var data = secret.keys;
|
||||
|
@ -134,6 +147,17 @@ Version 1
|
|||
/code/#/1/edit/3Ujt4F2Sjnjbis6CoYWpoQ/usn4+9CqVja8Q7RZOGTfRgqI
|
||||
*/
|
||||
|
||||
var getOwnerKey = function (hashArr) {
|
||||
var k;
|
||||
// Check if we have a ownerKey for this pad
|
||||
hashArr.some(function (data) {
|
||||
if (data.length === 86) { // XXX 88 characters - 2 trailing "="...
|
||||
k = data;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
return k;
|
||||
};
|
||||
var parseTypeHash = Hash.parseTypeHash = function (type, hash) {
|
||||
if (!hash) { return; }
|
||||
var options;
|
||||
|
@ -158,17 +182,12 @@ Version 1
|
|||
options = hashArr.slice(5);
|
||||
parsed.present = options.indexOf('present') !== -1;
|
||||
parsed.embed = options.indexOf('embed') !== -1;
|
||||
// Check if we have an ownerKey for this pad
|
||||
hashArr.some(function (data) {
|
||||
if (data.length === 86) { // XXX 88 characters - 2 trailing "="...
|
||||
parsed.ownerKey = data;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
parsed.ownerKey = getOwnerKey(options);
|
||||
|
||||
parsed.getHash = function (opts) {
|
||||
var hash = hashArr.slice(0, 5).join('/') + '/';
|
||||
if (parsed.ownerKey) { hash += parsed.ownerKey + '/'; }
|
||||
var owner = typeof(opts.ownerKey) !== "undefined" ? opts.ownerKey : parsed.ownerKey;
|
||||
if (owner) { hash += owner + '/'; }
|
||||
if (opts.embed) { hash += 'embed/'; }
|
||||
if (opts.present) { hash += 'present/'; }
|
||||
return hash;
|
||||
|
@ -185,17 +204,12 @@ Version 1
|
|||
parsed.password = options.indexOf('p') !== -1;
|
||||
parsed.present = options.indexOf('present') !== -1;
|
||||
parsed.embed = options.indexOf('embed') !== -1;
|
||||
// Check if we have a ownerKey for this pad
|
||||
hashArr.some(function (data) {
|
||||
if (data.length === 86) { // XXX 88 characters - 2 trailing "="...
|
||||
parsed.ownerKey = data;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
parsed.ownerKey = getOwnerKey(options);
|
||||
|
||||
parsed.getHash = function (opts) {
|
||||
var hash = hashArr.slice(0, 5).join('/') + '/';
|
||||
if (parsed.ownerKey) { hash += parsed.ownerKey + '/'; }
|
||||
var owner = typeof(opts.ownerKey) !== "undefined" ? opts.ownerKey : parsed.ownerKey;
|
||||
if (owner) { hash += owner + '/'; }
|
||||
if (parsed.password) { hash += 'p/'; }
|
||||
if (opts.embed) { hash += 'embed/'; }
|
||||
if (opts.present) { hash += 'present/'; }
|
||||
|
@ -212,6 +226,8 @@ Version 1
|
|||
parsed.version = 1;
|
||||
parsed.channel = hashArr[2].replace(/-/g, '/');
|
||||
parsed.key = hashArr[3].replace(/-/g, '/');
|
||||
options = hashArr.slice(4);
|
||||
parsed.ownerKey = getOwnerKey(options);
|
||||
return parsed;
|
||||
}
|
||||
if (hashArr[1] && hashArr[1] === '2') { // Version 2
|
||||
|
@ -223,9 +239,12 @@ Version 1
|
|||
parsed.password = options.indexOf('p') !== -1;
|
||||
parsed.present = options.indexOf('present') !== -1;
|
||||
parsed.embed = options.indexOf('embed') !== -1;
|
||||
parsed.ownerKey = getOwnerKey(options);
|
||||
|
||||
parsed.getHash = function (opts) {
|
||||
var hash = hashArr.slice(0, 4).join('/') + '/';
|
||||
var owner = typeof(opts.ownerKey) !== "undefined" ? opts.ownerKey : parsed.ownerKey;
|
||||
if (owner) { hash += owner + '/'; }
|
||||
if (parsed.password) { hash += 'p/'; }
|
||||
if (opts.embed) { hash += 'embed/'; }
|
||||
if (opts.present) { hash += 'present/'; }
|
||||
|
|
Loading…
Reference in New Issue