Skip to content

Commit

Permalink
refactor: added document and signature verification under a single pa…
Browse files Browse the repository at this point in the history
…ckage
  • Loading branch information
arnabghose997 committed Dec 9, 2022
1 parent 82a52c0 commit 1faf383
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 42 deletions.
26 changes: 12 additions & 14 deletions x/ssi/keeper/msg_server_credential.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
docVerify "github.com/hypersign-protocol/hid-node/x/ssi/document_verification"

sigVerify "github.com/hypersign-protocol/hid-node/x/ssi/signature"
"github.com/hypersign-protocol/hid-node/x/ssi/verification"
"github.com/hypersign-protocol/hid-node/x/ssi/types"
)

Expand All @@ -26,7 +24,7 @@ func (k msgServer) RegisterCredentialStatus(goCtx context.Context, msg *types.Ms
chainNamespace := k.GetChainNamespace(&ctx)

// Check the format of Credential ID
err := docVerify.IsValidID(credId, chainNamespace, "credDocument")
err := verification.IsValidID(credId, chainNamespace, "credDocument")
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -63,12 +61,12 @@ func (k msgServer) RegisterCredentialStatus(goCtx context.Context, msg *types.Ms
return nil, sdkerrors.Wrapf(types.ErrInvalidDate, fmt.Sprintf("invalid issuance date format: %s", issuanceDate))
}

if err := docVerify.VerifyCredentialStatusDates(issuanceDateParsed, expirationDateParsed); err != nil {
if err := verification.VerifyCredentialStatusDates(issuanceDateParsed, expirationDateParsed); err != nil {
return nil, err
}

// Check if updated date iss imilar to created date
if err := docVerify.VerifyCredentialProofDates(credProof, true); err != nil {
if err := verification.VerifyCredentialProofDates(credProof, true); err != nil {
return nil, err
}

Expand All @@ -79,7 +77,7 @@ func (k msgServer) RegisterCredentialStatus(goCtx context.Context, msg *types.Ms
}

// Check the hash type of credentialHash
isValidCredentialHash := docVerify.VerifyCredentialHash(credMsg.GetCredentialHash())
isValidCredentialHash := verification.VerifyCredentialHash(credMsg.GetCredentialHash())
if !isValidCredentialHash {
return nil, sdkerrors.Wrapf(types.ErrInvalidCredentialHash, "supported hashing algorithms: sha256")
}
Expand Down Expand Up @@ -116,13 +114,13 @@ func (k msgServer) RegisterCredentialStatus(goCtx context.Context, msg *types.Ms
}

// Proof Type Check
err = sigVerify.DocumentProofTypeCheck(credProof.Type, signersWithVM, credProof.VerificationMethod)
err = verification.DocumentProofTypeCheck(credProof.Type, signersWithVM, credProof.VerificationMethod)
if err != nil {
return nil, err
}

// Verify Signature
err = sigVerify.VerifyDocumentSignature(&ctx, credDocBytes, signersWithVM, signatures)
err = verification.VerifyDocumentSignature(&ctx, credDocBytes, signersWithVM, signatures)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -164,7 +162,7 @@ func (k msgServer) updateCredentialStatus(ctx sdk.Context, msg *types.MsgRegiste
// Check for the correct credential status
newClaimStatus := newCredStatus.GetClaim().GetCurrentStatus()
statusFound := 0
for _, acceptablestatus := range docVerify.AcceptedCredStatuses {
for _, acceptablestatus := range verification.AcceptedCredStatuses {
if newClaimStatus == acceptablestatus {
statusFound = 1
}
Expand Down Expand Up @@ -222,12 +220,12 @@ func (k msgServer) updateCredentialStatus(ctx sdk.Context, msg *types.MsgRegiste
}

// Check if new expiration date isn't less than new issuance date
if err := docVerify.VerifyCredentialStatusDates(newIssuanceDateParsed, newExpirationDateParsed); err != nil {
if err := verification.VerifyCredentialStatusDates(newIssuanceDateParsed, newExpirationDateParsed); err != nil {
return nil, err
}

// Check if updated date iss imilar to created date
if err := docVerify.VerifyCredentialProofDates(newCredProof, false); err != nil {
if err := verification.VerifyCredentialProofDates(newCredProof, false); err != nil {
return nil, err
}

Expand Down Expand Up @@ -314,13 +312,13 @@ func (k msgServer) updateCredentialStatus(ctx sdk.Context, msg *types.MsgRegiste
}

// Proof Type Check
err = sigVerify.DocumentProofTypeCheck(newCredProof.Type, signersWithVM, newCredProof.VerificationMethod)
err = verification.DocumentProofTypeCheck(newCredProof.Type, signersWithVM, newCredProof.VerificationMethod)
if err != nil {
return nil, err
}

// Verify Signature
err = sigVerify.VerifyDocumentSignature(&ctx, credDocBytes, signersWithVM, signatures)
err = verification.VerifyDocumentSignature(&ctx, credDocBytes, signersWithVM, signatures)
if err != nil {
return nil, err
}
Expand Down
19 changes: 9 additions & 10 deletions x/ssi/keeper/msg_server_did.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
docVerify "github.com/hypersign-protocol/hid-node/x/ssi/document_verification"
"github.com/hypersign-protocol/hid-node/x/ssi/signature"
"github.com/hypersign-protocol/hid-node/x/ssi/verification"
"github.com/hypersign-protocol/hid-node/x/ssi/types"
)

Expand All @@ -26,7 +25,7 @@ func (k msgServer) CreateDID(goCtx context.Context, msg *types.MsgCreateDID) (*t
signatures := msg.GetSignatures()

// Checks if the Did Document is valid
err = docVerify.ValidateDidDocument(msg.DidDocString, chainNamespace)
err = verification.ValidateDidDocument(msg.DidDocString, chainNamespace)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -57,7 +56,7 @@ func (k msgServer) CreateDID(goCtx context.Context, msg *types.MsgCreateDID) (*t
return nil, err
}

if err := signature.VerifyDidSignature(&ctx, didDocBytes, didSignersWithVM, signatures); err != nil {
if err := verification.VerifyDidSignature(&ctx, didDocBytes, didSignersWithVM, signatures); err != nil {
return nil, err
}

Expand Down Expand Up @@ -86,7 +85,7 @@ func (k msgServer) UpdateDID(goCtx context.Context, msg *types.MsgUpdateDID) (*t
chainNamespace := k.GetChainNamespace(&ctx)

// Check if the input DID Document is valid
err := docVerify.ValidateDidDocument(didMsg, chainNamespace)
err := verification.ValidateDidDocument(didMsg, chainNamespace)
if err != nil {
return nil, err
}
Expand All @@ -105,7 +104,7 @@ func (k msgServer) UpdateDID(goCtx context.Context, msg *types.MsgUpdateDID) (*t
oldMetaData := oldDIDDoc.GetDidDocumentMetadata()

// Check if the status of DID Document is deactivated
if err := docVerify.VerifyDidDeactivate(oldMetaData, didId); err != nil {
if err := verification.VerifyDidDeactivate(oldMetaData, didId); err != nil {
return nil, err
}

Expand Down Expand Up @@ -139,7 +138,7 @@ func (k msgServer) UpdateDID(goCtx context.Context, msg *types.MsgUpdateDID) (*t
return nil, err
}

if err := signature.VerifyDidSignature(&ctx, didDocBytes, signersWithVm, msg.Signatures); err != nil {
if err := verification.VerifyDidSignature(&ctx, didDocBytes, signersWithVm, msg.Signatures); err != nil {
return nil, err
}

Expand Down Expand Up @@ -172,7 +171,7 @@ func (k msgServer) DeactivateDID(goCtx context.Context, msg *types.MsgDeactivate
chainNamespace := k.GetChainNamespace(&ctx)

// Check if the Did id format is valid
err := docVerify.IsValidID(didId, chainNamespace, "didDocument")
err := verification.IsValidID(didId, chainNamespace, "didDocument")
if err != nil {
return nil, err
}
Expand All @@ -192,7 +191,7 @@ func (k msgServer) DeactivateDID(goCtx context.Context, msg *types.MsgDeactivate
oldVersionId := metadata.GetVersionId()

// Check if the DID is already deactivated
if err := docVerify.VerifyDidDeactivate(metadata, didId); err != nil {
if err := verification.VerifyDidDeactivate(metadata, didId); err != nil {
return nil, err
}

Expand Down Expand Up @@ -228,7 +227,7 @@ func (k msgServer) DeactivateDID(goCtx context.Context, msg *types.MsgDeactivate
return nil, err
}

if err := signature.VerifyDidSignature(&ctx, didDocBytes, signersWithVM, signatures); err != nil {
if err := verification.VerifyDidSignature(&ctx, didDocBytes, signersWithVM, signatures); err != nil {
return nil, err
}

Expand Down
9 changes: 4 additions & 5 deletions x/ssi/keeper/msg_server_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
docVerify "github.com/hypersign-protocol/hid-node/x/ssi/document_verification"
sigVerify "github.com/hypersign-protocol/hid-node/x/ssi/signature"
"github.com/hypersign-protocol/hid-node/x/ssi/verification"
"github.com/hypersign-protocol/hid-node/x/ssi/types"
)

Expand All @@ -32,7 +31,7 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgCreateSchem
}

// Check if Schema ID is valid
err = docVerify.IsValidID(schemaID, chainNamespace, "schemaDocument")
err = verification.IsValidID(schemaID, chainNamespace, "schemaDocument")
if err != nil {
return nil, sdkerrors.Wrap(types.ErrInvalidSchemaID, err.Error())
}
Expand Down Expand Up @@ -87,13 +86,13 @@ func (k msgServer) CreateSchema(goCtx context.Context, msg *types.MsgCreateSchem
}

// Proof Type Check
err = sigVerify.DocumentProofTypeCheck(schemaProof.Type, signersWithVM, schemaProof.VerificationMethod)
err = verification.DocumentProofTypeCheck(schemaProof.Type, signersWithVM, schemaProof.VerificationMethod)
if err != nil {
return nil, err
}

// Signature check
if err := sigVerify.VerifyDocumentSignature(&ctx, schemaDocBytes, signersWithVM, signatures); err != nil {
if err := verification.VerifyDocumentSignature(&ctx, schemaDocBytes, signersWithVM, signatures); err != nil {
return nil, err
}

Expand Down
14 changes: 7 additions & 7 deletions x/ssi/tests/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/hypersign-protocol/hid-node/x/ssi/keeper"
"github.com/hypersign-protocol/hid-node/x/ssi/signature"
"github.com/hypersign-protocol/hid-node/x/ssi/verification"
"github.com/hypersign-protocol/hid-node/x/ssi/types"
"github.com/multiformats/go-multibase"
secp256k1 "github.com/tendermint/tendermint/crypto/secp256k1"
Expand Down Expand Up @@ -79,9 +79,9 @@ func GenerateDidDocumentRPCElements(keyPair GenericKeyPair) DidRpcElements {
var vmType string
switch keyPair.(type) {
case ed25519KeyPair:
vmType = signature.Ed25519VerificationKey2020
vmType = verification.Ed25519VerificationKey2020
case secp256k1KeyPair:
vmType = signature.EcdsaSecp256k1VerificationKey2019
vmType = verification.EcdsaSecp256k1VerificationKey2019
}

var vm = &types.VerificationMethod{
Expand Down Expand Up @@ -155,9 +155,9 @@ func GenerateSchemaDocumentRPCElements(keyPair GenericKeyPair, Id string, verfic
var proofType string
switch keyPair.(type) {
case ed25519KeyPair:
proofType = signature.VerificationKeySignatureMap["Ed25519VerificationKey2020"]
proofType = verification.VerificationKeySignatureMap["Ed25519VerificationKey2020"]
case secp256k1KeyPair:
proofType = signature.VerificationKeySignatureMap["EcdsaSecp256k1VerificationKey2019"]
proofType = verification.VerificationKeySignatureMap["EcdsaSecp256k1VerificationKey2019"]
}

var schemaProof *types.SchemaProof = &types.SchemaProof{
Expand Down Expand Up @@ -197,9 +197,9 @@ func GenerateCredStatusRPCElements(keyPair GenericKeyPair, Id string, verficatio
var proofType string
switch keyPair.(type) {
case ed25519KeyPair:
proofType = signature.VerificationKeySignatureMap["Ed25519VerificationKey2020"]
proofType = verification.VerificationKeySignatureMap["Ed25519VerificationKey2020"]
case secp256k1KeyPair:
proofType = signature.VerificationKeySignatureMap["EcdsaSecp256k1VerificationKey2019"]
proofType = verification.VerificationKeySignatureMap["EcdsaSecp256k1VerificationKey2019"]
}

var credentialProof *types.CredentialProof = &types.CredentialProof{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package signature
package verification

// Supported Verification Method Types
const Ed25519VerificationKey2020 = "Ed25519VerificationKey2020"
Expand Down
2 changes: 1 addition & 1 deletion x/ssi/signature/crypto.go → x/ssi/verification/crypto.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package signature
package verification

import (
"crypto/ed25519"
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package signature
package verification

import (
"fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
docVerify "github.com/hypersign-protocol/hid-node/x/ssi/document_verification"
"github.com/hypersign-protocol/hid-node/x/ssi/types"
"github.com/hypersign-protocol/hid-node/x/ssi/utils"
)
Expand Down Expand Up @@ -52,7 +51,7 @@ func VerifyDidSignature(ctx *sdk.Context, didDocBytes []byte, signers []types.Si
validArr = append(validArr, types.ValidDid{DidId: signer.Signer, IsValid: valid})
}

validDid := docVerify.HasAtleastOneTrueSigner(validArr)
validDid := HasAtleastOneTrueSigner(validArr)

if validDid == (types.ValidDid{}) {
return sdkerrors.Wrap(types.ErrInvalidSignature, validDid.DidId)
Expand Down Expand Up @@ -99,7 +98,7 @@ func VerifyDocumentSignature(ctx *sdk.Context, docBytes []byte, signers []types.
validArr = append(validArr, types.ValidDid{DidId: signer.Signer, IsValid: valid})
}

validDid := docVerify.HasAtleastOneTrueSigner(validArr)
validDid := HasAtleastOneTrueSigner(validArr)

if validDid == (types.ValidDid{}) {
return sdkerrors.Wrap(types.ErrInvalidSignature, validDid.DidId)
Expand Down
File renamed without changes.

0 comments on commit 1faf383

Please sign in to comment.