From the X.509 specs:
CRLReason ::= ENUMERATED {
unspecified (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
-- value 7 is not used
removeFromCRL (8),
privilegeWithdrawn (9),
aACompromise (10) }
...and...
Version ::= INTEGER { v1(0), v2(1), v3(2) }
Why isn't Version an ENUMERATED type? And similarly, why isn't CRLReason an INTEGER?