Update slot transition diagram

Adds missing transition and italicises internal functions

Signed-off-by: Ryan Everett <ryan.everett@arm.com>
This commit is contained in:
Ryan Everett 2024-03-15 17:29:46 +00:00
parent f6f973c235
commit c408ef463c
2 changed files with 2 additions and 2 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -161,9 +161,9 @@ There are four possible states for a key slot:
###### Key slot state transition diagram
![](key-slot-state-transitions.png)
In the state transition diagram above, an arrow between two states `q1` and `q2` with label `f` indicates that if the state of a slot is `q1` immediately before `f`'s linearization point, it may be `q2` immediately after `f`'s linearization point. The `PSA_SLOT_PENDING_DELETION -> PSA_SLOT_EMPTY` transition can be done by any function which calls `psa_unregister_read`.
In the state transition diagram above, an arrow between two states `q1` and `q2` with label `f` indicates that if the state of a slot is `q1` immediately before `f`'s linearization point, it may be `q2` immediately after `f`'s linearization point. Internal functions have italicized labels. The `PSA_SLOT_PENDING_DELETION -> PSA_SLOT_EMPTY` transition can be done by any function which calls `psa_unregister_read`.
The state transition diagram can be generated in https://app.diagrams.net/ via this [url](https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1#R3VxLd5s4FP4ts%2FAyOUjiuazrJJPW7aQn7UzTjQ8F2VaLgQP4lV8%2FwjyMBMaCgEOaRQ8S0gV0rz599%2BGO0PvV7i4w%2FeUnz8bOCEr2boQmIwh1JNF%2F44590iFrKOlYBMROusCx45E847QznbdYExuHzMDI85yI%2BGyn5bkutiKmzwwCb8sOm3sO%2B1TfXOBSx6NlOuXe%2F4gdLdPPgtqx%2F29MFsvsyUA1kjsrMxucfkm4NG1vW%2BhCNyP0PvC8KLla7d5jJ167bF2Sebcn7uYvFmA3EpnwAzxP5%2F%2Fef9h%2BMVx3PH765f%2F6eJUqY2M66%2FSDR1B1qLyxTTb0chFf3n6bTrNuKr9wp2Lw0gxnATZtHITZ3Z8BP56XclifaJ8tOn1xql%2FaGG%2BXJMKPvmnFd7bUwuInRCuHtgC9NEM%2FUfqc7LCdiyouSrpOGxxEeFfoShfpDnsrHAV7OiS9K%2BupwlKLVaW0vS3oP%2B1aFlSf9ZmpxS1yyUel0ItULw10BECFkvgVc%2B13sbXTluWYYUgsdqECb%2B3a8QpNJNqiixPsv6e3Do2nYmOyK46b7LPWjkT5JHr9VOg%2FTokb2YyT2gi9dWDh83YZmcECRzXj5GQctpldXNZtQXdKhe6yvgA7ZkQ27N6vUmj6hAeP0C87aTqKytlE8t3prOJe5QVpxrVR%2BNMZsTLixCbLVBJ7sLZ8EV5ggLBkgH5oztZugBckjHBw2PBlm6RKmZo%2F6XnA7lmHLNzYTqlR4IB2xFuTUMR9l95YEduOZYwDHJJn8%2BdBXmxOfvyBh09WxiNlUmlg9TuIB4H83EifwkBzFThI11DSDEYbV%2FBltpOJAdwUbz4PcT%2F6FAH9m08PX5%2FeJoIPDsCNzgE8hWKpAMWgFopzyJeKkC%2Bdgfz2AA4FARwMC8BZyykBrTB%2BnzkHegbsjHJygD03iTP7jfczi%2BJ1RDx3yJCd7ZkhQnYqGTJC%2Bfn94Xf5OL69n07vP98NGoaR%2BsowLIsce418nb%2F%2BOGfn1ZWkiCjp4ebz5GDugnqa3Exvvt7%2F8%2Flt6mhwfEbri86Ie5btPNj2dCYLPZ2jM3BQdAZK9PDTZagB6lHKisqegoqsXmtA0aCuKbSBOPGiXAeoHGmSL0t2dBHEiOkP5SY42ODZPMD4QINCx4uEMSSWENJPiTgG1RZRBsO0st08RKKVi5Evxa1AFUvoHtyulTbeWjLrVf21YQXcYoCTpAzgVIpFLBSBOIyWIRzSJa0dxMkSB3HU1hFnkn3H4IRhbk5cEi4rUerNYFK%2BC18MSlfUQGRDY1EJdWN8eqXUC2BUFUnmdGmt6VFn55zoctkB8ZBUe7ASzQ6gQYGVrCmMwahay%2BiSonKCeKZ%2FAouoDZj7wrB0e55%2BYYOFPU2S6t8LcuPBmfGyXiefXiRv3HbzTMayBcid5TvPeH1PHpV3DzsxBzOhi0xyowFNpGs%2FM1175njW75xozr43kmE5XnhgqY1m%2BWuq%2BOKsN8xLc5Tr4gwASGdtrZsIIMt2oXKpEwBV5e07YalF%2BBZ0wQu0tN%2BcgiwI%2B8PKKUANMlaiKC1hH5yKA12IgqIq16gShmwcRoG3fzl8dQOVg4W4fBt34HvLuso6P9k2eKH5XrFcw%2BgB4irP6e6DjJW09hxaNcfF%2FvFtWEFGxLE%2BpW3SFGmcly1Ia7uyuLKHXRM1HAKm1O6bTliTwYWMO4IUkPn3fbrOlatzkUoM4egei0Q9RvdEHWZl0MiigrbIwtVjqP0V0FVaXfbeHLQwNGmwgNJZIUYMKNnUjjkKG9%2FroxCjWq8Xqsw9Dw1tYKg9nCiCcDIwR%2BxEeKoxnECOqKj9lXdVmx2sMLtK16hUotvArdoSv5wmfRvxpPrN2kWiE%2BisW9QRkAH0SkBWlV3iNNl5RqF1oGgoeMKFx1vH85GsXUNdV2QoG7IBkY54uUySEwqBTdNgP%2F2a4lOAwb6EJqFrDUr5H6r%2FImDUCgOgiTCl%2FZv1k0OoKOge7A8i6vd7B1goKTpL6jridH2UfDyQ9W46hzNdX3zZ%2FLj9aLmuX%2FlziG5IHFO90ernVb1RONGCtmHVeyCuEEPhQ0TCkKucCVp1R%2BEqbU6YwZGV7yU1Zw1TkC4OzKhFMN3zm8ftY5Zo44BsDtUmM28d%2Bevo7aUha9GhA6RUZFDpqL44nMYIvVipHHz9VHpzu%2FrDfmYlmjIQrYQ5ppOy3NSFamMMNiJcKiIWLtXjBIkmSY%2BCOt04H57k79uncPzNDvFXcm9f3c30HghHZqc5XWhiqWz6XqyGnjOkfjkIGhLl0Fp7eRzl0KCYZTZ15PiouSZ3W1VVadJlPlOL3q912guf4qxBn97FNQgKDLWb4x1xOTjO%2F2%2BDU7R5%2FI9HkuHH%2F70F3fwP), which encodes the graph.
The state transition diagram can be generated in https://app.diagrams.net/ via this [url](https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1#R3Vxbd5s4EP4t%2B%2BDH5CBxf6zrJJvW7aYn7W7dFx9qZFstBg7gW379CnMxkoUtY%2BGQ%2BiVISCPQjD59mhnSU98vNg%2BRE84%2FBS7yelBxNz110IMQAEsnf9KabVZjmHnFLMJu3mhf8YxfUF6p5LVL7KKYapgEgZfgkK6cBL6PJglV50RRsKabTQOPHjV0Zuig4nnieIe1%2F2E3mWe1FjT39X8jPJsXIwPDzu4snKJx%2Fibx3HGDdaVKveup76MgSLKrxeY98tLJK%2BYl63dfc7d8sAj5iUiHH%2BBlOP338cP6i%2B37%2Ff7oV%2Fjr442aSVk53jJ%2F4R40PCKv7%2BIVuZyll%2FffhsOimsiv3OE0njvxOEKOi6K4uPszYtuzUnbzk2yLSScPTvRLCv31HCfoOXQm6Z01MbF0hGThkRIgl04cZkqf4g1yS1HVScnnaYWiBG0qVfkkPaBggZJoS5rkdzUrV1hhsUpeXlf0n1fNK6ov6pzc4mal5L1SyEWulzN0BABHSeyM%2Be671NpJaeI5cYwn9ERFwdJ30xkaKKREJifafs9v7QqjamGwqbYbbIvSBidlJ3I9qtTvu6SFoketNuJgGU3QabtMnGiGkiPttKwdcqlVfKjbiu50ju6Kugh5ToJX9NrnKTQf4SnA5M1qTUc3GJvI3jvvVV2rrCDTvrUrP4sSq6mM2GyaDsTurK2chAsMENaiBC7WcBg746UfoRmOExTtEKCy2HH9UieaGzo%2Fya5BL2wPz%2FzUmInloIhUpOsXE1h%2Bl99YYNdNZfQjFOMX5%2BdOXmpzYToLu3nR%2Bz19wLXC48uMRYpyc8lHofCbhyDKLVRMm1LZDbzMwAoxgOkSTKcxakfpIjvD3aenr6O3CfOdQ3lbOsrneK1U8BocxetyXygLo2qhZl9ojvJQEOVBt1CetpwDNBYG%2BRObRcuoXvDSU6g%2BdbA3%2Fo224wkB9QQH%2FlvD9WJhdRHXc8mQEsr2bw%2FkDzf2%2B8fh8PHzQ6exWjVeGas1kb3xrFPTX3%2FcsenVlaSLKOnp7vNgZ%2B6CehrcDe%2B%2BPv7z%2BW3qqHOkx2yL84ifUZudhZtznsKJdYrzwE5xHqiQzc%2FSoAnI2VTTDXoX1DXj1gS6CS1TJwWVES9KiIDBMCvtuozIEkEMLkciZAVFKzSeRgjtuFLsBQmfJwkCDXeYmExAwuViXBw6OWpnOVuBC12kbKUY7VosDfD4hnyYvNWbHA6zXq96POyWEzCFSkUpoNIgqEaDGkhdewVWqpZiNgNLTWHAkti6yphk237B5oA5xT6O5wLHyjcGXOVSvRi5bogVabZJQ5cqx0ItrtQrABmPkzO6nCzJRuqWFOx6YQ1xN1lzRBMNa6idQjStiNmWMdyGHi%2FdYASxB4sawCI24GwrzfLlWf%2FANo2NpqIcfy7ItAcn2mvWMfnkInvipotn0NcmAD9MQu8FLR%2Fxs%2F7uaSN2nq1hpyejMpew0pqwTzNKKjYkMZKx47tjL5j8Lvn2%2BPtFA6VyJ14Q7wj8Wb3CJbHaaq%2BDwf8wel7iuIxdDqgWvZou5Oe5ZJr0Q%2F1ae5zKS6mQQtarG5SgT6PCztuN5GiCG1u3IjnQhJSV6HrDjQ3UOdauxMRV3gmRi1UuipMo2F6OcXLwtLMQVy5jCS4IzTLoM2CxDC403xuaTdktQByXicj32nKJ%2Bym0Oh8X28e3bnltVYbX6k1D1arJOBsEibssi6t3NDR1w3YBeI4uLinUymYc9ZJwBxRujjY9CNzZuUqSjLAnlIarFj2hon4DvdPwY4Cm8MOkyhjtJUByra547orZHXCpzgKKtPSXFFCKrpKJDO3mbCP9ha%2FXK2VWn4aGJjDUHE50QTjp2Gmtxkt3NpxAhs0Y7WXe8c0O1tKZhr42eZ61NQ4PqdPbdV8dX%2FYywsvlF05yIRGorwSJPKrNaFJ6iKaxX6oryMTEGxoHSFTNvIWWpWtQszUbqpbKyqVCy1AIts6NnpC3qY4CbPohTEW9NaFS%2FtTjbwTso8IAOEeY3vzJ2gnKcLP23%2FKnMcdBQQJgKrpFc0hJFLKNbJwnvNwMp3BsWbMvqx%2F3Hye%2BH3I%2FjJHDGanEmkZf47XGGEWzFruViqMyOTI667YSxmX9hCNNHmPk2pwQYUxxBi%2FCIEsRPMtPP0M%2BipykgYM%2FCM%2BPJaT00kURXu3yfsbBMgmX1DOfn1X9GlB5FB0kIKWuAe65%2BGLvHSX0almMsLMJDCeyCeScfv6wT%2FdEAyKimUz7YFkRebtSbpNNu7IPcs6F8zEZQaIh4L0gqUvww0j7vh7F%2FW9ujL7iR%2FfmYWy1QF0KOy2JxzmWSicnvP4nF93KumPJi9n4UMmQFxOKWea550bW3W9qcrPiuCZdz4yaJ4x1gVwcXb8SyAWwDTlsQmUijIxPogmYkeL%2B3%2BJkzff%2FXEi9%2Bx8%3D).
##### Key slot access primitives
The state of a key slot is updated via the internal function `psa_key_slot_state_transition`. To change the state of `slot` from `expected_state` to `new_state`, when `new_state` is not `PSA_SLOT_EMPTY`, one must call `psa_key_slot_state_transition(slot, expected_state, new_state)`; if the state was not `expected_state` then `PSA_ERROR_CORRUPTION_DETECTED` is returned, this must not be a possibility in our code. The sole reason for having an expected state parameter here is to guarantee that our functions work as expected.