1 // Copyright 2015 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.
5 // Internal API for to implement the platformKeys and enterprise.platformKeys
7 [implemented_in
= "chrome/browser/extensions/api/platform_keys/platform_keys_api.h"]
8 namespace platformKeysInternal
{
9 callback SelectCallback
= void (platformKeys.Match
[] certs
);
11 // Invoked by <code>sign</code>.
12 // |signature| The signature, a octet string.
13 callback SignCallback
= void(ArrayBuffer signature
);
15 // Called back by <code>getPublicKey</code>.
16 // |publicKey| The Subject Public Key Info (see X.509) of the requested
18 // |algorithm| A partial WebCrypto KeyAlgorithm containing all information
19 // that is available from the Subject Public Key Info. It does not contain
20 // signature/hash parameters.
21 callback GetPublicKeyCallback
= void(ArrayBuffer publicKey
, object algorithm
);
24 // See documentation in platformKeys.
25 static
void selectClientCertificates
(
26 platformKeys.SelectDetails details
,
27 SelectCallback
callback);
29 // Internal version of platformKeys.subtleCrypto.sign and
30 // enterprise.platformKeys.Token.subtleCrypto.sign.
31 // |tokenId| The id of a Token returned by |getTokens|.
32 // |publicKey| The Subject Public Key Info of a key previously generated by
33 // |generateKey| in DER encoding.
34 // |hashAlgorithmName| The recognized algorithm name of the hash algorithm,
35 // as specified by WebCrypto, that will be used to digest |data|
36 // before signing. Currently supported are: SHA-{1,256,384,512}.
37 // If instead the algorithm name "none" is provided, no hashing will be
38 // applied, the data is PKCS#1 v1.5 padded but not hashed.
39 // TODO(pneubeck): use an enum once supported:
40 // http://www.crbug.com/385539 .
41 // |data| The data to sign.
42 // |callback| Called back with the signature of |data|.
43 // TODO: Instead of ArrayBuffer should be (ArrayBuffer or ArrayBufferView),
44 // or at least (ArrayBuffer or Uint8Array).
45 static
void sign
(DOMString tokenId
,
46 ArrayBuffer publicKey
,
47 DOMString hashAlgorithmName
,
49 SignCallback
callback);
51 // Checks whether <code>certificate</code> certifies a key that allows usage
52 // of the WebCrypto algorithm <code>algorithmName</code>. If so, calls back
53 // <code>callback</code> with the key info and a WebCrypto
54 // <code>KeyAlgorithm</code> dictionary describing the key's algorithm. The
55 // <code>name</code> property will equal <code>algorithmName</code>.
56 // Otherwise, calls back with an error.
57 static
void getPublicKey
(ArrayBuffer certificate
,
58 DOMString algorithmName
,
59 GetPublicKeyCallback
callback);