Chromium Code Reviews| Index: chrome/common/extensions/api/platform_keys.idl |
| diff --git a/chrome/common/extensions/api/platform_keys.idl b/chrome/common/extensions/api/platform_keys.idl |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4c5da42d63696fec5807607bccc73fd788219386 |
| --- /dev/null |
| +++ b/chrome/common/extensions/api/platform_keys.idl |
| @@ -0,0 +1,83 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Use the <code>chrome.platformKeys</code> API to use client certificates |
| +// managed by the platform. |
| +[platforms = ("chromeos")] |
|
not at google - send to devlin
2015/01/14 21:42:35
annotation not necessary
pneubeck (no reviews)
2015/01/15 14:32:06
Done.
|
| +namespace platformKeys { |
| + dictionary Match { |
| + // The DER encoding of a X.509 certificate. |
| + ArrayBuffer certificate; |
| + |
| + // The public |
| + // <a href="http://www.w3.org/TR/WebCryptoAPI/#dfn-CryptoKey">CryptoKey</a> |
| + // for $(ref:certificate) which can only be used with |
| + // <code>chrome.certs.subtleCrypto</code>. |
| + object publicKey; |
| + |
| + // The private |
| + // <a href="http://www.w3.org/TR/WebCryptoAPI/#dfn-CryptoKey">CryptoKey</a> |
| + // for $(ref:certificate) which can only |
| + // be used with <code>chrome.certs.subtleCrypto</code>. Might be null if |
| + // this extension does not have access to it. |
| + object privateKey; |
|
not at google - send to devlin
2015/01/14 21:42:35
make it an object? then
pneubeck (no reviews)
2015/01/15 14:32:06
Done.
|
| + }; |
| + |
| + enum ClientCertificateType { |
| + rsaSign, |
| + dssSign, |
| + ecdsaSign |
| + }; |
| + |
| + // Analogous to TLS1.1's CertificateRequest. |
| + // See http://tools.ietf.org/html/rfc4346#section-7.4.4 . |
| + dictionary ClientCertificateRequest { |
| + // This field is a list of the types of certificates requested, sorted in |
| + // order of the server's preference. |
| + ClientCertificateType[] certificateTypes; |
| + |
| + // List of distinguished names of certificate authorities allowed by the |
| + // server. Each entry must be a DER-encoded X.509 DistinguishedName . |
| + ArrayBuffer[] certificateAuthorities; |
| + }; |
| + |
| + callback SelectCallback = void (Match[] certs); |
| + |
| + interface Functions { |
| + // This function filters from a list of client certificates the ones that |
| + // are known to the platform, match <code>request</code> and for which the |
| + // extension has permission to access the certificate and its private key. |
| + // If <code>interactive</code> is true, the user is presented a dialog where |
| + // he can select from matching certificates and grant the extension access |
| + // to the certificate. |
| + // The selected/filtered client certificates will be passed to |
| + // <code>callback</code>. |
| + // |
| + // |request|: Only certificates that match this request will be returned. |
| + // |clientCerts|: If given, the function operates on that list. Otherwise, |
| + // obtains the list of all certificates from the platform's certificate |
| + // stores that are available to this extensions. |
| + // |interactive|> If true, the filtered list is presented to the user to |
| + // manually select a certificate and thereby granting the extension access |
| + // to the certificate(s) and key(s). Only the selected certificate(s) will |
| + // be returned. |
| + // If is false, the list is reduced to all certificates that the extension |
| + // has been granted access to (automatically or manually). |
| + // |callback|: Will be called with the matching and, if |
| + // <code>interactive</code> is true, selected certificates that this |
| + // extension has access to. |
| + [nocompile] static void selectClientCertificates( |
| + boolean interactive, |
| + ClientCertificateRequest request, |
| + optional ArrayBuffer[] clientCerts, |
|
not at google - send to devlin
2015/01/14 21:42:35
Better if these 3 arguments are reduced to a singl
pneubeck (no reviews)
2015/01/15 14:32:06
Done.
|
| + SelectCallback callback); |
| + |
| + // An implementation of WebCrypto's |
| + // <a href="http://www.w3.org/TR/WebCryptoAPI/#subtlecrypto-interface">SubtleCrypto</a> |
| + // that allows crypto operations on keys of client certificates that are |
| + // available to this extension. |
| + [nocompile] static object subtleCrypto(); |
|
not at google - send to devlin
2015/01/14 21:42:35
What would it look like to use this method?
pneubeck (no reviews)
2015/01/15 09:23:52
actually, this should be a static member, but I th
pneubeck (no reviews)
2015/01/15 14:32:06
Is there an easy way to make it a member and not a
not at google - send to devlin
2015/01/15 21:48:56
It looks to me like you're wanting a global subtle
pneubeck (no reviews)
2015/01/19 08:54:00
Yes, I shouldn't have shortcut in my example thoug
|
| + }; |
| +}; |
| + |