// Copyright 2026 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. dictionary Hash { required DOMString name; }; // For more information about the RSA key generation parameters, please refer // to: https://www.w3.org/TR/WebCryptoAPI/#RsaHashedKeyGenParams-dictionary // For more information about the ECDSA key generation parameters, please refer // to: https://www.w3.org/TR/WebCryptoAPI/#dfn-EcdsaParams // Note: |hash| is not used by generateKey() but is added to completely mirror // WebCrypto in using RsaHashedKeyAlgorithm to be able to wrap all parameters in // one structure. dictionary Algorithm { // Provided for all algorithms. required DOMString name; // Provided in case the algorithm is RSASSA-PKCS1-v1_5. long modulusLength; ArrayBuffer publicExponent; Hash hash; // Provided in case the algorithm is ECDSA. DOMString namedCurve; }; // Internal API for platform keys and certificate management. [platforms = ("chromeos"), implemented_in = "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.h"] interface PlatformKeysInternal { // Internal version of enterprise.platformKeys.getTokens. Returns a list of // token IDs instead of token objects. // |Returns|: Invoked by getTokens. // |PromiseValue|: tokenIds: The list of IDs of the available Tokens. [requiredCallback] static Promise> getTokens(); // Internal version of SubtleCrypto.generateKey, currently supporting only // RSASSA-PKCS1-v1_5 and ECDSA. // |tokenId|: The id of a Token returned by |getTokens|. // |algorithm|: The algorithm parameters as specified by WebCrypto. // |softwareBacked|: Whether the key operations should be executed in // software. // |Returns|: Called back with the Subject Public Key Info of the generated // key. // |PromiseValue|: publicKey: The Subject Public Key Info (see X.509) of the // generated key in DER encoding. [requiredCallback] static Promise generateKey( DOMString tokenId, Algorithm algorithm, boolean softwareBacked); }; partial interface Enterprise { static attribute PlatformKeysInternal platformKeysInternal; }; partial interface Browser { static attribute Enterprise enterprise; };