JSCryptoKeySerializationJWK.h [plain text]
#ifndef JSCryptoKeySerializationJWK_h
#define JSCryptoKeySerializationJWK_h
#include "CryptoKeySerialization.h"
#include <heap/Strong.h>
#include <wtf/Vector.h>
#include <wtf/text/WTFString.h>
#if ENABLE(SUBTLE_CRYPTO)
namespace JSC {
class ExecState;
class JSObject;
}
namespace WebCore {
class CryptoAlgorithmParameters;
class CryptoKey;
class CryptoKeyDataRSAComponents;
class JSCryptoKeySerializationJWK final : public CryptoKeySerialization {
WTF_MAKE_NONCOPYABLE(JSCryptoKeySerializationJWK);
public:
static std::unique_ptr<JSCryptoKeySerializationJWK> create(JSC::ExecState* exec, const String& jsonString)
{
return std::unique_ptr<JSCryptoKeySerializationJWK>(new JSCryptoKeySerializationJWK(exec, jsonString));
}
virtual ~JSCryptoKeySerializationJWK();
static String serialize(JSC::ExecState* exec, const CryptoKey&);
private:
JSCryptoKeySerializationJWK(JSC::ExecState*, const String&);
virtual bool reconcileAlgorithm(std::unique_ptr<CryptoAlgorithm>&, std::unique_ptr<CryptoAlgorithmParameters>&) const override;
virtual void reconcileUsages(CryptoKeyUsage&) const override;
virtual void reconcileExtractable(bool&) const override;
virtual std::unique_ptr<CryptoKeyData> keyData() const override;
bool keySizeIsValid(size_t sizeInBits) const;
std::unique_ptr<CryptoKeyData> keyDataOctetSequence() const;
std::unique_ptr<CryptoKeyData> keyDataRSAComponents() const;
JSC::ExecState* m_exec;
JSC::Strong<JSC::JSObject> m_json;
mutable String m_jwkAlgorithmName; };
}
#endif // ENABLE(SUBTLE_CRYPTO)
#endif // JSCryptoKeySerializationJWK_h