Web Crypto API - deriveKey vs. deriveBits? I have some questions about deriveKey and deriveBits for web crypto API.


I am confused about the state of these APIs. I do understand deriveKey generates a native key object whereas deriveBits just generates a byte array. However, when I look at Mozilla documentation https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto it doesn't even include deriveBits() in the API list. Is this one of those features that are "experimental" and may be dropped in the future? Or is this some political gesture?
What makes this even more confusing is how Safari doesn't even implement deriveKey() for PBKDF2 at all, whereas they did recently implement deriveBits() for PBKDF2 https://webkit.org/blog/7790/update-on-web-cryptography/ Does this mean I have to give up on using deriveKey() and use deriveBits() in order to support all platforms?
Assuming that #2 is true, I'm thinking of


using deriveBits() to first generate a bytearray
and then feed it into importKey() to generate a symmetric AES key
and use this process as an alternative to using the deriveKey() API. Is this the way to go?
It sounds like deriveKey is just a composition of deriveBits and importKey.  There is no cryptographic difference between ‘generating an AES256-CTR key’ and ‘generating 256 bits uniformly at random’—this is at most an API distinction.  Support for one or the other is inconsistent, apparently, even though they both appear in the W3C recommendation.  How to get around this in practice in a web application is a question for a forum on JavaScript coding, not crypto.se, however.