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

Unified Diff: chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js

Issue 847333004: Move parts from enterprise.platformKeysInternal to platformKeysInternal for reuse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cert_idl
Patch Set: Rebased. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js
diff --git a/chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js b/chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js
index 017a3e26d7f06a1fa036fcfaa7b5194f54085c19..ece243057d53b71572d1ee2aaac21352edb083d6 100644
--- a/chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js
+++ b/chrome/renderer/resources/extensions/enterprise_platform_keys/subtle_crypto.js
@@ -4,14 +4,15 @@
var utils = require('utils');
var internalAPI = require('enterprise.platformKeys.internalAPI');
-var intersect = require('enterprise.platformKeys.utils').intersect;
+var intersect = require('platformKeys.utils').intersect;
+var subtleCryptoModule = require('platformKeys.SubtleCrypto');
+var SubtleCrypto = subtleCryptoModule.SubtleCrypto;
+var SubtleCryptoImpl = subtleCryptoModule.SubtleCryptoImpl;
var KeyPair = require('enterprise.platformKeys.KeyPair').KeyPair;
-var keyModule = require('enterprise.platformKeys.Key');
-var getSpki = keyModule.getSpki;
-var KeyUsage = keyModule.KeyUsage;
+var KeyUsage = require('platformKeys.Key').KeyUsage;
var normalizeAlgorithm =
- requireNative('enterprise_platform_keys_natives').NormalizeAlgorithm;
+ requireNative('platform_keys_natives').NormalizeAlgorithm;
// This error is thrown by the internal and public API's token functions and
// must be rethrown by this custom binding. Keep this in sync with the C++ part
@@ -72,14 +73,18 @@ function equalsStandardPublicExponent(array) {
/**
* Implementation of WebCrypto.SubtleCrypto used in enterprise.platformKeys.
+ * Derived from platformKeys.SubtleCrypto.
* @param {string} tokenId The id of the backing Token.
* @constructor
*/
-var SubtleCryptoImpl = function(tokenId) {
- this.tokenId = tokenId;
+var EnterpriseSubtleCryptoImpl = function(tokenId) {
+ SubtleCryptoImpl.call(this, tokenId);
};
-SubtleCryptoImpl.prototype.generateKey =
+EnterpriseSubtleCryptoImpl.prototype =
+ Object.create(SubtleCryptoImpl.prototype);
+
+EnterpriseSubtleCryptoImpl.prototype.generateKey =
function(algorithm, extractable, keyUsages) {
var subtleCrypto = this;
return new Promise(function(resolve, reject) {
@@ -128,58 +133,11 @@ SubtleCryptoImpl.prototype.generateKey =
});
};
-SubtleCryptoImpl.prototype.sign = function(algorithm, key, dataView) {
- var subtleCrypto = this;
- return new Promise(function(resolve, reject) {
- if (key.type != 'private' || key.usages.indexOf(KeyUsage.sign) == -1)
- throw CreateInvalidAccessError();
-
- var normalizedAlgorithmParameters =
- normalizeAlgorithm(algorithm, 'Sign');
- if (!normalizedAlgorithmParameters) {
- // TODO(pneubeck): It's not clear from the WebCrypto spec which error to
- // throw here.
- throw CreateSyntaxError();
- }
-
- // Create an ArrayBuffer that equals the dataView. Note that dataView.buffer
- // might contain more data than dataView.
- var data = dataView.buffer.slice(dataView.byteOffset,
- dataView.byteOffset + dataView.byteLength);
- internalAPI.sign(subtleCrypto.tokenId,
- getSpki(key),
- key.algorithm.hash.name,
- data,
- function(signature) {
- if (catchInvalidTokenError(reject))
- return;
- if (chrome.runtime.lastError) {
- reject(CreateOperationError());
- return;
- }
- resolve(signature);
- });
- });
-};
-
-SubtleCryptoImpl.prototype.exportKey = function(format, key) {
- return new Promise(function(resolve, reject) {
- if (format == 'pkcs8') {
- // Either key.type is not 'private' or the key is not extractable. In both
- // cases the error is the same.
- throw CreateInvalidAccessError();
- } else if (format == 'spki') {
- if (key.type != 'public')
- throw CreateInvalidAccessError();
- resolve(getSpki(key));
- } else {
- // TODO(pneubeck): It should be possible to export to format 'jwk'.
- throw CreateNotSupportedError();
- }
- });
-};
-
exports.SubtleCrypto =
utils.expose('SubtleCrypto',
- SubtleCryptoImpl,
- {functions:['generateKey', 'sign', 'exportKey']});
+ EnterpriseSubtleCryptoImpl,
+ {
+ superclass: SubtleCrypto,
+ functions: ['generateKey']
+ // ['sign', 'exportKey'] are exposed by the base class
+ });

Powered by Google App Engine
This is Rietveld 408576698