Index: public/platform/WebCryptoAlgorithmParams.h |
diff --git a/public/platform/WebCryptoAlgorithmParams.h b/public/platform/WebCryptoAlgorithmParams.h |
index aaed0847aa4713c322de61a44451157b67448ba6..f6fe2ee0b7bf369d2f16d562052bf0e4f0604277 100644 |
--- a/public/platform/WebCryptoAlgorithmParams.h |
+++ b/public/platform/WebCryptoAlgorithmParams.h |
@@ -51,42 +51,51 @@ namespace blink { |
class WebCryptoAlgorithmParams { |
public: |
- explicit WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsType type) |
- : m_type(type) |
+ WebCryptoAlgorithmParams() { } |
+ virtual ~WebCryptoAlgorithmParams() { } |
+ virtual WebCryptoAlgorithmParamsType type() const = 0; |
+}; |
+ |
+class WebCryptoAesCbcParams : public WebCryptoAlgorithmParams { |
+public: |
+ WebCryptoAesCbcParams(const unsigned char* iv, unsigned ivSize) |
+ : m_iv(iv, ivSize) |
{ |
} |
- virtual ~WebCryptoAlgorithmParams() { } |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeAesCbcParams; } |
- WebCryptoAlgorithmParamsType type() const { return m_type; } |
+ const WebVector<unsigned char>& iv() const { return m_iv; } |
private: |
- const WebCryptoAlgorithmParamsType m_type; |
+ const WebVector<unsigned char> m_iv; |
}; |
-class WebCryptoAesCbcParams : public WebCryptoAlgorithmParams { |
+class WebCryptoAlgorithmParamsWithHash : public WebCryptoAlgorithmParams { |
public: |
- WebCryptoAesCbcParams(const unsigned char* iv, unsigned ivSize) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeAesCbcParams) |
- , m_iv(iv, ivSize) |
+ explicit WebCryptoAlgorithmParamsWithHash(const WebCryptoAlgorithm& hash) |
+ : m_hash(hash) |
{ |
+ BLINK_ASSERT(!hash.isNull()); |
} |
- const WebVector<unsigned char>& iv() const { return m_iv; } |
+ const WebCryptoAlgorithm& hash() const { return m_hash; } |
private: |
- const WebVector<unsigned char> m_iv; |
+ const WebCryptoAlgorithm m_hash; |
}; |
class WebCryptoAesCtrParams : public WebCryptoAlgorithmParams { |
public: |
WebCryptoAesCtrParams(unsigned char lengthBits, const unsigned char* counter, unsigned counterSize) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeAesCtrParams) |
+ : WebCryptoAlgorithmParams() |
, m_counter(counter, counterSize) |
, m_lengthBits(lengthBits) |
{ |
} |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeAesCtrParams; } |
+ |
const WebVector<unsigned char>& counter() const { return m_counter; } |
unsigned char lengthBits() const { return m_lengthBits; } |
@@ -98,80 +107,59 @@ private: |
class WebCryptoAesKeyGenParams : public WebCryptoAlgorithmParams { |
public: |
explicit WebCryptoAesKeyGenParams(unsigned short lengthBits) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeAesKeyGenParams) |
- , m_lengthBits(lengthBits) |
+ : m_lengthBits(lengthBits) |
{ |
} |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeAesKeyGenParams; } |
+ |
unsigned short lengthBits() const { return m_lengthBits; } |
private: |
const unsigned short m_lengthBits; |
}; |
-class WebCryptoHmacParams : public WebCryptoAlgorithmParams { |
+class WebCryptoHmacImportParams : public WebCryptoAlgorithmParamsWithHash { |
public: |
- explicit WebCryptoHmacParams(const WebCryptoAlgorithm& hash) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeHmacParams) |
- , m_hash(hash) |
+ explicit WebCryptoHmacImportParams(const WebCryptoAlgorithm& hash) |
+ : WebCryptoAlgorithmParamsWithHash(hash) |
{ |
- BLINK_ASSERT(!hash.isNull()); |
} |
- const WebCryptoAlgorithm& hash() const { return m_hash; } |
- |
-private: |
- const WebCryptoAlgorithm m_hash; |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeHmacImportParams; } |
}; |
-class WebCryptoHmacKeyParams : public WebCryptoAlgorithmParams { |
+class WebCryptoHmacKeyGenParams : public WebCryptoAlgorithmParamsWithHash { |
public: |
- WebCryptoHmacKeyParams(const WebCryptoAlgorithm& hash, bool hasLengthBytes, unsigned lengthBytes) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeHmacKeyParams) |
- , m_hash(hash) |
+ WebCryptoHmacKeyGenParams(const WebCryptoAlgorithm& hash, bool hasLengthBytes, unsigned lengthBytes) |
+ : WebCryptoAlgorithmParamsWithHash(hash) |
, m_hasLengthBytes(hasLengthBytes) |
, m_optionalLengthBytes(lengthBytes) |
{ |
- BLINK_ASSERT(!hash.isNull()); |
BLINK_ASSERT(hasLengthBytes || !lengthBytes); |
} |
- const WebCryptoAlgorithm& hash() const { return m_hash; } |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeHmacKeyGenParams; } |
bool hasLengthBytes() const { return m_hasLengthBytes; } |
unsigned optionalLengthBytes() const { return m_optionalLengthBytes; } |
private: |
- const WebCryptoAlgorithm m_hash; |
const bool m_hasLengthBytes; |
const unsigned m_optionalLengthBytes; |
}; |
-class WebCryptoRsaSsaParams : public WebCryptoAlgorithmParams { |
-public: |
- explicit WebCryptoRsaSsaParams(const WebCryptoAlgorithm& hash) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeRsaSsaParams) |
- , m_hash(hash) |
- { |
- BLINK_ASSERT(!hash.isNull()); |
- } |
- |
- const WebCryptoAlgorithm& hash() const { return m_hash; } |
- |
-private: |
- const WebCryptoAlgorithm m_hash; |
-}; |
- |
class WebCryptoRsaKeyGenParams : public WebCryptoAlgorithmParams { |
public: |
WebCryptoRsaKeyGenParams(unsigned modulusLengthBits, const unsigned char* publicExponent, unsigned publicExponentSize) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeRsaKeyGenParams) |
- , m_modulusLengthBits(modulusLengthBits) |
+ : m_modulusLengthBits(modulusLengthBits) |
, m_publicExponent(publicExponent, publicExponentSize) |
{ |
} |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeRsaKeyGenParams; } |
+ |
unsigned modulusLengthBits() const { return m_modulusLengthBits; } |
const WebVector<unsigned char>& publicExponent() const { return m_publicExponent; } |
@@ -183,8 +171,7 @@ private: |
class WebCryptoAesGcmParams : public WebCryptoAlgorithmParams { |
public: |
WebCryptoAesGcmParams(const unsigned char* iv, unsigned ivSize, bool hasAdditionalData, const unsigned char* additionalData, unsigned additionalDataSize, bool hasTagLengthBits, unsigned char tagLengthBits) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeAesGcmParams) |
- , m_iv(iv, ivSize) |
+ : m_iv(iv, ivSize) |
, m_hasAdditionalData(hasAdditionalData) |
, m_optionalAdditionalData(additionalData, additionalDataSize) |
, m_hasTagLengthBits(hasTagLengthBits) |
@@ -194,6 +181,8 @@ public: |
BLINK_ASSERT(hasTagLengthBits || !tagLengthBits); |
} |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeAesGcmParams; } |
+ |
const WebVector<unsigned char>& iv() const { return m_iv; } |
bool hasAdditionalData() const { return m_hasAdditionalData; } |
@@ -210,25 +199,48 @@ private: |
const unsigned char m_optionalTagLengthBits; |
}; |
-class WebCryptoRsaOaepParams : public WebCryptoAlgorithmParams { |
+class WebCryptoRsaHashedImportParams : public WebCryptoAlgorithmParamsWithHash { |
+public: |
+ explicit WebCryptoRsaHashedImportParams(const WebCryptoAlgorithm& hash) |
+ : WebCryptoAlgorithmParamsWithHash(hash) |
+ { |
+ } |
+ |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeRsaHashedImportParams; } |
+}; |
+ |
+class WebCryptoRsaHashedKeyGenParams : public WebCryptoRsaKeyGenParams { |
public: |
- WebCryptoRsaOaepParams(const WebCryptoAlgorithm& hash, bool hasLabel, const unsigned char* label, unsigned labelSize) |
- : WebCryptoAlgorithmParams(WebCryptoAlgorithmParamsTypeRsaOaepParams) |
+ explicit WebCryptoRsaHashedKeyGenParams(const WebCryptoAlgorithm& hash, unsigned modulusLengthBits, const unsigned char* publicExponent, unsigned publicExponentSize) |
+ : WebCryptoRsaKeyGenParams(modulusLengthBits, publicExponent, publicExponentSize) |
, m_hash(hash) |
- , m_hasLabel(hasLabel) |
- , m_optionalLabel(label, labelSize) |
{ |
BLINK_ASSERT(!hash.isNull()); |
- BLINK_ASSERT(hasLabel || !labelSize); |
} |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams; } |
+ |
const WebCryptoAlgorithm& hash() const { return m_hash; } |
+private: |
+ const WebCryptoAlgorithm m_hash; |
+}; |
+ |
+class WebCryptoRsaOaepParams : public WebCryptoAlgorithmParams { |
+public: |
+ WebCryptoRsaOaepParams(bool hasLabel, const unsigned char* label, unsigned labelSize) |
+ : m_hasLabel(hasLabel) |
+ , m_optionalLabel(label, labelSize) |
+ { |
+ BLINK_ASSERT(hasLabel || !labelSize); |
+ } |
+ |
+ virtual WebCryptoAlgorithmParamsType type() const { return WebCryptoAlgorithmParamsTypeRsaOaepParams; } |
+ |
bool hasLabel() const { return m_hasLabel; } |
const WebVector<unsigned char>& optionalLabel() const { return m_optionalLabel; } |
private: |
- const WebCryptoAlgorithm m_hash; |
const bool m_hasLabel; |
const WebVector<unsigned char> m_optionalLabel; |
}; |