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

Side by Side Diff: chrome/browser/resources/cryptotoken/util.js

Issue 917093003: Shorten Closure template notation from Array.<*> to Array<*>. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove cvox Created 5 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** @fileoverview Various string utility functions */ 5 /** @fileoverview Various string utility functions */
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * Converts a string to an array of bytes. 9 * Converts a string to an array of bytes.
10 * @param {string} s The string to convert. 10 * @param {string} s The string to convert.
11 * @param {(Array|Uint8Array)=} bytes The Array-like object into which to store 11 * @param {(Array|Uint8Array)=} bytes The Array-like object into which to store
12 * the bytes. A new Array will be created if not provided. 12 * the bytes. A new Array will be created if not provided.
13 * @return {(Array|Uint8Array)} An array of bytes representing the string. 13 * @return {(Array|Uint8Array)} An array of bytes representing the string.
14 */ 14 */
15 function UTIL_StringToBytes(s, bytes) { 15 function UTIL_StringToBytes(s, bytes) {
16 bytes = bytes || new Array(s.length); 16 bytes = bytes || new Array(s.length);
17 for (var i = 0; i < s.length; ++i) 17 for (var i = 0; i < s.length; ++i)
18 bytes[i] = s.charCodeAt(i); 18 bytes[i] = s.charCodeAt(i);
19 return bytes; 19 return bytes;
20 } 20 }
21 21
22 /** 22 /**
23 * Converts a byte array to a string. 23 * Converts a byte array to a string.
24 * @param {(Uint8Array|Array.<number>)} b input byte array. 24 * @param {(Uint8Array|Array<number>)} b input byte array.
25 * @return {string} result. 25 * @return {string} result.
26 */ 26 */
27 function UTIL_BytesToString(b) { 27 function UTIL_BytesToString(b) {
28 return String.fromCharCode.apply(null, b); 28 return String.fromCharCode.apply(null, b);
29 } 29 }
30 30
31 /** 31 /**
32 * Converts a byte array to a hex string. 32 * Converts a byte array to a hex string.
33 * @param {(Uint8Array|Array.<number>)} b input byte array. 33 * @param {(Uint8Array|Array<number>)} b input byte array.
34 * @return {string} result. 34 * @return {string} result.
35 */ 35 */
36 function UTIL_BytesToHex(b) { 36 function UTIL_BytesToHex(b) {
37 if (!b) return '(null)'; 37 if (!b) return '(null)';
38 var hexchars = '0123456789ABCDEF'; 38 var hexchars = '0123456789ABCDEF';
39 var hexrep = new Array(b.length * 2); 39 var hexrep = new Array(b.length * 2);
40 40
41 for (var i = 0; i < b.length; ++i) { 41 for (var i = 0; i < b.length; ++i) {
42 hexrep[i * 2 + 0] = hexchars.charAt((b[i] >> 4) & 15); 42 hexrep[i * 2 + 0] = hexchars.charAt((b[i] >> 4) & 15);
43 hexrep[i * 2 + 1] = hexchars.charAt(b[i] & 15); 43 hexrep[i * 2 + 1] = hexchars.charAt(b[i] & 15);
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 } 158 }
159 159
160 // Type tags used for ASN.1 encoding of ECDSA signatures 160 // Type tags used for ASN.1 encoding of ECDSA signatures
161 /** @const */ 161 /** @const */
162 var UTIL_ASN_INT = 0x02; 162 var UTIL_ASN_INT = 0x02;
163 /** @const */ 163 /** @const */
164 var UTIL_ASN_SEQUENCE = 0x30; 164 var UTIL_ASN_SEQUENCE = 0x30;
165 165
166 /** 166 /**
167 * Parse SEQ(INT, INT) from ASN1 byte array. 167 * Parse SEQ(INT, INT) from ASN1 byte array.
168 * @param {(Uint8Array|Array.<number>)} a input to parse from. 168 * @param {(Uint8Array|Array<number>)} a input to parse from.
169 * @return {{'r': !Array.<number>, 's': !Array.<number>}|null} 169 * @return {{'r': !Array<number>, 's': !Array<number>}|null}
170 */ 170 */
171 function UTIL_Asn1SignatureToJson(a) { 171 function UTIL_Asn1SignatureToJson(a) {
172 if (a.length < 6) return null; // Too small to be valid 172 if (a.length < 6) return null; // Too small to be valid
173 if (a[0] != UTIL_ASN_SEQUENCE) return null; 173 if (a[0] != UTIL_ASN_SEQUENCE) return null;
174 var l = a[1] & 255; 174 var l = a[1] & 255;
175 if (l & 0x80) return null; // SEQ.size too large 175 if (l & 0x80) return null; // SEQ.size too large
176 if (a.length != 2 + l) return null; // SEQ size does not match input 176 if (a.length != 2 + l) return null; // SEQ size does not match input
177 177
178 function parseInt(off) { 178 function parseInt(off) {
179 if (a[off] != UTIL_ASN_INT) return null; 179 if (a[off] != UTIL_ASN_INT) return null;
180 var l = a[off + 1] & 255; 180 var l = a[off + 1] & 255;
181 if (l & 0x80) return null; // INT.size too large 181 if (l & 0x80) return null; // INT.size too large
182 if (off + 2 + l > a.length) return null; // Out of bounds 182 if (off + 2 + l > a.length) return null; // Out of bounds
183 return a.slice(off + 2, off + 2 + l); 183 return a.slice(off + 2, off + 2 + l);
184 } 184 }
185 185
186 var r = parseInt(2); 186 var r = parseInt(2);
187 if (!r) return null; 187 if (!r) return null;
188 188
189 var s = parseInt(2 + 2 + r.length); 189 var s = parseInt(2 + 2 + r.length);
190 if (!s) return null; 190 if (!s) return null;
191 191
192 return {'r': r, 's': s}; 192 return {'r': r, 's': s};
193 } 193 }
194 194
195 /** 195 /**
196 * Encode a JSON signature {r,s} as an ASN1 SEQ(INT, INT). May modify sig 196 * Encode a JSON signature {r,s} as an ASN1 SEQ(INT, INT). May modify sig
197 * @param {{'r': (!Array.<number>|undefined), 's': !Array.<number>}} sig 197 * @param {{'r': (!Array<number>|undefined), 's': !Array<number>}} sig
198 * @return {!Uint8Array} 198 * @return {!Uint8Array}
199 */ 199 */
200 function UTIL_JsonSignatureToAsn1(sig) { 200 function UTIL_JsonSignatureToAsn1(sig) {
201 var rbytes = sig.r; 201 var rbytes = sig.r;
202 var sbytes = sig.s; 202 var sbytes = sig.s;
203 203
204 // ASN.1 integers are arbitrary length msb first and signed. 204 // ASN.1 integers are arbitrary length msb first and signed.
205 // sig.r and sig.s are 256 bits msb first but _unsigned_, so we must 205 // sig.r and sig.s are 256 bits msb first but _unsigned_, so we must
206 // prepend a zero byte in case their high bit is set. 206 // prepend a zero byte in case their high bit is set.
207 if (rbytes[0] & 0x80) 207 if (rbytes[0] & 0x80)
(...skipping 30 matching lines...) Expand all
238 var UTIL_max_events = 500; 238 var UTIL_max_events = 500;
239 239
240 function UTIL_fmt(s) { 240 function UTIL_fmt(s) {
241 var line = UTIL_time() + ' ' + s; 241 var line = UTIL_time() + ' ' + s;
242 if (UTIL_events.push(line) > UTIL_max_events) { 242 if (UTIL_events.push(line) > UTIL_max_events) {
243 // Drop from head. 243 // Drop from head.
244 UTIL_events.splice(0, UTIL_events.length - UTIL_max_events); 244 UTIL_events.splice(0, UTIL_events.length - UTIL_max_events);
245 } 245 }
246 return line; 246 return line;
247 } 247 }
OLDNEW
« no previous file with comments | « chrome/browser/resources/cryptotoken/usbsignhandler.js ('k') | chrome/browser/resources/cryptotoken/webrequest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698