blob: f7506c81b664dad9e395793477f7006e928b17ca [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
var security = require('vanadium').security;
module.exports = {
shortName: shortName,
firstShortName: firstShortName,
randomHex: randomHex
};
// Note, shortName and firstShortName are duplicated between JS and Go.
function shortName(fullName) {
// Split into components and see if any is an email address. A very
// sophisticated technique is used to determine if the component is an email
// address: presence of an "@" character.
var parts = fullName.split(security.ChainSeparator.val);
for (var j = 0; j < parts.length; j++) {
var p = parts[j];
if (p.indexOf('@') > 0) {
return p;
}
}
return '';
}
function firstShortName(blessings) {
if (!blessings || blessings.length === 0) {
return 'unknown';
}
for (var i = 0; i < blessings.length; i++) {
var sn = shortName(blessings[i]);
if (sn) return sn;
}
return blessings[0];
}
function randomBytes(len) {
len = len || 1;
var array = new Int8Array(len);
window.crypto.getRandomValues(array);
return new Buffer(array);
}
function randomHex(len) {
return randomBytes(Math.ceil(len/2)).toString('hex').substr(0, len);
}