Normal version:
<script src="/build/stellar-wallet.js"></script>
Minified version:
<script src="/build/stellar-wallet.min.js"></script>
var StellarWallet = require('stellar-wallet-js-sdk');
Creates a wallet and uploads it to stellar-wallet server.
This method returns Wallet
object.
Heads up! Choose
kdfParams
carefully - it may affect performance.
StellarWallet.createWallet({
// Required
server: "https://wallet-server.com",
// Required
username: "[email protected]",
// Required
password: "cat-walking-on-keyboard",
// Public key, base64 encoded
publicKey: "WLM5f+YYuNmu+WACddpIynHzSAneR2OxF3gJeEjUI2M=",
// mainData: must be a string. If you want to send JSON stringify it.
mainData: "Your main data.",
// keychainData: must be a string. If you want to send JSON stringify it.
keychainData: "Your keychain data.",
// If omitted, it will be fetched from stellar-wallet server
kdfParams: {
algorithm: 'scrypt',
bits: 256,
n: Math.pow(2,16),
r: 8,
p: 1
}
}).then(function(wallet) {
// wallet is Wallet object
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.InvalidField, function(e) {
console.error('Invalid field.');
}).catch(StellarWallet.errors.UsernameAlreadyTaken, function(e) {
console.error('Username has been already taken.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
To generate a keypair you can use: StellarWallet.util.generateKeyPair()
.
Retrieves a wallet from stellar-wallet server.
This method returns Wallet
object.
StellarWallet.getWallet({
// Required
server: "https://wallet-server.com",
// Required
username: "[email protected]",
// Required
password: "cat-walking-on-keyboard"
}).then(function(wallet) {
// wallet is Wallet object
}).catch(StellarWallet.errors.WalletNotFound, function(e) {
console.error('Wallet not found.');
}).catch(StellarWallet.errors.Forbidden, function(e) {
console.error('Forbidden access.');
}).catch(StellarWallet.errors.TotpCodeRequired, function(e) {
console.error('Totp code required.');
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
You can also get wallet using masterKey
. It's helpful during recovery process:
StellarWallet.getWallet({
// Required
server: "https://wallet-server.com",
// Required
username: "[email protected]",
// Base64 encoded master key
masterKey: "masterKey"
}).then(function(wallet) {
// wallet is Wallet object
}).catch(StellarWallet.errors.WalletNotFound, function(e) {
console.error('Wallet not found.');
}).catch(StellarWallet.errors.Forbidden, function(e) {
console.error('Forbidden access.');
}).catch(StellarWallet.errors.TotpCodeRequired, function(e) {
console.error('Totp code required.');
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
Creates Wallet
object from serialized/stringified form.
Allows user to recover wallet's masterKey
using recoveryCode
. Recovery
must be first enabled.
If TOTP is enabled additional totpCode
parameter must be passed.
StellarWallet.recover({
// Required
server: "https://wallet-server.com",
// Required
username: "[email protected]",
// Required
recoveryCode: "recoveryCode"
}).then(function(masterKey) {
// masterKey is recovered wallet masterKey.
// You can create Wallet object using getWallet method.
}).catch(StellarWallet.errors.Forbidden, function(e) {
console.error('Forbidden access.');
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
When user lost TOTP device, grace period request may be sent to stellar-wallet server to disable 2FA.
StellarWallet.lostTotpDevice({
// Required
server: "https://wallet-server.com",
// Required
username: "[email protected]",
// Required
password: "password"
}).then(function() {
// Request was sent. Due to security reasons stellar-wallet won't inform you
// whether grace period has been started or not.
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
getWallet
and createWallet
methods return Wallet
object. Wallet
object
has following methods:
Returns stellar-wallet server URL.
Returns username associated with this wallet.
Returns walletId
.
Returns mainData
string.
var mainData = wallet.getMainData();
Updates mainData
on the stellar-wallet server.
wallet.updateMainData({
mainData: "newMainData",
secretKey: keyPair.secretKey
}).then(function() {
// Main data updated
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});;
Returns keychainData
string.
Enables TOTP to user's wallet. To generate totpKey
you can use:
StellarWallet.util.generateTotpKey()
. totpCode
is a current code generated
by user's TOTP app. It's role is to confirm a user has succesfully setup
TOTP generator.
var totpKey = StellarWallet.util.generateTotpKey();
wallet.enableTotp({
totpKey: totpKey,
totpCode: totpCode,
secretKey: keyPair.secretKey
}).then(function() {
// Everything went fine
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.InvalidTotpCode, function(e) {
console.error('Invalid Totp code.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
Disables TOTP.
wallet.disableTotp({
totpCode: totpCode,
secretKey: keyPair.secretKey
}).then(function() {
// Everything went fine
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.InvalidTotpCode, function(e) {
console.error('Invalid Totp code.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
Enables recovery to user's wallet. To generate recoveryCode
you can use:
StellarWallet.util.generateRandomRecoveryCode()
.
var recoveryCode = StellarWallet.util.generateRandomRecoveryCode();
wallet.enableRecovery({
recoveryCode: recoveryCode,
secretKey: keyPair.secretKey
}).then(function() {
// Everything went fine
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
After recovery is enabled you can use recover
method to recover wallet's
masterKey
.
Allows user to change password.
Heads up! This method changes all values derived from and
masterKey
itself.
wallet.enableRecovery({
newPassword: 'some-good-new-password',
secretKey: keyPair.secretKey
}).then(function() {
// Everything went fine
}).catch(StellarWallet.errors.MissingField, function(e) {
console.error('Missing field: '+e.field+'.');
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
You can pass additional parameter: kdfParams
. If it's not passed kdfParams
will be fetched from stellar-wallet server.
Removes wallet from stellar-wallet server.
Heads up! This method removes all wallet data from the server! This operation cannot be undone.
wallet.delete({
secretKey: keyPair.secretKey
}).then(function() {
// Everything went... well... fine
}).catch(StellarWallet.errors.ConnectionError, function(e) {
console.log('Connection error.');
}).catch(function(e) {
console.log('Unknown error.');
});
Generates Totp key you can use in setupTotp
.
Generates Totp uri based on user's key. You can encode it as a QR code and show to a user.
var key = StellarWallet.util.generateTotpKey();
var uri = StellarWallet.util.generateTotpUri(key, {
// Your organization name
issuer: 'Stellar Development Foundation',
// Account name
accountName: '[email protected]'
});
Generates and returns Ed25519 key pair object containing following properties:
address
secret
publicKey
secretKey
Example:
{
"address": "gGc6bA2EuMcjyDCGeXJcWPCjQtekURgA98",
"secret": "sfFAfccyhCago1Hatg94AVz4YMJG5DNqTz12jDCFrg9S2KY28zX",
"secretKey": "WWNJnJkLuuGps93BHubQwPECLiJjeSfd8SwW9G/BHGAJUnu1B4/1+lhZhcQh2nCjnsYmBL9wZ1EU48ZW7mdGjA==",
"publicKey": "CVJ7tQeP9fpYWYXEIdpwo57GJgS/cGdRFOPGVu5nRow="
}
Generates random recovery code you can use in enableRecovery
.
npm install
gulp build
npm install
gulp watch
# Node
npm test
# Browser
zuul ./test/wallet.js --local