diff options
Diffstat (limited to 'extension/background/emscriptif.js')
-rw-r--r-- | extension/background/emscriptif.js | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/extension/background/emscriptif.js b/extension/background/emscriptif.js index 15eef7a3a..3d4868b1e 100644 --- a/extension/background/emscriptif.js +++ b/extension/background/emscriptif.js @@ -490,15 +490,36 @@ class WithdrawRequestPS extends SignatureStruct { } class AbsoluteTimeNbo extends PackedArenaObject { static fromTalerString(s) { - throw Error(); + let x = new AbsoluteTimeNbo(); + x.alloc(); + let r = /Date\(([0-9]+)\)/; + let m = r.exec(s); + if (m.length != 2) { + throw Error(); + } + let n = parseInt(m[1]); + console.log("setting", n); + // XXX: This only works up to 54 bit numbers. + set64(x.getNative(), n); + return x; } size() { return 8; } } +// XXX: This only works up to 54 bit numbers. +function set64(p, n) { + for (let i = 0; i < 8; ++i) { + Module.setValue(p + (8 - i), n & 0xFF, "i8"); + n >>>= 8; + } +} class UInt64 extends PackedArenaObject { static fromNumber(n) { - throw Error(); + let x = new UInt64(); + x.alloc(); + set64(x.getNative(), n); + return x; } size() { return 8; |