@iexec/dataprotector
Version:
This product enables users to confidentially store data–such as mail address, documents, personal information ...
69 lines • 2.5 kB
JavaScript
let db;
export async function storeKeyPair(keyPair) {
if (typeof window === 'undefined' || !('indexedDB' in window)) {
return;
}
return new Promise((resolve, reject) => {
const writeRequest = db
.transaction('keyPair', 'readwrite')
.objectStore('keyPair')
.add({
keyPairName: 'CryptoKeyPair',
keyPair,
});
writeRequest.onerror = (err) => {
console.error('[indexedDB] writeRequest() ERROR', err);
reject(err);
};
writeRequest.onsuccess = () => {
console.log('[indexedDB] keyPair saved');
resolve('Done');
};
});
}
export async function getSavedKeyPair() {
if (typeof window === 'undefined' || !('indexedDB' in window)) {
return;
}
return new Promise((resolve, reject) => {
const openDbRequest = window.indexedDB.open('iexec-dataprotector', 1);
openDbRequest.onerror = (event) => {
console.log('[indexedDB] openDbRequest() ERROR', event);
};
openDbRequest.onsuccess = () => {
db = openDbRequest.result;
const readRequest = db
.transaction('keyPair')
.objectStore('keyPair')
.get('CryptoKeyPair');
readRequest.onerror = (err) => {
console.error('[indexedDB] readRequest() ERROR', err);
reject(err);
};
readRequest.onsuccess = () => {
const keyPair = readRequest.result;
resolve(keyPair);
};
};
openDbRequest.onupgradeneeded = () => {
db = openDbRequest.result;
// Create an objectStore for this database
const objectStore = db.createObjectStore('keyPair', {
keyPath: 'keyPairName',
});
objectStore.transaction.oncomplete = () => {
const readKeyPairRequest = db
.transaction('keyPair', 'readonly')
.objectStore('keyPair')
.get('CryptoKeyPair');
readKeyPairRequest.onerror = (event) => {
console.log('[indexedDB] readKeyPairRequest() ERROR', event);
};
readKeyPairRequest.onsuccess = () => {
resolve(readKeyPairRequest.result);
};
};
};
});
}
//# sourceMappingURL=indexedDb.js.map