The traditional method for dirt/wear mapping has been to use an Ambient Occlusion shader to catch recesses, with the normals flipped for convex protrusions. In the AO node available in more recent builds of 2.79, the normals are flipped by using the 'inside' option.
AO is not strictly responding to the angle between adjacent faces, it's a representation of how many hits there have been within a distance threshold, from a sample of rays fired in the hemisphere of directions surrounding the surface normal at that point.
A more specific response to the curvature of a surface can be obtained from its 'Pointiness' value, which you can get from the Geometry input node:
... which as far as I can gather uses angles between adjacent edges to approximate curvature.
In order to make it work here, this cube had to be subdivided. A Simple subdivision will do, or, as illustrated, Catmull-Clark with a bevel to hold the edges.
The values generated from these shaders can be used to control the mix of other shaders or colors, or anything you like that can be controlled by a number. If different gradations are needed, you can put the values through a color ramp, curves, or map them to another range in some other way, as in the second example.
They can be combined in ways like this:
Or this, using AO alone, which is not toplology-dependent.