Skip to content

Instantly share code, notes, and snippets.

@osnr
Created January 15, 2014 20:01
Show Gist options
  • Save osnr/8443402 to your computer and use it in GitHub Desktop.
Save osnr/8443402 to your computer and use it in GitHub Desktop.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Test OTR</title>
</head>
<body></body>
<script>
var start = (new Date()).getTime();
</script>
<!-- Load dependencies -->
<script src="../build/dep/salsa20.js"></script>
<script src="../build/dep/bigint.js"></script>
<script src="../build/dep/crypto.js"></script>
<script src="../build/dep/eventemitter.js"></script>
<!-- Load otr.js or otr.min.js -->
<script src="../build/otr.js"></script>
<!-- Ready to go! -->
<script>
var statuses = [
"STATUS_SEND_QUERY"
, "STATUS_AKE_INIT"
, "STATUS_AKE_SUCCESS"
, "STATUS_END_OTR"
]
function append(html) {
var p = document.createElement('span');
p.innerHTML = html;
document.body.appendChild(p);
}
append('loading scripts / seeding random took <strong>' + ((new Date()).getTime() - start) + 'ms</strong>');
var ui = function (msg) { console.log('ui', msg); };
var err = function (err) { console.log(err); };
var userA = new OTR({ debug: true });
userA.on('ui', ui);
userA.on('io', function (msg) {
console.log('io from A', userB, msg);
userB.receiveMsg(msg);
});
userA.on('error', err);
append('<br />generating OTR object took <strong>' + ((new Date()).getTime() - start) + 'ms</strong>');
var bIT = OTR.makeInstanceTag()
var bPriv = new DSA()
var userB = new OTR({ priv: bPriv, instance_tag: bIT, debug: true });
userB.on('ui', ui);
userB.on('io', userA.receiveMsg);
userB.on('error', err);
userB.on('status', function (state) {
console.log('status on B1', statuses[state]);
})
start = (new Date()).getTime();
console.log('sending userA query msg');
userA.sendQueryMsg()
userA.on('status', function (state) {
console.log('status on A', statuses[state]);
if (state === OTR.CONST.STATUS_AKE_SUCCESS) {
append('<br />ake took <strong>' + ((new Date()).getTime() - start) + 'ms</strong>');
append('<br />message state is ' + (userA.msgstate ? 'encrypted' : 'plaintext') + '</strong>');
}
})
setTimeout(function() {
userA.sendMsg("Amsg1 to B1");
userA.sendMsg("Amsg2 to B1");
setTimeout(function() {
userB = new OTR({ priv: bPriv, instance_tag: bIT, debug: true });
userB.on('ui', ui);
userB.on('io', userA.receiveMsg);
userB.on('error', err);
console.log('sending userB query msg');
userB.on('status', function (state) {
console.log('status on B2', statuses[state]);
})
userB.sendQueryMsg();
setTimeout(function() {
userA.sendMsg("Amsg1 to B2");
userA.sendMsg("Amsg2 to B2");
}, 2000);
}, 2000);
}, 2000);
</script>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment