Skip to content

Commit

Permalink
Vc fields update (#8)
Browse files Browse the repository at this point in the history
* Refactor URA credential generation and naming conventions

Updated the uraCredential function to use 'issuer' instead of 'did' for the issuer parameter and simplified the mapping of credential subjects. Also, standardized the constant naming for SAN_TYPE_OTHER_NAME to SanTypeOtherName across the codebase to ensure consistency.

* Validate UZI number before credential creation

Moved UZI number validation to check before generating uraCredential, ensuring serialNumber matches UZI number early in the process. Also removed redundant serialNumber parameter from uraCredential function.
  • Loading branch information
rolandgroen authored Nov 1, 2024
1 parent 296bd1a commit 8366b22
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions uzi_vc_issuer/ura_issuer.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,14 @@ func BuildUraVerifiableCredential(chain []*x509.Certificate, signingKey *rsa.Pri
if err != nil {
return nil, err
}
template, err := uraCredential(did, otherNameValue, serialNumber, subjectDID)
uzi, _, _, err := x509_cert.ParseUraFromOtherNameValue(otherNameValue)
if err != nil {
return nil, err
}
if uzi != serialNumber {
return nil, errors.New("serial number does not match UZI number")
}
template, err := uraCredential(did, otherNameValue, subjectDID)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -255,18 +262,11 @@ func convertHeaders(headers map[string]interface{}) (jws.Headers, error) {

// uraCredential generates a VerifiableCredential for a given URA and UZI number, including the subject's DID.
// It sets a 1-year expiration period from the current issuance date.
func uraCredential(did string, otherNameValue string, serialNumber string, subjectDID string) (*vc.VerifiableCredential, error) {
func uraCredential(issuer string, otherNameValue string, subjectDID string) (*vc.VerifiableCredential, error) {
exp := time.Now().Add(time.Hour * 24 * 365 * 100)
iat := time.Now()
uzi, ura, agb, err := x509_cert.ParseUraFromOtherNameValue(otherNameValue)
if err != nil {
return nil, err
}
if uzi != serialNumber {
return nil, errors.New("serial number does not match UZI number")
}
return &vc.VerifiableCredential{
Issuer: ssi.MustParseURI(did),
Issuer: ssi.MustParseURI(issuer),
Context: []ssi.URI{ssi.MustParseURI("https://www.w3.org/2018/credentials/v1")},
Type: []ssi.URI{ssi.MustParseURI("VerifiableCredential"), ssi.MustParseURI("UziServerCertificateCredential")},
ID: func() *ssi.URI { id := ssi.MustParseURI(uuid.NewString()); return &id }(),
Expand All @@ -275,10 +275,7 @@ func uraCredential(did string, otherNameValue string, serialNumber string, subje
CredentialSubject: []interface{}{
map[string]interface{}{
"id": subjectDID,
"uraNumber": ura,
"otherName": uzi,
"uziNumber": serialNumber,
"agbNumber": agb,
"otherName": otherNameValue,
},
},
}, nil
Expand Down

0 comments on commit 8366b22

Please sign in to comment.