Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#524 Implement adding and requesting root NOC certificates #543

Merged
merged 18 commits into from
Feb 20, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'master' into feature/524-adding-noc-root-certificate
* master:
  #535 Add new txn to remove non-root certificates
  #535 Add new txn to remove non-root certificates
  #535 Add new txn to remove non-root certificates
  #535 Add new txn to remove non-root certificates
  #535 Enable providing serial number while revoking x509 certs
  #535 Enable providing serial number while revoking x509 certs
  #535 Enable providing serial number while revoking x509 certs
  #535 Enable providing serial number while revoking x509 certs

# Conflicts:
#	proto/pki/tx.proto
#	vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/index.ts
#	vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/rest.ts
#	vue/src/store/generated/zigbee-alliance/distributed-compliance-ledger/zigbeealliance.distributedcomplianceledger.pki/module/types/pki/tx.ts
#	x/pki/client/cli/tx.go
#	x/pki/handler.go
#	x/pki/handler_test.go
#	x/pki/module_simulation.go
#	x/pki/types/codec.go
#	x/pki/types/query.pb.go
#	x/pki/types/tx.pb.go
akarabashov committed Feb 20, 2024
commit cfbd37e06e7a57d62f86dc7a4f2dc83a939103bb
11 changes: 11 additions & 0 deletions proto/pki/tx.proto
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ service Msg {
rpc DeletePkiRevocationDistributionPoint(MsgDeletePkiRevocationDistributionPoint) returns (MsgDeletePkiRevocationDistributionPointResponse);
rpc AssignVid(MsgAssignVid) returns (MsgAssignVidResponse);
rpc AddNocX509RootCert(MsgAddNocX509RootCert) returns (MsgAddNocX509RootCertResponse);
rpc RemoveX509Cert(MsgRemoveX509Cert) returns (MsgRemoveX509CertResponse);
// this line is used by starport scaffolding # proto/tx/rpc
}

@@ -165,4 +166,14 @@ message MsgAddNocX509RootCert {
message MsgAddNocX509RootCertResponse {
}

message MsgRemoveX509Cert {
string signer = 1 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.moretags) = "validate:\"required\""];
string subject = 2 [(gogoproto.moretags) = "validate:\"required,max=1024\""];
string subjectKeyId = 3 [(gogoproto.moretags) = "validate:\"required,max=256\""];
string serialNumber = 4;
}

message MsgRemoveX509CertResponse {
}

// this line is used by starport scaffolding # proto/tx/message
Original file line number Diff line number Diff line change
@@ -32,7 +32,7 @@ const types = [
["/zigbeealliance.distributedcomplianceledger.pki.MsgAddX509Cert", MsgAddX509Cert],
["/zigbeealliance.distributedcomplianceledger.pki.MsgApproveRevokeX509RootCert", MsgApproveRevokeX509RootCert],
["/zigbeealliance.distributedcomplianceledger.pki.MsgProposeRevokeX509RootCert", MsgProposeRevokeX509RootCert],
["/zigbeealliance.distributedcomplianceledger.pki.MsgRemoveX509Cert", MsgRemoveX509Cert],
];
export const MissingWalletError = new Error("wallet is required");

@@ -76,7 +76,7 @@ const txClient = async (wallet: OfflineSigner, { addr: addr }: TxClientOptions =
msgAddX509Cert: (data: MsgAddX509Cert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgAddX509Cert", value: MsgAddX509Cert.fromPartial( data ) }),
msgApproveRevokeX509RootCert: (data: MsgApproveRevokeX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgApproveRevokeX509RootCert", value: MsgApproveRevokeX509RootCert.fromPartial( data ) }),
msgProposeRevokeX509RootCert: (data: MsgProposeRevokeX509RootCert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgProposeRevokeX509RootCert", value: MsgProposeRevokeX509RootCert.fromPartial( data ) }),
msgRemoveX509Cert: (data: MsgRemoveX509Cert): EncodeObject => ({ typeUrl: "/zigbeealliance.distributedcomplianceledger.pki.MsgRemoveX509Cert", value: MsgRemoveX509Cert.fromPartial( data ) }),
};
};

Original file line number Diff line number Diff line change
@@ -132,6 +132,15 @@ export interface MsgAddNocX509RootCert {

export interface MsgAddNocX509RootCertResponse {}

export interface MsgRemoveX509Cert {
signer: string
subject: string
subjectKeyId: string
serialNumber: string
}

export interface MsgRemoveX509CertResponse {}

const baseMsgProposeAddX509RootCert: object = { signer: '', cert: '', info: '', time: 0, vid: 0 }

export const MsgProposeAddX509RootCert = {
@@ -2223,6 +2232,150 @@ export const MsgAddNocX509RootCertResponse = {
}
}

const baseMsgRemoveX509Cert: object = { signer: '', subject: '', subjectKeyId: '', serialNumber: '' }

export const MsgRemoveX509Cert = {
encode(message: MsgRemoveX509Cert, writer: Writer = Writer.create()): Writer {
if (message.signer !== '') {
writer.uint32(10).string(message.signer)
}
if (message.subject !== '') {
writer.uint32(18).string(message.subject)
}
if (message.subjectKeyId !== '') {
writer.uint32(26).string(message.subjectKeyId)
}
if (message.serialNumber !== '') {
writer.uint32(34).string(message.serialNumber)
}
return writer
},

decode(input: Reader | Uint8Array, length?: number): MsgRemoveX509Cert {
const reader = input instanceof Uint8Array ? new Reader(input) : input
let end = length === undefined ? reader.len : reader.pos + length
const message = { ...baseMsgRemoveX509Cert } as MsgRemoveX509Cert
while (reader.pos < end) {
const tag = reader.uint32()
switch (tag >>> 3) {
case 1:
message.signer = reader.string()
break
case 2:
message.subject = reader.string()
break
case 3:
message.subjectKeyId = reader.string()
break
case 4:
message.serialNumber = reader.string()
break
default:
reader.skipType(tag & 7)
break
}
}
return message
},

fromJSON(object: any): MsgRemoveX509Cert {
const message = { ...baseMsgRemoveX509Cert } as MsgRemoveX509Cert
if (object.signer !== undefined && object.signer !== null) {
message.signer = String(object.signer)
} else {
message.signer = ''
}
if (object.subject !== undefined && object.subject !== null) {
message.subject = String(object.subject)
} else {
message.subject = ''
}
if (object.subjectKeyId !== undefined && object.subjectKeyId !== null) {
message.subjectKeyId = String(object.subjectKeyId)
} else {
message.subjectKeyId = ''
}
if (object.serialNumber !== undefined && object.serialNumber !== null) {
message.serialNumber = String(object.serialNumber)
} else {
message.serialNumber = ''
}
return message
},

toJSON(message: MsgRemoveX509Cert): unknown {
const obj: any = {}
message.signer !== undefined && (obj.signer = message.signer)
message.subject !== undefined && (obj.subject = message.subject)
message.subjectKeyId !== undefined && (obj.subjectKeyId = message.subjectKeyId)
message.serialNumber !== undefined && (obj.serialNumber = message.serialNumber)
return obj
},

fromPartial(object: DeepPartial<MsgRemoveX509Cert>): MsgRemoveX509Cert {
const message = { ...baseMsgRemoveX509Cert } as MsgRemoveX509Cert
if (object.signer !== undefined && object.signer !== null) {
message.signer = object.signer
} else {
message.signer = ''
}
if (object.subject !== undefined && object.subject !== null) {
message.subject = object.subject
} else {
message.subject = ''
}
if (object.subjectKeyId !== undefined && object.subjectKeyId !== null) {
message.subjectKeyId = object.subjectKeyId
} else {
message.subjectKeyId = ''
}
if (object.serialNumber !== undefined && object.serialNumber !== null) {
message.serialNumber = object.serialNumber
} else {
message.serialNumber = ''
}
return message
}
}

const baseMsgRemoveX509CertResponse: object = {}

export const MsgRemoveX509CertResponse = {
encode(_: MsgRemoveX509CertResponse, writer: Writer = Writer.create()): Writer {
return writer
},

decode(input: Reader | Uint8Array, length?: number): MsgRemoveX509CertResponse {
const reader = input instanceof Uint8Array ? new Reader(input) : input
let end = length === undefined ? reader.len : reader.pos + length
const message = { ...baseMsgRemoveX509CertResponse } as MsgRemoveX509CertResponse
while (reader.pos < end) {
const tag = reader.uint32()
switch (tag >>> 3) {
default:
reader.skipType(tag & 7)
break
}
}
return message
},

fromJSON(_: any): MsgRemoveX509CertResponse {
const message = { ...baseMsgRemoveX509CertResponse } as MsgRemoveX509CertResponse
return message
},

toJSON(_: MsgRemoveX509CertResponse): unknown {
const obj: any = {}
return obj
},

fromPartial(_: DeepPartial<MsgRemoveX509CertResponse>): MsgRemoveX509CertResponse {
const message = { ...baseMsgRemoveX509CertResponse } as MsgRemoveX509CertResponse
return message
}
}

/** Msg defines the Msg service. */
export interface Msg {
ProposeAddX509RootCert(request: MsgProposeAddX509RootCert): Promise<MsgProposeAddX509RootCertResponse>
@@ -2236,8 +2389,10 @@ export interface Msg {
UpdatePkiRevocationDistributionPoint(request: MsgUpdatePkiRevocationDistributionPoint): Promise<MsgUpdatePkiRevocationDistributionPointResponse>
DeletePkiRevocationDistributionPoint(request: MsgDeletePkiRevocationDistributionPoint): Promise<MsgDeletePkiRevocationDistributionPointResponse>
AssignVid(request: MsgAssignVid): Promise<MsgAssignVidResponse>
/** this line is used by starport scaffolding # proto/tx/rpc */
AddNocX509RootCert(request: MsgAddNocX509RootCert): Promise<MsgAddNocX509RootCertResponse>
AssignVid(request: MsgAssignVid): Promise<MsgAssignVidResponse>
/** this line is used by starport scaffolding # proto/tx/rpc */
RemoveX509Cert(request: MsgRemoveX509Cert): Promise<MsgRemoveX509CertResponse>
}

export class MsgClientImpl implements Msg {
@@ -2316,6 +2471,12 @@ export class MsgClientImpl implements Msg {
const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Msg', 'AddNocX509RootCert', data)
return promise.then((data) => MsgAddNocX509RootCertResponse.decode(new Reader(data)))
}

RemoveX509Cert(request: MsgRemoveX509Cert): Promise<MsgRemoveX509CertResponse> {
const data = MsgRemoveX509Cert.encode(request).finish()
const promise = this.rpc.request('zigbeealliance.distributedcomplianceledger.pki.Msg', 'RemoveX509Cert', data)
return promise.then((data) => MsgRemoveX509CertResponse.decode(new Reader(data)))
}
}

interface Rpc {
1 change: 1 addition & 0 deletions x/pki/client/cli/tx.go
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ func GetTxCmd() *cobra.Command {
cmd.AddCommand(CmdDeletePkiRevocationDistributionPoint())
cmd.AddCommand(CmdAssignVid())
cmd.AddCommand(CmdAddNocX509RootCert())
cmd.AddCommand(CmdRemoveX509Cert())
// this line is used by starport scaffolding # 1

return cmd
5 changes: 5 additions & 0 deletions x/pki/handler.go
Original file line number Diff line number Diff line change
@@ -65,6 +65,11 @@ func NewHandler(k keeper.Keeper) sdk.Handler {
return sdk.WrapServiceResult(ctx, res, err)
case *types.MsgAddNocX509RootCert:
res, err := msgServer.AddNocX509RootCert(sdk.WrapSDKContext(ctx), msg)

return sdk.WrapServiceResult(ctx, res, err)
case *types.MsgRemoveX509Cert:
res, err := msgServer.RemoveX509Cert(sdk.WrapSDKContext(ctx), msg)

return sdk.WrapServiceResult(ctx, res, err)
// this line is used by starport scaffolding # 1
default:
21 changes: 21 additions & 0 deletions x/pki/handler_test.go
Original file line number Diff line number Diff line change
@@ -3080,6 +3080,27 @@ func queryApprovedCertificatesBySubject(
return &resp.ApprovedCertificatesBySubject, nil
}

func queryApprovedRootCertificates(
setup *TestSetup,
subject string,
subjectKeyID string,
) ([]*types.Certificate, error) {
resp, err := queryApprovedCertificates(setup, subject, subjectKeyID)
if err != nil {
require.Nil(setup.T, resp)

return nil, err
}
var list []*types.Certificate
for _, cert := range resp.Certs {
if cert.IsRoot {
list = append(list, cert)
}
}

return list, nil
}

func queryAllProposedCertificateRevocations(setup *TestSetup) ([]types.ProposedCertificateRevocation, error) {
// query all proposed certificate revocations
req := &types.QueryAllProposedCertificateRevocationRequest{}
15 changes: 15 additions & 0 deletions x/pki/module_simulation.go
Original file line number Diff line number Diff line change
@@ -73,6 +73,10 @@ const (
// TODO: Determine the simulation weight value
defaultWeightMsgAddNocX509RootCert int = 100

opWeightMsgRemoveX509Cert = "op_weight_msg_create_chain"
// TODO: Determine the simulation weight value.
defaultWeightMsgRemoveX509Cert int = 100

// this line is used by starport scaffolding # simapp/module/const.
)

@@ -238,6 +242,17 @@ func (am AppModule) WeightedOperations(simState module.SimulationState) []simtyp
pkisimulation.SimulateMsgAddNocX509RootCert(am.keeper),
))

var weightMsgRemoveX509Cert int
simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgRemoveX509Cert, &weightMsgRemoveX509Cert, nil,
func(_ *rand.Rand) {
weightMsgRemoveX509Cert = defaultWeightMsgRemoveX509Cert
},
)
operations = append(operations, simulation.NewWeightedOperation(
weightMsgRemoveX509Cert,
pkisimulation.SimulateMsgRemoveX509Cert(am.keeper),
))

// this line is used by starport scaffolding # simapp/module/operation

return operations
4 changes: 4 additions & 0 deletions x/pki/types/codec.go
Original file line number Diff line number Diff line change
@@ -20,6 +20,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) {
cdc.RegisterConcrete(&MsgDeletePkiRevocationDistributionPoint{}, "pki/DeletePkiRevocationDistributionPoint", nil)
cdc.RegisterConcrete(&MsgAssignVid{}, "pki/AssignVid", nil)
cdc.RegisterConcrete(&MsgAddNocX509RootCert{}, "pki/AddNocX509RootCert", nil)
cdc.RegisterConcrete(&MsgRemoveX509Cert{}, "pki/RemoveX509Cert", nil)
// this line is used by starport scaffolding # 2
}

@@ -60,6 +61,9 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) {
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgAddNocX509RootCert{},
)
registry.RegisterImplementations((*sdk.Msg)(nil),
&MsgRemoveX509Cert{},
)
// this line is used by starport scaffolding # 3

msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.