Skip to content

Commit 78e91a4

Browse files
authored
Merge 506a871 into a13467f
2 parents a13467f + 506a871 commit 78e91a4

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

verifier/verifier.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
configModel "github.com/fiware/VCVerifier/config"
2424
"github.com/fiware/VCVerifier/gaiax"
2525
"github.com/fiware/VCVerifier/tir"
26+
"github.com/google/uuid"
2627
"github.com/trustbloc/vc-go/verifiable"
2728

2829
logging "github.com/fiware/VCVerifier/logging"
@@ -644,7 +645,7 @@ func (v *CredentialVerifier) GenerateToken(clientId, subject, audience string, s
644645
logging.Log().Warnf("No valid credential type was provided. Provided credential type: %v", vcTypes)
645646
return 0, "", ErrorNoValidCredentialTypeProvided
646647
}
647-
token, err := v.generateJWT(credentialsToBeIncluded, holder, audience, flatClaims)
648+
token, err := v.generateJWT(credentialsToBeIncluded, holder, audience, flatClaims, uuid.NewString())
648649
if err != nil {
649650
logging.Log().Warnf("Was not able to create the token. Err: %v", err)
650651
return 0, "", err
@@ -873,9 +874,6 @@ func (v *CredentialVerifier) AuthenticationResponse(state string, verifiablePres
873874
}
874875
}
875876

876-
// we ignore the error here, since the only consequence is that sub will be empty.
877-
hostname, _ := getHostName(loginSession.callback)
878-
879877
if len(credentialsToBeIncluded) == 0 {
880878
vcTypes := []string{}
881879
for k := range credentialsByType {
@@ -885,7 +883,7 @@ func (v *CredentialVerifier) AuthenticationResponse(state string, verifiablePres
885883
return sameDevice, ErrorNoValidCredentialTypeProvided
886884
}
887885

888-
token, err := v.generateJWT(credentialsToBeIncluded, verifiablePresentation.Holder, hostname, flatClaims)
886+
token, err := v.generateJWT(credentialsToBeIncluded, verifiablePresentation.Holder, loginSession.clientId, flatClaims, loginSession.nonce)
889887
if err != nil {
890888
logging.Log().Warnf("Was not able to create a jwt for %s. Err: %v", state, err)
891889
return sameDevice, err
@@ -1159,7 +1157,7 @@ func (v *CredentialVerifier) generateAuthenticationRequest(base string, clientId
11591157
}
11601158

11611159
// generate a jwt, containing the credential and mandatory information as defined by the dsba-convergence
1162-
func (v *CredentialVerifier) generateJWT(credentials []map[string]interface{}, holder string, audience string, flatValues bool) (generatedJwt jwt.Token, err error) {
1160+
func (v *CredentialVerifier) generateJWT(credentials []map[string]interface{}, holder string, audience string, flatValues bool, nonce string) (generatedJwt jwt.Token, err error) {
11631161

11641162
jwtBuilder := jwt.NewBuilder().Issuer(v.GetHost()).Audience([]string{audience}).Expiration(v.clock.Now().Add(v.jwtExpiration))
11651163

@@ -1175,6 +1173,10 @@ func (v *CredentialVerifier) generateJWT(credentials []map[string]interface{}, h
11751173
jwtBuilder.Claim("verifiableCredential", credentials[0])
11761174
}
11771175

1176+
if nonce != "" {
1177+
jwtBuilder.Claim("nonce", nonce)
1178+
}
1179+
11781180
token, err := jwtBuilder.Build()
11791181
if err != nil {
11801182
logging.Log().Warnf("Was not able to build a token. Err: %v", err)

verifier/verifier_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1398,7 +1398,7 @@ func TestGenerateJWT(t *testing.T) {
13981398

13991399
for _, tc := range tests {
14001400
t.Run(tc.testName, func(t *testing.T) {
1401-
token, err := v.generateJWT(tc.credentials, tc.holder, tc.audience, tc.flat)
1401+
token, err := v.generateJWT(tc.credentials, tc.holder, tc.audience, tc.flat, "nonce")
14021402
if err != nil {
14031403
t.Fatalf("unexpected error building jwt: %v", err)
14041404
}

0 commit comments

Comments
 (0)