Skip to content

Instantly share code, notes, and snippets.

@cp-sumi-k
Last active June 27, 2022 04:21
Show Gist options
  • Save cp-sumi-k/71d0445046a6b12af76246c837b5e4d0 to your computer and use it in GitHub Desktop.
Save cp-sumi-k/71d0445046a6b12af76246c837b5e4d0 to your computer and use it in GitHub Desktop.
func parseJwtSignedData(tokenStr string) error {
rootCertStr, err := extractHeaderByIndex(tokenStr, 2) // get root cert from X5c header
if err != nil {
return err
}
intermediateCertStr, err := extractHeaderByIndex(tokenStr, 1) // get intermediate cert from X5c header
if err != nil {
return err
}
/** verify certs. if not verified, return err **/
if err = verifyCert(rootCertStr, intermediateCertStr); err != nil {
return err
}
/** payload data **/
payload := &NotificationPayload{}
_, err = jwt.ParseWithClaims(tokenStr, payload, func(token *jwt.Token) (interface{}, error) {
return extractPublicKeyFromToken(tokenStr)
})
/** transaction info **/
transactionInfo := &TransactionInfo{}
tokenStr = payload.Data.SignedTransactionInfo
_, err = jwt.ParseWithClaims(tokenStr, transactionInfo, func(token *jwt.Token) (interface{}, error) {
return extractPublicKeyFromToken(tokenStr)
})
/** renewal info **/
renewalInfo := &RenewalInfo{}
tokenStr = payload.Data.SignedRenewalInfo
_, err = jwt.ParseWithClaims(tokenStr, renewalInfo, func(token *jwt.Token) (interface{}, error) {
return extractPublicKeyFromToken(tokenStr)
})
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment