let fold f idx acc =
    let acc = Signature.fold 
                (fun acc (k, info) -> f (Key.SigKey k) info acc) 
                acc idx.sgn in
    let acc = H.fold 
                (fun k info acc -> f (Hkey.key k) info acc) idx.other acc in
    List.fold_left 
      (fun acc (call, (_, sgn)) -> 
        Signature.fold (fun acc (k, info) -> 
          f (Key.SigCallKey (call, k)) info acc) 
          acc sgn) 
      acc idx.calls