mirror of
https://github.com/LBRYFoundation/lbcwallet.git
synced 2025-08-23 17:47:29 +00:00
Address a couple of nits with recent En(De)crypt.
This commit adds comments about the specific crypto key types, moves the selectCryptoKey function before the Encrypt/Decrypt functions that call it to be more consistent with the rest of the code base, and slightly modifies the verbiage of the comment.
This commit is contained in:
parent
7f7f6f33cb
commit
732ffe4ed1
1 changed files with 38 additions and 27 deletions
|
@ -180,8 +180,17 @@ type CryptoKeyType byte
|
||||||
|
|
||||||
// Crypto key types.
|
// Crypto key types.
|
||||||
const (
|
const (
|
||||||
|
// CKTPrivate specifies the key that is used for encryption of private
|
||||||
|
// key material such as derived extended private keys and imported
|
||||||
|
// private keys.
|
||||||
CKTPrivate CryptoKeyType = iota
|
CKTPrivate CryptoKeyType = iota
|
||||||
|
|
||||||
|
// CKTScript specifies the key that is used for encryption of scripts.
|
||||||
CKTScript
|
CKTScript
|
||||||
|
|
||||||
|
// CKTPublic specifies the key that is used for encryption of public
|
||||||
|
// key material such as dervied extended public keys and imported public
|
||||||
|
// keys.
|
||||||
CKTPublic
|
CKTPublic
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1465,6 +1474,35 @@ func (m *Manager) AllActiveAddresses() ([]btcutil.Address, error) {
|
||||||
return addrs, nil
|
return addrs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// selectCryptoKey selects the appropriate crypto key based on the key type. An
|
||||||
|
// error is returned when an invalid key type is specified or the requested key
|
||||||
|
// requires the manager to be unlocked when it isn't.
|
||||||
|
//
|
||||||
|
// This function MUST be called with the manager lock held for reads.
|
||||||
|
func (m *Manager) selectCryptoKey(keyType CryptoKeyType) (EncryptorDecryptor, error) {
|
||||||
|
if keyType == CKTPrivate || keyType == CKTScript {
|
||||||
|
// The manager must be unlocked to encrypt with the private keys.
|
||||||
|
if m.locked || m.watchingOnly {
|
||||||
|
return nil, managerError(ErrLocked, errLocked, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var cryptoKey EncryptorDecryptor
|
||||||
|
switch keyType {
|
||||||
|
case CKTPrivate:
|
||||||
|
cryptoKey = m.cryptoKeyPriv
|
||||||
|
case CKTScript:
|
||||||
|
cryptoKey = m.cryptoKeyScript
|
||||||
|
case CKTPublic:
|
||||||
|
cryptoKey = m.cryptoKeyPub
|
||||||
|
default:
|
||||||
|
return nil, managerError(ErrInvalidKeyType, "invalid key type",
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cryptoKey, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Encrypt in using the crypto key type specified by keyType.
|
// Encrypt in using the crypto key type specified by keyType.
|
||||||
func (m *Manager) Encrypt(keyType CryptoKeyType, in []byte) ([]byte, error) {
|
func (m *Manager) Encrypt(keyType CryptoKeyType, in []byte) ([]byte, error) {
|
||||||
// Encryption must be performed under the manager mutex since the
|
// Encryption must be performed under the manager mutex since the
|
||||||
|
@ -1503,33 +1541,6 @@ func (m *Manager) Decrypt(keyType CryptoKeyType, in []byte) ([]byte, error) {
|
||||||
return decrypted, nil
|
return decrypted, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// selectCryptoKey selects the appropriate crypto key based on the
|
|
||||||
// keyType. If the keyType is invalid or the key requested requires
|
|
||||||
// the manager to be unlocked, an error is returned.
|
|
||||||
func (m *Manager) selectCryptoKey(keyType CryptoKeyType) (EncryptorDecryptor, error) {
|
|
||||||
if keyType == CKTPrivate || keyType == CKTScript {
|
|
||||||
// The manager must be unlocked to encrypt with the private keys.
|
|
||||||
if m.locked || m.watchingOnly {
|
|
||||||
return nil, managerError(ErrLocked, errLocked, nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var cryptoKey EncryptorDecryptor
|
|
||||||
switch keyType {
|
|
||||||
case CKTPrivate:
|
|
||||||
cryptoKey = m.cryptoKeyPriv
|
|
||||||
case CKTScript:
|
|
||||||
cryptoKey = m.cryptoKeyScript
|
|
||||||
case CKTPublic:
|
|
||||||
cryptoKey = m.cryptoKeyPub
|
|
||||||
default:
|
|
||||||
return nil, managerError(ErrInvalidKeyType, "invalid key type",
|
|
||||||
nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
return cryptoKey, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// newManager returns a new locked address manager with the given parameters.
|
// newManager returns a new locked address manager with the given parameters.
|
||||||
func newManager(db *managerDB, net *btcnet.Params, masterKeyPub *snacl.SecretKey,
|
func newManager(db *managerDB, net *btcnet.Params, masterKeyPub *snacl.SecretKey,
|
||||||
masterKeyPriv *snacl.SecretKey, cryptoKeyPub EncryptorDecryptor,
|
masterKeyPriv *snacl.SecretKey, cryptoKeyPub EncryptorDecryptor,
|
||||||
|
|
Loading…
Add table
Reference in a new issue