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 3// found in the LICENSE file. 4 5var utils = require('utils'); 6var intersect = require('enterprise.platformKeys.utils').intersect; 7var keyModule = require('enterprise.platformKeys.Key'); 8var Key = keyModule.Key; 9var KeyType = keyModule.KeyType; 10var KeyUsage = keyModule.KeyUsage; 11 12/** 13 * Implementation of WebCrypto.KeyPair used in enterprise.platformKeys. 14 * @param {ArrayBuffer} publicKeySpki The Subject Public Key Info in DER 15 * encoding. 16 * @param {KeyAlgorithm} algorithm The algorithm identifier. 17 * @param {KeyUsage[]} usages The allowed key usages. 18 * @constructor 19 */ 20var KeyPairImpl = function(publicKeySpki, algorithm, usages) { 21 this.publicKey = new Key(KeyType.public, 22 publicKeySpki, 23 algorithm, 24 intersect([KeyUsage.verify], usages), 25 true /* extractable */); 26 this.privateKey = new Key(KeyType.private, 27 publicKeySpki, 28 algorithm, 29 intersect([KeyUsage.sign], usages), 30 false /* not extractable */); 31}; 32 33exports.KeyPair = utils.expose('KeyPair', 34 KeyPairImpl, 35 {readonly:['publicKey', 'privateKey']}); 36