At its core, DraftJS' API only deals with maintaining the immutable data model representing an editor's state (which, among other things, involves content blocks).
The HTML output is a result of the DraftJS' Editor Component, which renders the said immutable state into a corresponding contenteditable HTML tree.
Having said that, can you see what's wrong with the following assumption?
The closest thing I have seen is this — draftjs.org/docs/advanced-topics-block-styling.html#blockstylefn... which basically says that you can apply a className to a particular type of tag.
You're spot on until the bold part ... you can use the blockStyleFn to apply a className not to a particular type of tag, but to a particular block type.
The example in the above URL doesn't help with this distinction, because both the block type, and the corresponding HTML tag are called blockquote. And hence, the pitfall! :)
The solution to your problem is to change the block type of the content block, which by default is equal to unstyled ... to something custom, say custom-block-type
For a list of default block types that come out of the box with DraftJS, take a look here — draftjs.org/docs/api-reference-content-block.html
And then you can use the blockStyleFn (draftjs.org/docs/advanced-topics-block-styling.html#blockstylefn) to target blocks with custom-block-type to add custom-class-1 to the corresponding HTML element.
Hope this answers your question, if not please do let me know! :)