aboutsummaryrefslogtreecommitdiff
path: root/lib/wallet/emscriptif.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/wallet/emscriptif.ts')
-rw-r--r--lib/wallet/emscriptif.ts41
1 files changed, 40 insertions, 1 deletions
diff --git a/lib/wallet/emscriptif.ts b/lib/wallet/emscriptif.ts
index 23014114a..7c08fdc45 100644
--- a/lib/wallet/emscriptif.ts
+++ b/lib/wallet/emscriptif.ts
@@ -119,10 +119,16 @@ var emscAlloc = {
['number', 'number', 'number', 'string']),
eddsa_key_create: getEmsc('GNUNET_CRYPTO_eddsa_key_create',
'number', []),
+ ecdsa_key_create: getEmsc('GNUNET_CRYPTO_ecdsa_key_create',
+ 'number', []),
eddsa_public_key_from_private: getEmsc(
'TALER_WRALL_eddsa_public_key_from_private',
'number',
['number']),
+ ecdsa_public_key_from_private: getEmsc(
+ 'TALER_WRALL_ecdsa_public_key_from_private',
+ 'number',
+ ['number']),
data_to_string_alloc: getEmsc('GNUNET_STRINGS_data_to_string_alloc',
'number',
['number', 'number']),
@@ -181,7 +187,7 @@ interface ArenaObject {
}
-class HashContext implements ArenaObject {
+export class HashContext implements ArenaObject {
private hashContextPtr: number | undefined;
constructor() {
@@ -590,6 +596,29 @@ export class EddsaPrivateKey extends PackedArenaObject {
mixinStatic(EddsaPrivateKey, fromCrock);
+export class EcdsaPrivateKey extends PackedArenaObject {
+ static create(a?: Arena): EcdsaPrivateKey {
+ let obj = new EcdsaPrivateKey(a);
+ obj.nativePtr = emscAlloc.ecdsa_key_create();
+ return obj;
+ }
+
+ size() {
+ return 32;
+ }
+
+ getPublicKey(a?: Arena): EcdsaPublicKey {
+ let obj = new EcdsaPublicKey(a);
+ obj.nativePtr = emscAlloc.ecdsa_public_key_from_private(this.nativePtr);
+ return obj;
+ }
+
+ static fromCrock: (s: string) => EcdsaPrivateKey;
+}
+mixinStatic(EcdsaPrivateKey, fromCrock);
+
+
+
function fromCrock(s: string) {
let x = new this();
x.alloc();
@@ -629,6 +658,16 @@ export class EddsaPublicKey extends PackedArenaObject {
}
mixinStatic(EddsaPublicKey, fromCrock);
+export class EcdsaPublicKey extends PackedArenaObject {
+ size() {
+ return 32;
+ }
+
+ static fromCrock: (s: string) => EcdsaPublicKey;
+}
+mixinStatic(EddsaPublicKey, fromCrock);
+
+
function makeFromCrock(decodeFn: (p: number, s: number) => number) {
function fromCrock(s: string, a?: Arena) {
let obj = new this(a);