Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: public/platform/WebCryptoKeyAlgorithmParams.h

Issue 340353006: [webcrypto] Replace KeyAlgorithm interfaces with an Object. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove const reference and make v8value a value Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « public/platform/WebCryptoKeyAlgorithm.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 19 matching lines...) Expand all
30 30
31 #ifndef WebCryptoKeyAlgorithmParams_h 31 #ifndef WebCryptoKeyAlgorithmParams_h
32 #define WebCryptoKeyAlgorithmParams_h 32 #define WebCryptoKeyAlgorithmParams_h
33 33
34 #include "WebCommon.h" 34 #include "WebCommon.h"
35 #include "WebCryptoAlgorithm.h" 35 #include "WebCryptoAlgorithm.h"
36 #include "WebVector.h" 36 #include "WebVector.h"
37 37
38 namespace blink { 38 namespace blink {
39 39
40 // Interface used for serializing WebCryptoKeyAlgorithmParams to a javascript
41 // dictionary.
42 class WebCryptoKeyAlgorithmDictionary {
43 public:
44 virtual ~WebCryptoKeyAlgorithmDictionary() { }
45
46 virtual void setString(const char*, const char*) = 0;
47 virtual void setUint(const char*, unsigned) = 0;
48 virtual void setAlgorithm(const char*, const WebCryptoAlgorithm&) = 0;
49 virtual void setUint8Array(const char*, const WebVector<unsigned char>&) = 0 ;
50 };
51
40 enum WebCryptoKeyAlgorithmParamsType { 52 enum WebCryptoKeyAlgorithmParamsType {
41 WebCryptoKeyAlgorithmParamsTypeNone, 53 WebCryptoKeyAlgorithmParamsTypeNone,
42 WebCryptoKeyAlgorithmParamsTypeHmac, 54 WebCryptoKeyAlgorithmParamsTypeHmac,
43 WebCryptoKeyAlgorithmParamsTypeAes, 55 WebCryptoKeyAlgorithmParamsTypeAes,
44 WebCryptoKeyAlgorithmParamsTypeRsaHashed 56 WebCryptoKeyAlgorithmParamsTypeRsaHashed
45 }; 57 };
46 58
47 class WebCryptoKeyAlgorithmParams { 59 class WebCryptoKeyAlgorithmParams {
48 public: 60 public:
49 virtual ~WebCryptoKeyAlgorithmParams() { } 61 virtual ~WebCryptoKeyAlgorithmParams() { }
50 virtual WebCryptoKeyAlgorithmParamsType type() const 62 virtual WebCryptoKeyAlgorithmParamsType type() const
51 { 63 {
52 return WebCryptoKeyAlgorithmParamsTypeNone; 64 return WebCryptoKeyAlgorithmParamsTypeNone;
53 } 65 }
66
67 virtual void writeToDictionary(WebCryptoKeyAlgorithmDictionary*) const = 0;
54 }; 68 };
55 69
56 class WebCryptoAesKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams { 70 class WebCryptoAesKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams {
57 public: 71 public:
58 explicit WebCryptoAesKeyAlgorithmParams(unsigned short lengthBits) 72 explicit WebCryptoAesKeyAlgorithmParams(unsigned short lengthBits)
59 : m_lengthBits(lengthBits) 73 : m_lengthBits(lengthBits)
60 { 74 {
61 } 75 }
62 76
63 unsigned short lengthBits() const 77 unsigned short lengthBits() const
64 { 78 {
65 return m_lengthBits; 79 return m_lengthBits;
66 } 80 }
67 81
68 virtual WebCryptoKeyAlgorithmParamsType type() const 82 virtual WebCryptoKeyAlgorithmParamsType type() const
69 { 83 {
70 return WebCryptoKeyAlgorithmParamsTypeAes; 84 return WebCryptoKeyAlgorithmParamsTypeAes;
71 } 85 }
72 86
87 virtual void writeToDictionary(WebCryptoKeyAlgorithmDictionary* dict) const
88 {
89 dict->setUint("length", m_lengthBits);
90 }
91
73 private: 92 private:
74 unsigned short m_lengthBits; 93 unsigned short m_lengthBits;
75 }; 94 };
76 95
77 class WebCryptoHmacKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams { 96 class WebCryptoHmacKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams {
78 public: 97 public:
79 WebCryptoHmacKeyAlgorithmParams(const WebCryptoAlgorithm& hash, unsigned len gthBits) 98 WebCryptoHmacKeyAlgorithmParams(const WebCryptoAlgorithm& hash, unsigned len gthBits)
80 : m_hash(hash) 99 : m_hash(hash)
81 , m_lengthBits(lengthBits) 100 , m_lengthBits(lengthBits)
82 { 101 {
83 } 102 }
84 103
85 const WebCryptoAlgorithm& hash() const 104 const WebCryptoAlgorithm& hash() const
86 { 105 {
87 return m_hash; 106 return m_hash;
88 } 107 }
89 108
90 unsigned lengthBits() const 109 unsigned lengthBits() const
91 { 110 {
92 return m_lengthBits; 111 return m_lengthBits;
93 } 112 }
94 113
95 virtual WebCryptoKeyAlgorithmParamsType type() const 114 virtual WebCryptoKeyAlgorithmParamsType type() const
96 { 115 {
97 return WebCryptoKeyAlgorithmParamsTypeHmac; 116 return WebCryptoKeyAlgorithmParamsTypeHmac;
98 } 117 }
99 118
119 virtual void writeToDictionary(WebCryptoKeyAlgorithmDictionary* dict) const
120 {
121 dict->setAlgorithm("hash", m_hash);
122 dict->setUint("length", m_lengthBits);
123 }
124
100 private: 125 private:
101 WebCryptoAlgorithm m_hash; 126 WebCryptoAlgorithm m_hash;
102 unsigned m_lengthBits; 127 unsigned m_lengthBits;
103 }; 128 };
104 129
105 class WebCryptoRsaHashedKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams { 130 class WebCryptoRsaHashedKeyAlgorithmParams : public WebCryptoKeyAlgorithmParams {
106 public: 131 public:
107 WebCryptoRsaHashedKeyAlgorithmParams(unsigned modulusLengthBits, const unsig ned char* publicExponent, unsigned publicExponentSize, const WebCryptoAlgorithm& hash) 132 WebCryptoRsaHashedKeyAlgorithmParams(unsigned modulusLengthBits, const unsig ned char* publicExponent, unsigned publicExponentSize, const WebCryptoAlgorithm& hash)
108 : m_modulusLengthBits(modulusLengthBits) 133 : m_modulusLengthBits(modulusLengthBits)
109 , m_publicExponent(publicExponent, publicExponentSize) 134 , m_publicExponent(publicExponent, publicExponentSize)
(...skipping 14 matching lines...) Expand all
124 const WebCryptoAlgorithm& hash() const 149 const WebCryptoAlgorithm& hash() const
125 { 150 {
126 return m_hash; 151 return m_hash;
127 } 152 }
128 153
129 virtual WebCryptoKeyAlgorithmParamsType type() const 154 virtual WebCryptoKeyAlgorithmParamsType type() const
130 { 155 {
131 return WebCryptoKeyAlgorithmParamsTypeRsaHashed; 156 return WebCryptoKeyAlgorithmParamsTypeRsaHashed;
132 } 157 }
133 158
159 virtual void writeToDictionary(WebCryptoKeyAlgorithmDictionary* dict) const
160 {
161 dict->setAlgorithm("hash", m_hash);
162 dict->setUint("modulusLength", m_modulusLengthBits);
163 dict->setUint8Array("publicExponent", m_publicExponent);
164 }
165
134 private: 166 private:
135 unsigned m_modulusLengthBits; 167 unsigned m_modulusLengthBits;
136 WebVector<unsigned char> m_publicExponent; 168 WebVector<unsigned char> m_publicExponent;
137 WebCryptoAlgorithm m_hash; 169 WebCryptoAlgorithm m_hash;
138 }; 170 };
139 171
140 } // namespace blink 172 } // namespace blink
141 173
142 #endif 174 #endif
OLDNEW
« no previous file with comments | « public/platform/WebCryptoKeyAlgorithm.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698