diff --git a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/utils/P4InfoBrowser.java b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/utils/P4InfoBrowser.java
index 29cddff..8504202 100644
--- a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/utils/P4InfoBrowser.java
+++ b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/utils/P4InfoBrowser.java
@@ -30,6 +30,7 @@
 import p4.config.v1.P4InfoOuterClass.P4Info;
 import p4.config.v1.P4InfoOuterClass.Preamble;
 import p4.config.v1.P4InfoOuterClass.Table;
+import p4.config.v1.P4InfoOuterClass.Digest;
 
 import java.util.Map;
 
@@ -55,6 +56,7 @@
     private final Map<Integer, EntityBrowser<MatchField>> matchFields = Maps.newHashMap();
     private final Map<Integer, EntityBrowser<ControllerPacketMetadata.Metadata>> ctrlPktMetadatasMetadata =
             Maps.newHashMap();
+    private final EntityBrowser<Digest> digests = new EntityBrowser<>("digest");
 
     /**
      * Creates a new browser for the given P4Info.
@@ -116,6 +118,9 @@
                     entity.getMetadataList().forEach(m -> metadataBrowser.add(m.getName(), null, m.getId(), m));
                     ctrlPktMetadatasMetadata.put(ctrlPktMetadataId, metadataBrowser);
                 });
+
+        p4info.getDigestsList().forEach(
+                entity -> digests.addWithPreamble(entity.getPreamble(), entity));
     }
 
     /**
@@ -191,6 +196,15 @@
     }
 
     /**
+     * Returns a browser for digests.
+     *
+     * @return digest browser
+     */
+    public EntityBrowser<Digest> digests() {
+        return digests;
+    }
+
+    /**
      * Returns a browser for params of the given action.
      *
      * @param actionId action identifier
