KEKS/Schema я написал уже относительно давно. Но только сегодня был
шокирован осознанием того, что у меня не было возможности убедиться
через схемы в том, что в MAP нет лишних полей, за исключением явно
перечисленных, пускай даже и optional. Это вообще поведение по
умолчанию как и в ASN.1, так и в CDDL. И мои команды валидации не
позволяли это проверить.
Добавил команду EXAMINED, которая декрементирует счётчик кол-ва
неучтённых/необработанных полей в MAP. По завершению проверки схемы
напротив MAP-а, он проверяет что равен нулю. Проверка включается только
если хотя бы одна команды EXAMINED была встречена. Соответственно в Tcl
схеме, если не указать "len=~", то EXAMINED команды будут добавляться
после каждого TAKE создаваемого во время выполнения "field" команды
схемы. Иначе EXAMINED не добавляется и проверки на кол-во учтённых полей
не будет.
Для меня на удивление мало кода потребовалось для поддержки этой
команды и вообще проверки.