新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

Commit e43f9ce8 authored by taifu yuan's avatar taifu yuan 🏸 Committed by taifu yuan

feat:(cert_alias_manage_contract.go) add cert alias

parent 30ccae1f
/*
* Copyright (C) BABEC. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
package certmgr
import (
"bytes"
"encoding/hex"
"encoding/json"
"fmt"
"strconv"
"strings"
accesscontrolPb "chainmaker.org/chainmaker/pb-go/v2/accesscontrol"
commonPb "chainmaker.org/chainmaker/pb-go/v2/common"
"chainmaker.org/chainmaker/protocol/v2"
"chainmaker.org/chainmaker/utils/v2"
"github.com/gogo/protobuf/proto"
)
func (r *CertManageRuntime) AddAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
// 1. get params and verify fmt
// 2. verify exist
// 3. save alias info
// 4. return
name := string(params[paramNameAlias])
name = strings.TrimSpace(name)
if utils.IsAnyBlank(name) {
err = fmt.Errorf("add alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
if !aliasNameReg.MatchString(name) {
err = fmt.Errorf("add alias failed, alias name[%s] must match %s", name, aliasNameRegStr)
r.log.Warn(err)
return nil, err
}
sender := txSimContext.GetTx().Sender.Signer
if sender.MemberType != accesscontrolPb.MemberType_CERT {
err = fmt.Errorf("add alias failed, MemberType must be MemberType_CERT ")
r.log.Warn(err)
return nil, err
}
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
err = fmt.Errorf("add alias failed, %s", err.Error())
r.log.Warn(err)
return nil, err
}
if certAliasInfo != nil && len(certAliasInfo.NowCert.Cert) > 0 {
err = fmt.Errorf("add alias failed, alias[%s] already exist", name)
r.log.Warn(err)
return nil, err
}
err = r.addAliasCore(txSimContext, name, sender.GetMemberInfo(), certAliasInfo)
if err != nil {
r.log.Warn(err)
return nil, err
}
return []byte("ok"), nil
}
// 本组织管理员
func (r *CertManageRuntime) UpdateAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
// 1. get params and verify fmt
// 2. verify sender org
// 3. replace now cert
// 4. append to history cert
// 5. save alias info
// 6. return
cert := string(params[paramNameCert])
name := string(params[paramNameAlias])
cert = strings.TrimSpace(cert)
name = strings.TrimSpace(name)
if utils.IsAnyBlank(name, cert) {
err = fmt.Errorf("update alias failed, alias name or cert is nil")
r.log.Warn(err)
return nil, err
}
if !aliasNameReg.MatchString(name) {
err = fmt.Errorf("update alias failed, alias name[%s] must match %s", name, aliasNameRegStr)
r.log.Warn(err)
return nil, err
}
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Warn(err)
return nil, err
}
if certAliasInfo == nil || len(certAliasInfo.NowCert.Cert) == 0 {
// if non-existent return
err = fmt.Errorf("update alias fail, alias[%s] not exist", name)
r.log.Warn(err)
return nil, err
// if non-existent insert
//err = r.addAliasCore(txSimContext, name, []byte(cert))
//if err != nil {
// r.log.Warn(err)
// return nil, err
//}
//return []byte("ok"), nil
}
// verify org
certificate, err := utils.ParseCert([]byte(cert))
if err != nil || certificate == nil || certificate.Subject.Organization == nil {
err = fmt.Errorf("update alias fail, params[%s] format error, err:%s", paramNameCert, err)
r.log.Warn(err)
return nil, err
}
nowCertificate, err := utils.ParseCert(certAliasInfo.NowCert.Cert)
if err != nil || nowCertificate == nil || nowCertificate.Subject.Organization == nil {
err = fmt.Errorf("update alias fail, params[%s] format error, err:%s", paramNameCert, err)
r.log.Warn(err)
return nil, err
}
if txSimContext.GetSender().OrgId != certificate.Subject.Organization[0] {
return nil, fmt.Errorf("update alias fail, "+
"you can't change other organization cert. "+
"your org is %s cert org is %s",
txSimContext.GetSender().OrgId, certificate.Subject.Organization[0])
}
if txSimContext.GetSender().OrgId != nowCertificate.Subject.Organization[0] {
return nil, fmt.Errorf("update alias fail, "+
"you can't change other organization cert. "+
"your org is %s cert org is %s",
txSimContext.GetSender().OrgId, nowCertificate.Subject.Organization[0])
}
nowCert := &commonPb.AliasCertInfo{
Cert: []byte(cert),
BlockHeight: txSimContext.GetBlockHeight(),
}
err = r.setCertHash(txSimContext, nowCert)
if err != nil {
return nil, err
}
if bytes.Equal(certAliasInfo.NowCert.Cert, nowCert.Cert) {
return nil, fmt.Errorf("update alias fail, alias[%s] is already the cert", name)
}
certAliasInfo.NowCert = nowCert
h := certAliasInfo.HisCerts
h = append(h, nowCert)
if len(h) > maxHisCertsLen {
certAliasInfo.HisCerts = h[len(h)-maxHisCertsLen:]
} else {
certAliasInfo.HisCerts = h
}
err = r.setAliasToDb(txSimContext, certAliasInfo)
if err != nil {
return nil, err
}
r.log.Infof("update alias success, alias[%s] cert[%s]", name, cert)
return []byte("ok"), nil
}
// 本组织管理员
func (r *CertManageRuntime) DeleteAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
// 1. get params and verify fmt
// 2. verify sender org
// 3. replace now cert
// 4. append to history cert
// 5. save none alias
// 6. return
names := string(params[paramNameAliases])
names = strings.TrimSpace(names)
if utils.IsAnyBlank(names) {
err = fmt.Errorf("update alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
nameList := strings.Split(names, ",")
for _, name := range nameList {
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Warn(err)
return nil, err
}
if certAliasInfo == nil || len(certAliasInfo.NowCert.Cert) == 0 {
err = fmt.Errorf("delete alias fail, alias[%s] not exist", name)
r.log.Warn(err)
return nil, err
}
// verify org
certificate, err := utils.ParseCert(certAliasInfo.NowCert.Cert)
if err != nil || certificate == nil || certificate.Subject.Organization == nil {
err = fmt.Errorf("update alias fail, params[%s] format error, err:%s", paramNameCert, err)
r.log.Warn(err)
return nil, err
}
if txSimContext.GetSender().OrgId != certificate.Subject.Organization[0] {
return nil, fmt.Errorf("delete alias fail, "+
"you can't change other organization cert. "+
"your org is %s cert org is %s",
txSimContext.GetSender().OrgId, certificate.Subject.Organization[0])
}
blankCert := &commonPb.AliasCertInfo{BlockHeight: txSimContext.GetBlockHeight()}
certAliasInfo.NowCert = blankCert
h := certAliasInfo.HisCerts
h = append(h, blankCert)
if len(h) > maxHisCertsLen {
certAliasInfo.HisCerts = h[len(h)-maxHisCertsLen:]
} else {
certAliasInfo.HisCerts = h
}
err = r.setAliasToDb(txSimContext, certAliasInfo)
if err != nil {
return nil, err
}
r.log.Infof("delete alias[%s] success", name)
}
return []byte("ok"), nil
}
func (r *CertManageRuntime) QueryAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
names := string(params[paramNameAliases])
names = strings.TrimSpace(names)
if utils.IsAnyBlank(names) {
err = fmt.Errorf("query alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
nameList := strings.Split(names, ",")
infos := commonPb.AliasInfos{}
for _, name := range nameList {
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Error(err)
return nil, err
}
if certAliasInfo == nil {
err = fmt.Errorf("query alias failed, not found alias[%s], you should add alias first", name)
r.log.Warn(err)
return nil, err
}
infos.AliasInfos = append(infos.AliasInfos, certAliasInfo)
}
return infos.Marshal()
}
func (r *CertManageRuntime) addAliasCore(txSimContext protocol.TxSimContext, aliasName string,
certBytes []byte, certAliasInfo *commonPb.AliasInfo) error {
nowCert := &commonPb.AliasCertInfo{
Cert: certBytes,
BlockHeight: txSimContext.GetBlockHeight(),
}
err := r.setCertHash(txSimContext, nowCert)
if err != nil {
return err
}
if certAliasInfo == nil {
certAliasInfo = &commonPb.AliasInfo{Alias: aliasName}
}
//err = r.saveAllAlias(txSimContext, aliasName)
//if err != nil {
// return err
//}
certAliasInfo.NowCert = nowCert
certAliasInfo.HisCerts = append(certAliasInfo.HisCerts, nowCert)
err = r.setAliasToDb(txSimContext, certAliasInfo)
if err != nil {
return err
}
r.log.Infof("add alias success, alias[%s] cert[%s]", aliasName, certBytes)
return err
}
func (r *CertManageRuntime) FreezeAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
// get alias
names := string(params[paramNameAliases])
names = strings.TrimSpace(names)
if utils.IsAnyBlank(names) {
err = fmt.Errorf("freeze alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
nameList := strings.Split(names, ",")
for _, name := range nameList {
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Error(err)
return nil, err
}
if certAliasInfo == nil {
err = fmt.Errorf("freeze alias failed, not found alias[%s], you should add alias first", name)
r.log.Warn(err)
return nil, err
}
//if certAliasInfo.Status != AliasStatusNormal.String() {
// err = fmt.Errorf("freeze alias failed, alias[%s] status[%s] is not normal", name, certAliasInfo.Status)
// r.log.Warn(err)
// return nil, err
//}
//// save status
//certAliasInfo.Status = AliasStatusFrozen.String()
err = r.setAliasToDb(txSimContext, certAliasInfo)
if err != nil {
return nil, err
}
r.log.Infof("freeze alias success, alias[%s]", name)
}
return []byte("ok"), nil
}
func (r *CertManageRuntime) UnfreezeAlias(txSimContext protocol.TxSimContext, params map[string][]byte) (
result []byte, err error) {
// get alias
names := string(params[paramNameAliases])
names = strings.TrimSpace(names)
if utils.IsAnyBlank(names) {
err = fmt.Errorf("unfreeze alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
nameList := strings.Split(names, ",")
for _, name := range nameList {
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Error(err)
return nil, err
}
if certAliasInfo == nil {
err = fmt.Errorf("unfreeze alias failed, not found alias[%s], you should add alias first", name)
r.log.Warn(err)
return nil, err
}
//if certAliasInfo.Status == AliasStatusDeleted.String() {
// err = fmt.Errorf("freeze alias failed, alias[%s] has been deleted", name)
// r.log.Warn(err)
// return nil, err
//}
//if certAliasInfo.Status != AliasStatusFrozen.String() {
// err = fmt.Errorf("freeze alias failed, alias[%s] status[%s] is not frozen", name, certAliasInfo.Status)
// r.log.Warn(err)
// return nil, err
//}
//// save status
//certAliasInfo.Status = AliasStatusNormal.String()
err = r.setAliasToDb(txSimContext, certAliasInfo)
if err != nil {
return nil, err
}
r.log.Infof("unfreeze alias success, alias[%s]", name)
}
return []byte("ok"), nil
}
func (r *CertManageRuntime) QueryCertByAliasAndBlockHeight(txSimContext protocol.TxSimContext,
params map[string][]byte) (result []byte, err error) {
name := string(params[paramNameAlias])
blockHeight := string(params[paramBlockHeight])
name = strings.TrimSpace(name)
height, err := strconv.Atoi(blockHeight)
if err != nil {
err = fmt.Errorf("query alias failed, params[%s] not number", paramBlockHeight)
r.log.Warn(err)
return nil, err
}
if utils.IsAnyBlank(name) {
err = fmt.Errorf("query alias failed, alias name is nil")
r.log.Warn(err)
return nil, err
}
certAliasInfo, err := r.getAliasFromDb(txSimContext, name)
if err != nil {
r.log.Warn(err)
return nil, err
}
if certAliasInfo == nil {
err = fmt.Errorf("query alias failed, not found alias[%s], you should add alias first", name)
r.log.Warn(err)
return nil, err
}
hisCert := &commonPb.AliasCertInfo{}
for _, cert := range certAliasInfo.HisCerts {
if cert.BlockHeight <= uint64(height) {
hisCert = cert
}
}
return hisCert.Marshal()
}
//func (r *CertManageRuntime) saveAllAlias(txSimContext protocol.TxSimContext, aliasStr string) error {
// allAliasBytes, err := txSimContext.Get(certManageContractName, []byte(certAliasKey+"all"))
// if err != nil {
// r.log.Warnf("save all alias failed, err: ", err.Error())
// return err
// }
// allAlias := string(allAliasBytes)
// if len(allAlias) > 0 {
// allAlias += ","
// }
// allAlias += aliasStr
// _ = txSimContext.Put(certManageContractName, []byte(certAliasKey+"all"), []byte(allAlias))
// return nil
//}
func (r *CertManageRuntime) setAliasToDb(txSimContext protocol.TxSimContext, certAliasInfo *commonPb.AliasInfo) error {
certAliasBytes, err := certAliasInfo.Marshal()
if err != nil {
r.log.Warnf("inner error, proto marshal fail, err: ", err.Error())
return err
}
alias := hex.EncodeToString([]byte(certAliasInfo.Alias))
_ = txSimContext.Put(certManageContractName, []byte(certAliasKey+certAliasInfo.Alias), certAliasBytes)
_ = txSimContext.Put(certManageContractName, []byte(alias), certAliasInfo.NowCert.Cert)
return nil
}
func (r *CertManageRuntime) getAliasFromDb(txSimContext protocol.TxSimContext, aliasStr string) (
*commonPb.AliasInfo, error) {
if utils.IsAnyBlank(aliasStr) {
err := fmt.Errorf("params[%s] is empty", paramNameAlias)
r.log.Warn(err)
return nil, err
}
if err := protocol.CheckKeyFieldStr(aliasStr, ""); err != nil {
r.log.Warn(err)
return nil, err
}
certAliasBytes, err := txSimContext.Get(certManageContractName, []byte(certAliasKey+aliasStr))
if err != nil {
r.log.Errorf("inner error, get alias from db failed, err: ", err.Error())
return nil, err
}
if certAliasBytes == nil {
return nil, nil
}
certAliasInfo := &commonPb.AliasInfo{}
err = proto.Unmarshal(certAliasBytes, certAliasInfo)
if err != nil {
r.log.Errorf("inner error, proto unmarshal AliasInfo fail, err: ", err.Error())
return nil, err
}
return certAliasInfo, nil
}
func (r *CertManageRuntime) setCertHash(txSimContext protocol.TxSimContext, nowCert *commonPb.AliasCertInfo) error {
ac, err := txSimContext.GetAccessControl()
if err != nil {
r.log.Errorf("txSimContext.GetAccessControl failed, err: %s", err.Error())
return err
}
hashType := ac.GetHashAlg()
certHash, err := utils.GetCertificateIdHex(nowCert.Cert, hashType)
if err != nil {
r.log.Errorf("get certHash failed, err: %s", err.Error())
return err
}
nowCert.Hash = certHash
return nil
}
func (r *CertManageRuntime) addFreezeAliasArray(txSimContext protocol.TxSimContext, alias string) error {
aliases, err := r.getFreezeAliasArray(txSimContext)
if err != nil {
return err
}
aliases = append(aliases, alias)
marshal, err := json.Marshal(aliases)
if err != nil {
r.log.Warnf("freezeKeyArray err: ", err.Error())
return err
}
err = txSimContext.Put(certManageContractName, []byte(protocol.CertFreezeKey), marshal)
return nil
}
func (r *CertManageRuntime) removeFreezeAliasArray(txSimContext protocol.TxSimContext, alias string) error {
aliases, err := r.getFreezeAliasArray(txSimContext)
if err != nil {
return err
}
idx := -1
for i, a := range aliases {
if a == alias {
idx = i
break
}
}
if idx >= 0 {
aliases = append(aliases[:idx], aliases[idx+1:]...)
}
marshal, err := json.Marshal(aliases)
if err != nil {
r.log.Warnf("freezeKeyArray err: ", err.Error())
return err
}
err = txSimContext.Put(certManageContractName, []byte(protocol.CertFreezeKey), marshal)
return nil
}
func (r *CertManageRuntime) getFreezeAliasArray(txSimContext protocol.TxSimContext) ([]string, error) {
freezeKeyArray := make([]string, 0)
freezeKeyArrayBytes, err := txSimContext.Get(certManageContractName,
[]byte(protocol.CertAliasFreezeKey))
if err != nil {
r.log.Warnf("txSimContext get CERT_ALIAS_FREEZE err: ", err.Error())
return nil, err
}
if len(freezeKeyArrayBytes) > 0 {
err := json.Unmarshal(freezeKeyArrayBytes, &freezeKeyArray)
if err != nil {
r.log.Warnf("unmarshal freeze alias array err: ", err.Error())
return nil, err
}
}
return freezeKeyArray, nil
}
......@@ -17,6 +17,7 @@ import (
"encoding/pem"
"errors"
"fmt"
"regexp"
"strings"
bcx509 "chainmaker.org/chainmaker/common/v2/crypto/x509"
......@@ -35,6 +36,19 @@ const (
paramNameCertHashes = "cert_hashes"
paramNameCerts = "certs"
paramNameCertCrl = "cert_crl"
paramBlockHeight = "block_height"
paramNameAlias = "alias"
paramNameCert = "cert"
paramNameAliases = "aliases"
maxHisCertsLen = 10
)
var (
certManageContractName = syscontract.SystemContract_CERT_MANAGE.String()
certAliasKey = "cert_alias#"
aliasNameRegStr = "^[a-zA-Z0-9][a-zA-Z0-9_.,-]{0,63}$"
aliasNameReg = regexp.MustCompile(aliasNameRegStr)
)
type CertManageContract struct {
......@@ -58,13 +72,29 @@ func registerCertManageContractMethods(log protocol.Logger) map[string]common.Co
// cert manager
certManageRuntime := &CertManageRuntime{log: log}
methodMap[syscontract.CertManageFunction_CERT_ADD.String()] = common.WrapResultFunc(certManageRuntime.Add)
methodMap[syscontract.CertManageFunction_CERTS_DELETE.String()] = common.WrapResultFunc(certManageRuntime.Delete)
methodMap[syscontract.CertManageFunction_CERTS_FREEZE.String()] = common.WrapResultFunc(certManageRuntime.Freeze)
methodMap[syscontract.CertManageFunction_CERTS_UNFREEZE.String()] = common.WrapResultFunc(certManageRuntime.Unfreeze)
methodMap[syscontract.CertManageFunction_CERTS_REVOKE.String()] = common.WrapResultFunc(certManageRuntime.Revoke)
methodMap[syscontract.CertManageFunction_CERT_ADD.String()] = common.WrapResultFunc(
certManageRuntime.Add)
methodMap[syscontract.CertManageFunction_CERTS_DELETE.String()] = common.WrapResultFunc(
certManageRuntime.Delete)
methodMap[syscontract.CertManageFunction_CERTS_FREEZE.String()] = common.WrapResultFunc(
certManageRuntime.Freeze)
methodMap[syscontract.CertManageFunction_CERTS_UNFREEZE.String()] = common.WrapResultFunc(
certManageRuntime.Unfreeze)
methodMap[syscontract.CertManageFunction_CERTS_REVOKE.String()] = common.WrapResultFunc(
certManageRuntime.Revoke)
methodMap[syscontract.CertManageFunction_CERT_ALIAS_ADD.String()] = common.WrapResultFunc(
certManageRuntime.AddAlias)
methodMap[syscontract.CertManageFunction_CERT_ALIAS_UPDATE.String()] = common.WrapResultFunc(
certManageRuntime.UpdateAlias)
methodMap[syscontract.CertManageFunction_CERTS_ALIAS_DELETE.String()] = common.WrapResultFunc(
certManageRuntime.DeleteAlias)
// query
methodMap[syscontract.CertManageFunction_CERTS_QUERY.String()] = common.WrapResultFunc(certManageRuntime.Query)
methodMap[syscontract.CertManageFunction_CERTS_QUERY.String()] = common.WrapResultFunc(
certManageRuntime.Query)
methodMap[syscontract.CertManageFunction_CERTS_ALIAS_QUERY.String()] = common.WrapResultFunc(
certManageRuntime.QueryAlias)
return methodMap
}
......@@ -91,7 +121,7 @@ func (r *CertManageRuntime) Add(txSimContext protocol.TxSimContext, _ map[string
return nil, err
}
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHash), memberInfo)
err = txSimContext.Put(certManageContractName, []byte(certHash), memberInfo)
if err != nil {
r.log.Warnf("certManage add cert failed, err: %s", err.Error())
return nil, err
......@@ -117,7 +147,7 @@ func (r *CertManageRuntime) Delete(txSimContext protocol.TxSimContext, params ma
certHashes := strings.Split(certHashesStr, ",")
for _, certHash := range certHashes {
bytes, err := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHash))
bytes, err := txSimContext.Get(certManageContractName, []byte(certHash))
if err != nil {
r.log.Warnf("certManage delete the certHash failed, certHash[%s], err: %s", certHash, err.Error())
return nil, err
......@@ -130,7 +160,7 @@ func (r *CertManageRuntime) Delete(txSimContext protocol.TxSimContext, params ma
return nil, errors.New(msg)
}
err = txSimContext.Del(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHash))
err = txSimContext.Del(certManageContractName, []byte(certHash))
if err != nil {
r.log.Warnf("certManage txSimContext.Del failed, certHash[%s] err: %s", certHash, err.Error())
return nil, err
......@@ -156,7 +186,7 @@ func (r *CertManageRuntime) Query(txSimContext protocol.TxSimContext, params map
certHashes := strings.Split(certHashesStr, ",")
certInfos := make([]*commonPb.CertInfo, len(certHashes))
for i, certHash := range certHashes {
certBytes, err := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHash))
certBytes, err := txSimContext.Get(certManageContractName, []byte(certHash))
if err != nil {
r.log.Warnf("certManage delete the certHash failed, certHash[%s] err: %s", certHash, err.Error())
return nil, err
......@@ -215,7 +245,7 @@ func (r *CertManageRuntime) Freeze(txSimContext protocol.TxSimContext, params ma
return nil, err1
}
certHashKey := protocol.CertFreezeKeyPrefix + certHash
certHashBytes, err1 := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHashKey))
certHashBytes, err1 := txSimContext.Get(certManageContractName, []byte(certHashKey))
if err1 != nil {
r.log.Warnf("txSimContext get certHashKey certHashKey[%s], err:", certHashKey, err1.Error())
return nil, err1
......@@ -228,7 +258,7 @@ func (r *CertManageRuntime) Freeze(txSimContext protocol.TxSimContext, params ma
return nil, msg
}
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHashKey), []byte(cert))
err = txSimContext.Put(certManageContractName, []byte(certHashKey), []byte(cert))
if err != nil {
r.log.Warnf("txSimContext.Put err, err: %s", err.Error())
return nil, err
......@@ -251,7 +281,7 @@ func (r *CertManageRuntime) Freeze(txSimContext protocol.TxSimContext, params ma
r.log.Warnf("freezeKeyArray err: ", err.Error())
return nil, err
}
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(protocol.CertFreezeKey), marshal)
err = txSimContext.Put(certManageContractName, []byte(protocol.CertFreezeKey), marshal)
if err != nil {
r.log.Warnf("txSimContext put CERT_FREEZE_KEY err ", err.Error())
return nil, err
......@@ -326,7 +356,7 @@ func (r *CertManageRuntime) Unfreeze(txSimContext protocol.TxSimContext, params
r.log.Warnf("freezeKeyArray err: ", err.Error())
return nil, err
}
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(protocol.CertFreezeKey), marshal)
err = txSimContext.Put(certManageContractName, []byte(protocol.CertFreezeKey), marshal)
if err != nil {
r.log.Warnf("txSimContext put CERT_FREEZE_KEY err: ", err.Error())
return nil, err
......@@ -375,7 +405,7 @@ func (r *CertManageRuntime) Revoke(txSimContext protocol.TxSimContext, params ma
crls = append(crls, crl)
}
crlBytes, err := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(protocol.CertRevokeKey))
crlBytes, err := txSimContext.Get(certManageContractName, []byte(protocol.CertRevokeKey))
if err != nil {
r.log.Warnf("get certManage crlList fail err: ", err.Error())
return nil, fmt.Errorf("get certManage crlList failed, err: %s", err)
......@@ -406,7 +436,7 @@ func (r *CertManageRuntime) Revoke(txSimContext protocol.TxSimContext, params ma
}
existed := false
crtListBytes1, err1 := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(key))
crtListBytes1, err1 := txSimContext.Get(certManageContractName, []byte(key))
if err1 != nil {
r.log.Warnf("certManage txSimContext crtList err: ", err1.Error())
continue
......@@ -423,7 +453,7 @@ func (r *CertManageRuntime) Revoke(txSimContext protocol.TxSimContext, params ma
Bytes: crtListBytes,
})
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(key), toMemory)
err = txSimContext.Put(certManageContractName, []byte(key), toMemory)
if err != nil {
r.log.Warnf("certManage save crl certs err: ", err.Error())
return nil, err
......@@ -448,7 +478,7 @@ func (r *CertManageRuntime) Revoke(txSimContext protocol.TxSimContext, params ma
r.log.Warnf("certManage marshal crlKeyList err: ", err.Error())
return nil, err
}
err = txSimContext.Put(syscontract.SystemContract_CERT_MANAGE.String(), []byte(protocol.CertRevokeKey), crlBytesResult)
err = txSimContext.Put(certManageContractName, []byte(protocol.CertRevokeKey), crlBytesResult)
if err != nil {
r.log.Warnf("certManage txSimContext put CertRevokeKey err: ", err.Error())
return nil, err
......@@ -476,7 +506,7 @@ func (r *CertManageRuntime) getFreezeKeyArray(txSimContext protocol.TxSimContext
// the freeze key array
freezeKeyArray := make([]string, 0)
freezeKeyArrayBytes, err := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(),
freezeKeyArrayBytes, err := txSimContext.Get(certManageContractName,
[]byte(protocol.CertFreezeKey))
if err != nil {
r.log.Warnf("txSimContext get CERT_FREEZE_KEY err: ", err.Error())
......@@ -496,7 +526,7 @@ func (r *CertManageRuntime) getFreezeKeyArray(txSimContext protocol.TxSimContext
func (r *CertManageRuntime) recoverFrozenCert(txSimContext protocol.TxSimContext, certHash string,
freezeKeyArray []string, certFullHashes *bytes.Buffer, changed bool) ([]string, bool) {
certHashKey := protocol.CertFreezeKeyPrefix + certHash
certHashBytes, err := txSimContext.Get(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHashKey))
certHashBytes, err := txSimContext.Get(certManageContractName, []byte(certHashKey))
if err != nil {
r.log.Warnf("txSimContext get certHashKey err certHashKey[%s] err: ", certHashKey, err.Error())
return nil, changed
......@@ -508,7 +538,7 @@ func (r *CertManageRuntime) recoverFrozenCert(txSimContext protocol.TxSimContext
return nil, changed
}
err = txSimContext.Del(syscontract.SystemContract_CERT_MANAGE.String(), []byte(certHashKey))
err = txSimContext.Del(certManageContractName, []byte(certHashKey))
if err != nil {
r.log.Warnf("certManage unfreeze txSimContext.Del failed, certHash[%s] err:%s", certHash, err.Error())
return nil, changed
......
......@@ -7,8 +7,8 @@ require (
chainmaker.org/chainmaker/common/v2 v2.1.2-0.20220118101118-f256fc9c55e6
chainmaker.org/chainmaker/localconf/v2 v2.1.1-0.20220112085516-908b8478be8f
chainmaker.org/chainmaker/logger/v2 v2.1.1-0.20211214124250-621f11b35ab0
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220222070330-a4cb0fb1c1cb
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220222022033-cdd42573294c
chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220114120415-8e1af1e262a7
github.com/gogo/protobuf v1.3.2
github.com/golang/mock v1.6.0
......
......@@ -11,13 +11,17 @@ chainmaker.org/chainmaker/logger/v2 v2.1.1-0.20211214124250-621f11b35ab0/go.mod
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20211214073209-1288f39035e8/go.mod h1:gDZodc1Kp6snzGXugS/REqfCqNNizhniQmjeOKUVf64=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220110032709-5947499a1a6d/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220111065457-38aa34ce86a3/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb h1:HmLJvvtUyRmiDc8rCtLdentg0alEXCRgtZB+WSqYs+4=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220119062501-d1b3a201f7fb/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04 h1:OLttQm33khJS+uFhomYEert2YHmtJVR5F8vYn9Tz3vI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220214071858-6aaf92e86f04/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220221052912-453b5b69acac h1:9l5S9cOEtmFGYBvOCrOpvwGdJoNtgSFIO0aojGKlIBk=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220221052912-453b5b69acac/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220221085349-090417d6771d h1:oFDa558zBI69fT/vdHhTKcW5o4TgL93OE3Xq9XhMTEw=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220221085349-090417d6771d/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220222070330-a4cb0fb1c1cb h1:mep7EBYlW7QBF7KqV3E0qMqXiBS/PqiwYKXOXzYopPI=
chainmaker.org/chainmaker/pb-go/v2 v2.1.1-0.20220222070330-a4cb0fb1c1cb/go.mod h1:b5fg5e93xCjSHU1b5yk/mnslab+z7N08kMkNVDoSpcI=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220110033503-d6b4e5a065d9/go.mod h1:7VlxwX9MHyHpfAFw7OW+y7hUqawbp/GZKLeQlRDVZdk=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59 h1:SR3GsTur2WAsDllkmAWCxFtcWjzVWG9DIWDsYWnzfYs=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220113081648-bbf6c1946b59/go.mod h1:SYkMoufkVVj4wI1JOU/YpV4Re4Z2i1WXgk+sn0ulWDk=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220222022033-cdd42573294c h1:2HaVkBUXqfAxToPNiTW2moP2Ax9oEQ3BMa/tERRcCO0=
chainmaker.org/chainmaker/protocol/v2 v2.1.2-0.20220222022033-cdd42573294c/go.mod h1:SYkMoufkVVj4wI1JOU/YpV4Re4Z2i1WXgk+sn0ulWDk=
chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220110033929-0723ce6bd6ac/go.mod h1:gcBoQ+BL9xodHvb5oh8SLfdo9IEOYzGx+XLsECTj5xk=
chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220114120415-8e1af1e262a7 h1:RT1NbZf0M7i4p9WmDOoGD59W1FygpEMd5mL8Otzqa4w=
chainmaker.org/chainmaker/utils/v2 v2.1.1-0.20220114120415-8e1af1e262a7/go.mod h1:GeDrATiYzHJ6tdzV3+81kBjCBy5Bb9fCjTQLZLE6kJo=
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment