Skip to content
This repository has been archived by the owner on Jan 6, 2020. It is now read-only.

refactor/low_level_api: update low level apis #258

Merged
merged 1 commit into from Sep 27, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
414 changes: 238 additions & 176 deletions app/ffi/api/appendable_data.js

Large diffs are not rendered by default.

36 changes: 14 additions & 22 deletions app/ffi/api/cipher_opts.js
Expand Up @@ -22,62 +22,54 @@ class CipherOpts extends FfiApi {
}

getCipherOptPlain() {
const self = this;
const executor = async (resolve, reject) => {
const handleRef = ref.alloc(u64);
return new Promise((resolve, reject) => {
let handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.cipher_opt_new_plaintext.async(handleRef, onResult);
};
return new Promise(executor);
this.safeCore.cipher_opt_new_plaintext.async(handleRef, onResult);
});
}

getCipherOptSymmetric() {
const self = this;
const executor = async (resolve, reject) => {
return new Promise((resolve, reject) => {
const handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.cipher_opt_new_symmetric.async(handleRef, onResult);
};
return new Promise(executor);
this.safeCore.cipher_opt_new_symmetric.async(handleRef, onResult);
});
}

getCipherOptAsymmetric(privateKeyHandle) {
const self = this;
const executor = async (resolve, reject) => {
return new Promise((resolve, reject) => {
const handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.cipher_opt_new_asymmetric.async(privateKeyHandle, handleRef, onResult);
};
return new Promise(executor);
this.safeCore.cipher_opt_new_asymmetric.async(privateKeyHandle, handleRef, onResult);
});
}

dropHandle(handleId) {
const self = this;
const executor = async (resolve, reject) => {
const onResult = (err, res) => {
return new Promise((resolve, reject) => {
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve();
};
self.safeCore.cipher_opt_free.async(handleId, onResult);
};
return new Promise(executor);
this.safeCore.cipher_opt_free.async(handleId, onResult);
});
}

}
Expand Down
28 changes: 11 additions & 17 deletions app/ffi/api/data_id.js
Expand Up @@ -24,47 +24,41 @@ class DataId extends FfiApi {
}

dropHandle(handleId) {
const self = this;
const executor = async (resolve, reject) => {
return new Promise((resolve, reject) => {
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve();
};
self.safeCore.data_id_free.async(handleId, onResult);
};
return new Promise(executor);
this.safeCore.data_id_free.async(handleId, onResult);
});
}

getStructuredDataHandle(typeTag, id) {
const self = this;
const executor = (resolve, reject) => {
getStructuredDataHandle(typeTag = 501, name) {
return new Promise((resolve, reject) => {
const handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.data_id_new_struct_data.async(typeTag, id, handleRef, onResult);
};
return new Promise(executor);
this.safeCore.data_id_new_struct_data.async(typeTag, name, handleRef, onResult);
});
}

getAppendableDataHandle(id, isPrivate) {
const self = this;
const executor = (resolve, reject) => {
getAppendableDataHandle(name, isPrivate = false) {
return new Promise((resolve, reject) => {
const handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.data_id_new_appendable_data.async(id, isPrivate, handleRef, onResult);
};
return new Promise(executor);
this.safeCore.data_id_new_appendable_data.async(name, isPrivate, handleRef, onResult);
});
}

}
Expand Down
59 changes: 45 additions & 14 deletions app/ffi/api/misc.js
Expand Up @@ -26,9 +26,12 @@ class Misc extends FfiApi {
'misc_encrypt_key_free': [int32, [u64]],
'misc_sign_key_free': [int32, [u64]],
'misc_serialise_data_id': [int32, [u64, PointerToU8Pointer, size_tPointer, size_tPointer]],
'misc_deserialise_data_id': [int32, [u8Pointer, u64, u64Pointer]],
'misc_deserialise_data_id': [int32, [u8Pointer, size_t, u64Pointer]],
'misc_serialise_appendable_data': [int32, [u64, PointerToU8Pointer, size_tPointer, size_tPointer]],
'misc_u8_ptr_free': [Void, [u8Pointer, u64, u64]]
'misc_serialise_struct_data': [int32, [u64, PointerToU8Pointer, size_tPointer, size_tPointer]],
'misc_deserialise_appendable_data': [int32, [u8Pointer, size_t, u64Pointer]],
'misc_deserialise_struct_data': [int32, [u8Pointer, size_t, u64Pointer]],
'misc_u8_ptr_free': [Void, [u8Pointer, size_t, size_t]]
};
}

Expand Down Expand Up @@ -103,6 +106,34 @@ class Misc extends FfiApi {
this.safeCore.misc_serialise_appendable_data.async(handleId, dataPointerRef,
sizeRef, capacityRef, onResult);
break;
case 2:
this.safeCore.misc_serialise_structured_data.async(handleId, dataPointerRef,
sizeRef, capacityRef, onResult);
break;
default:
}
});
}

_deserialise(data, type) {
return new Promise((resolve, reject) => {
let handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
switch (type) {
case 0:
this.safeCore.misc_deserialise_data_id.async(data, data.length, handleRef, onResult);
break;
case 1:
this.safeCore.misc_deserialise_appendable_data.async(data, data.length, handleRef, onResult);
break;
case 2:
this.safeCore.misc_deserialise_structured_data.async(data, data.length, handleRef, onResult);
break;
default:
}
});
Expand All @@ -116,21 +147,21 @@ class Misc extends FfiApi {
return this._serialise(handleId, 1);
}

serialiseStructuredData(handleId) {
return this._serialise(handleId, 2);
}

deserialiseDataId(data) {
const self = this;
const executor = (resolve, reject) => {
const handleRef = ref.alloc(u64);
const onResult = (err, res) => {
if (err || res !== 0) {
return reject(err || res);
}
resolve(handleRef.deref());
};
self.safeCore.misc_deserialise_data_id.async(data, data.length, handleRef, onResult);
};
return new Promise(executor);
return this._deserialise(data, 0);
}

deserialiseAppendableData(data) {
return this._deserialise(data, 1);
}

deserialiseStructuredData(data) {
return this._deserialise(data, 2);
}
}

const misc = new Misc();
Expand Down