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
5// Custom binding for the enterprise.platformKeys API.
6
7// The platformKeys API consists of two major parts:
8//   - the certificate management.
9//   - the key generation and crypto operations and
10// The former is implemented without custom binding as static functions.
11// The latter is exposed by implementing WebCrypto's SubtleCrypto interface.
12// The internal API provides the key and crypto operations through static
13// functions expecting token IDs and this custom binding adds the SubtleCrypto
14// wrapper.
15// The Token object holds the token id and the SubtleCrypto member.
16
17var binding = require('binding').Binding.create('enterprise.platformKeys');
18var Token = require('enterprise.platformKeys.Token').Token;
19var internalAPI = require('enterprise.platformKeys.internalAPI');
20
21binding.registerCustomHook(function(api) {
22  var apiFunctions = api.apiFunctions;
23
24  var ret = apiFunctions.setHandleRequest('getTokens', function(callback) {
25    internalAPI.getTokens(function(tokenIds) {
26      callback($Array.map(tokenIds,
27                          function(tokenId) { return new Token(tokenId); }));
28    });
29  });
30});
31
32exports.binding = binding.generate();
33