| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package service
- import (
- "context"
- "key-manager/crypto"
- "key-manager/dao"
- "key-manager/hd"
- "key-manager/key"
- )
- func (km *KeyManager) CreateMnemonic(ctx context.Context, req *CreateMnemonicRequest) (*CreateMnemonicResponse, error) {
- km.lk.Lock()
- defer km.lk.Unlock()
- mType := hd.MnemonicType(req.MnemonicType)
- if hd.Mnemonic12 != mType && hd.Mnemonic24 != mType {
- return &CreateMnemonicResponse{
- Code: mnemonicTypeErrCode,
- Msg: mnemonicTypeErrMsg,
- }, nil
- }
- if req.Name == "" {
- return &CreateMnemonicResponse{
- Code: mnemonicNameErrCode,
- Msg: mnemonicNameErrMsg,
- }, nil
- }
- log.Infow("CreateMnemonic", "name", req.Name, "mnemonic", mType.String())
- passwordKey := crypto.GenerateEncryptKey([]byte(km.password))
- mnemonic, err := key.GenerateMnemonic(mType)
- if err != nil {
- log.Warnw("CreateMnemonic: ", "err", err)
- return &CreateMnemonicResponse{
- Code: GenerateMnemonicErrCode,
- Msg: err.Error(),
- }, nil
- }
- encryptedMnemonic, err := encryptMnemonic(mnemonic, passwordKey)
- if err != nil {
- log.Warnw("CreateMnemonic: ", "err", err)
- return &CreateMnemonicResponse{
- Code: encryptMnemonicErrCode,
- Msg: err.Error(),
- }, nil
- }
- err = km.dao.CreateMnemonic(&dao.Mnemonic{
- Name: req.Name,
- Mnemonic: encryptedMnemonic,
- })
- if err != nil {
- log.Warnw("CreateMnemonic: ", "err", err)
- return &CreateMnemonicResponse{
- Code: dbErrCode,
- Msg: err.Error(),
- }, nil
- }
- km.mnemonics[req.Name] = mnemonic
- return &CreateMnemonicResponse{
- Code: okCode,
- Msg: okMsg,
- }, nil
- }
|