123456789101112131415161718192021222324252627282930313233343536373839open!Coretypet=|Krb|Krb_test_mode|Rpc[@@derivingcompare,enumerate,sexp,bin_io]letmagic_word=function|Krb->"KRB2"|Krb_test_mode->"KBT"|Rpc->"RPC";;letgen_magic_numberword=String.to_list_revword|>List.fold~init:0~f:(funaccc->(acc*256)+Char.to_intc);;letmagic_numbert=gen_magic_number(magic_wordt)letby_magic_number=Int.Map.of_alist_exn(List.mapall~f:(funp->magic_numberp,p))(* We once minted a new magic number for Krb in order to change the protocol
negotiation. Let's be careful that we don't reuse the old magic number *)letretired_krb_word="KRB"(* Ensure tests break if the magic numbers are changed *)let%test_unit"magic numbers"=assert(gen_magic_numberretired_krb_word=4_346_443);assert(magic_numberKrb=843_207_243);assert(magic_numberKrb_test_mode=5_521_995);assert(magic_numberRpc=4_411_474);;moduleFor_test=structletall_magic_numbers_including_retired=lazy(retired_krb_word::List.mapall~f:magic_word|>List.map~f:gen_magic_number);;end