{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":335272088,"defaultBranch":"main","name":"psatoken","ownerLogin":"veraison","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-02-02T11:52:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/70022850?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1721726116.0","currentOid":""},"activityList":{"items":[{"before":"714b47811387d4ccdcae2872f4273b3e1383beb0","after":null,"ref":"refs/heads/marshaling","pushedAt":"2024-07-23T09:15:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"thomas-fossati","name":"Thomas Fossati","path":"/thomas-fossati","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9195842?s=80&v=4"}},{"before":"89fde617284b71b35b8638084ee4ac0e8ea677da","after":"b9c092a19d7bf556f8cbee8169add332afaf1a8c","ref":"refs/heads/main","pushedAt":"2024-07-23T09:15:11.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"thomas-fossati","name":"Thomas Fossati","path":"/thomas-fossati","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/9195842?s=80&v=4"},"commit":{"message":"Merge pull request #50 from veraison/marshaling\n\nMarshaling refactor","shortMessageHtmlLink":"Merge pull request #50 from veraison/marshaling"}},{"before":"26fe500fd5d4b92d78bcf2fce4070cbbe6d7def7","after":"714b47811387d4ccdcae2872f4273b3e1383beb0","ref":"refs/heads/marshaling","pushedAt":"2024-07-23T08:47:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: more conventional marshaling\n\nThis commit refactors marshaling and signing API. It has two objectives:\n\n- Align how marshaling and signing work with conventional Go practices,\n ensuring new users familiar with other Go libraries have minimal\n surprises.\n- Minimize the impact of marshaling on IClaims interface, relieving the\n burden on current and future implementations.\n\nTo that end, the following changes are made:\n\n- From/To* marshaling API are replaced with implementations of standard\n cbor and json marshaling interfaces (i.e. Unmasrshal/Marshal*). As per\n convention, these implementations do not validate.\n- There are no validating versions of marshaling methods (thus no\n requirement for every IClaims implementation to re-implement them).\n Instead, there are convenience functions that instantiate, marshal,\n and validate in a single call.\n- The functions have been renamed such that Decode* now only performs\n unmarshaling, and DecodeAndValidate* unmarshals and validates.\n- Decoding/Encoding functions for IClaims have been moved from\n profile.go to iclaims.go.\n- Sign(), similarly has been changed to not validate, SignUnvalidated()\n has been dropped, and ValidateAndSign() convenience method has been\n added (the later replicating the old Sign() behavior)>\n\nnote: this is implemented on top of a similar refactor inside psatoken\n\nBREAKING CHANGE: the From/To marshaling API have been removed; Decode*\nfunctions have been renamed to be consistent with marshaling (rather\nthen DecodeXXX--that validates--and DecodeUnvalidatedXXX, there is now\nDecodeAndValidateXXX and DecodeXXX--that does not validate).\n\nBREAKING CHANGE: Sign() no longer validates; SignUnvalidated has been\ndropped.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: more conventional marshaling"}},{"before":null,"after":"26fe500fd5d4b92d78bcf2fce4070cbbe6d7def7","ref":"refs/heads/marshaling","pushedAt":"2024-07-19T12:44:14.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: more conventional marshaling\n\nThis commit refactors marshaling API. It has two objectives:\n\n- Align how marshaling works with conventional Go practices, ensuring\n new users familiar with other Go libraries have minimal surprises.\n- Minimize the impact of marshaling on IClaims interface, relieving the\n burden on current and future implementations.\n\nTo that end, the following changes are made:\n\n- From/To* marshaling API are replaced with implementations of standard\n cbor and json marshaling interfaces (i.e. Unmasrshal/Marshal*). As per\n convention, these implementations do not validate.\n- There are no validating versions of marshaling methods (thus no\n requirement for every IClaims implementation to re-implement them).\n Instead, there are convenience functions that instantiate, marshal,\n and validate in a single call.\n- The functions have been renamed such that Decode* now only performs\n unmarshaling, and DecodeAndValidate* unmarshals and validates.\n- Decoding/Encoding functions for IClaims have been moved from\n profile.go to iclaims.go.\n\nBREAKING CHANGE: the From/To marshaling API have been removed; Decode*\nfunctions have been renamed to be consistent with marshaling (rather\nthen DecodeXXX--that validates--and DecodeUnvalidatedXXX, there is now\nDecodeAndValidateXXX and DecodeXXX--that does not validate).\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: more conventional marshaling"}},{"before":"2fbb5b927aefd814a4d813d29571949edeabba87","after":null,"ref":"refs/heads/profiles","pushedAt":"2024-07-18T10:37:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"}},{"before":"ae474092755a5e8337ff5628d54ccffe7d41bedc","after":"89fde617284b71b35b8638084ee4ac0e8ea677da","ref":"refs/heads/main","pushedAt":"2024-07-18T10:37:21.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"024780c066866bdef299ea6432f4bc4a0c517860","after":"2fbb5b927aefd814a4d813d29571949edeabba87","ref":"refs/heads/profiles","pushedAt":"2024-07-18T10:01:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"2f8ec13b599192a24f763196e4beaba24085435d","after":"024780c066866bdef299ea6432f4bc4a0c517860","ref":"refs/heads/profiles","pushedAt":"2024-07-18T09:01:15.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"a89051a396375a5ac28dfa09270ca9e144f5eea6","after":"2f8ec13b599192a24f763196e4beaba24085435d","ref":"refs/heads/profiles","pushedAt":"2024-07-18T08:48:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"d6d807e55f978e27f15bd84d47afb8686888db81","after":"a89051a396375a5ac28dfa09270ca9e144f5eea6","ref":"refs/heads/profiles","pushedAt":"2024-07-18T08:45:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"a56be0c51efe73097379f85b4bc77b2c98e35d22","after":"d6d807e55f978e27f15bd84d47afb8686888db81","ref":"refs/heads/profiles","pushedAt":"2024-07-18T08:43:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"a04e8e0803327a614f5e719a03a03b050e92c52e","after":"a56be0c51efe73097379f85b4bc77b2c98e35d22","ref":"refs/heads/profiles","pushedAt":"2024-07-17T13:08:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"5b10a47ca1f57e489d481cddaa48dfee42042b91","after":"a04e8e0803327a614f5e719a03a03b050e92c52e","ref":"refs/heads/profiles","pushedAt":"2024-07-17T12:24:30.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"doc: add documentation\n\nAdd missing API documentation, and document profiles\nimplementation/extension.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"doc: add documentation"}},{"before":"32a0e6162eafcf6e47fecd2065cf27451950344f","after":"5b10a47ca1f57e489d481cddaa48dfee42042b91","ref":"refs/heads/profiles","pushedAt":"2024-07-08T09:12:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"abdf66a30d8267b3d501acacd5a9dbb6d7a3782b","after":"32a0e6162eafcf6e47fecd2065cf27451950344f","ref":"refs/heads/profiles","pushedAt":"2024-07-05T22:46:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"043a0f7bb18a4fc964f27615be58b911e13981d2","after":"abdf66a30d8267b3d501acacd5a9dbb6d7a3782b","ref":"refs/heads/profiles","pushedAt":"2024-07-03T13:44:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"8f861a8e7bed9ded466ed0c673b20f89d0f1cdb4","after":"043a0f7bb18a4fc964f27615be58b911e13981d2","ref":"refs/heads/profiles","pushedAt":"2024-07-03T08:42:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"9222d874f648c3fcdb9815c87fb9b7923e7457a8","after":"8f861a8e7bed9ded466ed0c673b20f89d0f1cdb4","ref":"refs/heads/profiles","pushedAt":"2024-07-03T08:41:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"58bc3f8656ea5e104df91a486c6422d8ffdfb7b7","after":"9222d874f648c3fcdb9815c87fb9b7923e7457a8","ref":"refs/heads/profiles","pushedAt":"2024-07-03T08:38:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"3cf52f6a2711d685853aff27155391004876f4d9","after":"58bc3f8656ea5e104df91a486c6422d8ffdfb7b7","ref":"refs/heads/profiles","pushedAt":"2024-07-02T16:05:36.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"refactor!: profiles part 4: remove CCA\n\nRemove all CCA related code as it is moving into ccatoken.\n\nBREAKING CHANGE: CCAPlatformClaims and related code are removed. Use\ngithub.com/veraison/ccatoken/platform.Claims instead.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"refactor!: profiles part 4: remove CCA"}},{"before":"f056281bf4d9a0524e6c191152a0deb92afddccf","after":"3cf52f6a2711d685853aff27155391004876f4d9","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:27:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"8dc00f32f0657e304fd15cfbd7782fa6b6cf3b92","after":"f056281bf4d9a0524e6c191152a0deb92afddccf","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:26:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"0951b7e4214bb49cfa7fd1a7fe28f4dbc2111699","after":"8dc00f32f0657e304fd15cfbd7782fa6b6cf3b92","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:24:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"66f275c989839559b1be55e443ee2ae9ef04820a","after":"0951b7e4214bb49cfa7fd1a7fe28f4dbc2111699","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:21:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"4822efa9d7b1fddb3d5431b16b518cb2f3d85f7f","after":"66f275c989839559b1be55e443ee2ae9ef04820a","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:17:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"e142ee2ceab494ed54432d998a90809e881f48f7","after":"4822efa9d7b1fddb3d5431b16b518cb2f3d85f7f","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:12:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: Claims structures have been altered to use\nISwComponents.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"5f61a74988f08018c41fc6899427ffc406b1593a","after":"e142ee2ceab494ed54432d998a90809e881f48f7","ref":"refs/heads/profiles","pushedAt":"2024-07-01T19:10:00.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat!: profiles part 3: extendable sw components\n\nIntroduce a number changes and refactors to allow external profiles to\nextend/modify software components.\n\n- Add ISwComponent interface for accessing sw component fields. This\n will allow profiles to introduce their own fields in a similar way to\n claims.\n- Add ISwComponents interface that defines a container structure for\n ISwComponent's. This is necessary to neatly handle marshaling of a\n slice of interfaces.\n- Add SwComponets[I ISwComponent], a generic implementation of\n ISwComponents interface. The intent is that this (or rather, its\n concrete instantiations) would be the only implementation of\n ISwComponents needed. ISwComponents is used to hide this to avoid\n needing to make the claims structures generic as well. Generics\n require updating the required Go version to 21.\n- Replace *[]SwComponent field inside claims structures with\n ISwComponents. This requires for the SwComponents field to always be\n initialized before unmarshaling (which cannot handle nil interfaces),\n so fixup tests to judiciously use newXXXClaims() methods to get claims\n instances.\n- update newXXXClaims() methods to not return error. This removes the\n need for useless error checks in tests. An error cannot occur since\n all initial values are full controlled by this code.\n- The resulting changes now make CCAPlatformClaims detect as \"heavy\" by\n the linter, so use pointers in method receivers.\n- Due to introduction of new interfaces and corresponding error checks,\n some of which cannot fail in current implementations, drop coverage\n requirement by 1%.\n\nBREAKING CHANGE: required Go version has been bumped to 21 in order to\nallow the use of generics for the SwComponents structure.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat!: profiles part 3: extendable sw components"}},{"before":"358e6e2dbe292797cd06b73353912b1559b206f3","after":"5f61a74988f08018c41fc6899427ffc406b1593a","ref":"refs/heads/profiles","pushedAt":"2024-07-01T12:03:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat: profiles part 2: split profile-specific code\n\n- Define IBaseClaims interface which is intended to be inherited by all\n claims objects and does not define getters/setters for specific fields\n (note: this anticipates the CCA realm claims, which will use the same\n mechanisms, but do not have the same fields.)\n- Define ICCAClaims for CCA, moving the CCA-specific claims there. This\n removes the need to implement them for P1 and P2 claims.\n- Clean up validation:\n - Add ErrClaimNotInProfile to provide a standard signal to\n indicate that the claim is not implemented by current profile\n (analogous to the existing signals for mandatory/optional claims).\n - Add FilterClaimError (which filters out ErrClaimNotInProfile and\n ErrMissingOptionalClaim errors) and export VaidateClaims()\n function; these will be useful for implementing validation for\n external profile implementations.\n - Move profile-specific validation into profile code.\n - Expose generic validation function, as they may be generally\n useful. E.g. if client code wants to check wither a hash is\n PSA-compatible without creating a token.\n- Isolate CCA code in preparation to moving it into ccatoken library.\n- Remove internal intermediate setter/getter functions -- those provide\n minimal de-duplication (mostly nil checks) for getters/setters, but at\n the cost of indirection, and are not worth it. Additionally, some of\n them are in-fact profile specific and so add unnecessary entanglement\n between profile code.\n- Remove P1-specific tags from error messages, using generic claim names\n instead (e.g. \"nonce\" rather than \"psa-nonce\"), as the same errors are\n used by P2 and CCA profiles and could therefore lead to confusion.\n- Rename validation functions from isValidXXX (which implies a boolean\n return value) to ValidateXXX.\n- Remove \"PSA\" from exported names; with CCA code moving, all remaining\n code is PSA-related, which is reflected in the name of the package.\n- Use upper case consistently for initialisms.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat: profiles part 2: split profile-specific code"}},{"before":null,"after":"358e6e2dbe292797cd06b73353912b1559b206f3","ref":"refs/heads/profiles","pushedAt":"2024-06-26T16:34:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"},"commit":{"message":"feat: profiles part 1: registration\n\nUp to this point, the strategy for dealing with multiple claim profiles,\nis to try unmarshalling each profile's claim structure in turn and then\nsee \"what sticks\".\n\nThis change introduces an IProfile interface that associates claims with\na profile name*. An IProfile is registered and the correct one is then\nautomatically selected by Evidence when unmarshalling CBOR/JSON.\n\n*note: in order to maintain compatibility with P1, the name is a\n string, however, conceptually it should be an EAT profile (i.e. a URL\n or an OID). This should be kept in mind if we want to push profiles\n down into generic EAT code.\n\nUnmarshalling is now a two-phase process:\n\n1. First, the profile claim is identified, extracted, and used to select\n the right claims structure based on registered profiles. If no\n profile claim is present, then P1 is assumed, as it is the only\n profile for which that claim is optional.\n2. The claims structure is then unmarshalled as before.\n\nThis change means that profiles need not be hard-coded in this code\nbase, and can be provided by external code using this library by\ndefining an appropriate IProfile implementation and registering it with\nRegisterProfile(). As a bonus, this also produces cleaner, easier to\nparse error messages, as only the relevant profile's errors are now\nreported.\n\nSigned-off-by: Sergei Trofimov ","shortMessageHtmlLink":"feat: profiles part 1: registration"}},{"before":"d745fa51e391c410c8d8ceb22877dddd880c04ee","after":null,"ref":"refs/heads/setrofim","pushedAt":"2023-03-30T14:07:25.106Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"setrofim","name":null,"path":"/setrofim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/904685?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEhqXvQAA","startCursor":null,"endCursor":null}},"title":"Activity ยท veraison/psatoken"}