mcps-sdk-js
Version:
MCPS JavaScript SDK
66 lines (56 loc) • 1.83 kB
text/typescript
import * as types from './types';
/**
* Key DAO Interface, to be implemented by apps if they need the key management.
*/
export interface KeyDAO {
/**
* Save the encrypted private key to app
*
* @param name Name of the key
* @param key The encrypted private key object
* @throws `SdkError` if the save fails.
*/
write(name: string, key: types.Key): void;
/**
* Get the encrypted private key by name
*
* @param name Name of the key
* @returns The encrypted private key object or undefined
*/
read(name: string): types.Key;
/**
* Delete the key by name
* @param name Name of the key
* @throws `SdkError` if the deletion fails.
*/
delete(name: string): void;
/**
* Optional function to encrypt the private key by yourself. Default to AES Encryption
* @param privKey The plain private key
* @param password The password to encrypt the private key
* @returns The encrypted private key
* @throws `SdkError` if encrypt failed
*/
encrypt?(privKey: string, password: string): string;
/**
* Optional function to decrypt the private key by yourself. Default to AES Decryption
* @param encrptedPrivKey The encrpted private key
* @param password The password to decrypt the private key
* @returns The plain private key
* @throws `SdkError` if decrypt failed
*/
decrypt?(encrptedPrivKey: string, password: string): string;
}
/** Cache KeyDAO */
export class CacheKeyDAO implements KeyDAO {
keyMap: { [key: string]: types.Key } = {};
write(name: string, key: types.Key) {
this.keyMap[name] = key;
}
read(name: string): types.Key {
return this.keyMap[name];
}
delete(name: string) {
delete this.keyMap[name];
}
}