Skip to content

Commit

Permalink
feat: add keychain package
Browse files Browse the repository at this point in the history
  • Loading branch information
yknl committed Aug 19, 2020
1 parent 6781230 commit 5fbe772
Show file tree
Hide file tree
Showing 487 changed files with 4,392 additions and 0 deletions.
@@ -0,0 +1 @@
{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}}
@@ -0,0 +1 @@
{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// <reference types=\"node\" />\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise<bip32.BIP32Interface>;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}}
@@ -0,0 +1 @@
{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// <reference types=\"node\" />\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise<Buffer>;\r\n"}}
@@ -0,0 +1 @@
{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}}

Large diffs are not rendered by default.

@@ -0,0 +1 @@
{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// <reference types=\"node\" />\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise<string>;\r\n"}}

Large diffs are not rendered by default.

@@ -0,0 +1 @@
{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}}

0 comments on commit 5fbe772

Please sign in to comment.