• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2* Copyright (c) 2022 Huawei Device Co., Ltd.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7*     http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15
16import {AsyncCallback} from './basic';
17
18/**
19 * OpenHarmony Universal CertificateManager
20 * @since 9
21 * @syscap SystemCapability.Security.CertificateManager
22 * @permission N/A
23 */
24declare namespace CertificateManager {
25  /**
26   * Get a list of system root certificates.
27   * @since 9
28   * @syscap SystemCapability.Security.CertificateManager
29   * @param context Indicates the context of the calling interface application.
30   * @permission ohos.permission.ACCESS_CERT_MANAGER
31   */
32  function getSystemTrustedCertificateList(callback: AsyncCallback<CMResult>) : void;
33  function getSystemTrustedCertificateList() : Promise<CMResult>;
34
35  /**
36   * Get the detail of system root certificate.
37   * @since 9
38   * @syscap SystemCapability.Security.CertificateManager
39   * @param context Indicates the context of the calling interface application.
40   * @param certUri Indicates the certificate's name.
41   * @permission ohos.permission.ACCESS_CERT_MANAGER
42   */
43  function getSystemTrustedCertificate(certUri: string, callback: AsyncCallback<CMResult>) : void;
44  function getSystemTrustedCertificate(certUri: string) : Promise<CMResult>;
45
46  /**
47   * Set the status of root certificates.
48   * @since 9
49   * @syscap SystemCapability.Security.CertificateManager
50   * @param context Indicates the context of the calling interface application.
51   * @param certUri Indicates the certificate's name.
52   * @param store Indicates the type of certificate.
53   * @param status Indicates the status of certificate to be set.
54   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
55   * @systemapi Hide this for inner system use
56   */
57  function setCertificateStatus(certUri: string, store: number, status: boolean, callback: AsyncCallback<boolean>) : void;
58  function setCertificateStatus(certUri: string, store: number, status: boolean) : Promise<boolean>;
59
60  /**
61   * Install the user root certificate.
62   * @since 9
63   * @syscap SystemCapability.Security.CertificateManager
64   * @param certificate Indicates the certificate file.
65   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
66   * @systemapi Hide this for inner system use
67   */
68  function installUserTrustedCertificate(certificate: CertBlob, callback: AsyncCallback<CMResult>) : void;
69  function installUserTrustedCertificate(certificate: CertBlob,) : Promise<CMResult>;
70
71  /**
72   * Uninstall all user root certificates.
73   * @since 9
74   * @syscap SystemCapability.Security.CertificateManager
75   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
76   * @systemapi Hide this for inner system use
77   */
78  function uninstallAllUserTrustedCertificate(callback: AsyncCallback<boolean>) : void;
79  function uninstallAllUserTrustedCertificate() : Promise<boolean>;
80
81  /**
82   * Uninstall the specified user root certificate.
83   * @since 9
84   * @syscap SystemCapability.Security.CertificateManager
85   * @param certUri Indicates the certificate's name.
86   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
87   * @systemapi Hide this for inner system use
88   */
89  function uninstallUserTrustedCertificate(certUri: string, callback: AsyncCallback<boolean>) : void;
90  function uninstallUserTrustedCertificate(certUri: string) : Promise<boolean>;
91
92  /**
93   * Get a list of user root certificates.
94   * @since 9
95   * @syscap SystemCapability.Security.CertificateManager
96   * @permission ohos.permission.ACCESS_CERT_MANAGER
97   */
98  function getUserTrustedCertificateList(callback: AsyncCallback<CMResult>) : void;
99  function getUserTrustedCertificateList() : Promise<CMResult>;
100
101  /**
102   * Get the detail of user root certificate.
103   * @since 9
104   * @syscap SystemCapability.Security.CertificateManager
105   * @param certUri Indicates the certificate's name.
106   * @permission ohos.permission.ACCESS_CERT_MANAGER
107   */
108  function getUserTrustedCertificate(certUri: string, callback: AsyncCallback<CMResult>) : void;
109  function getUserTrustedCertificate(certUri: string) : Promise<CMResult>;
110
111  /**
112   * Install normal application certificate.
113   * @since 9
114   * @syscap SystemCapability.Security.CertificateManager
115   * @param keystore Indicates the keystore file with key pair and certificate.
116   * @param keystorePwd Indicates the password of keystore file.
117   * @param certAlias Indicates the certificate name inputted by the user.
118   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
119   * @systemapi Hide this for inner system use
120   */
121  function installAppCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string, callback: AsyncCallback<CMResult>) : void;
122  function installAppCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string) : Promise<CMResult>;
123
124  /**
125   * Install private application certificate.
126   * @since 9
127   * @syscap SystemCapability.Security.CertificateManager
128   * @param keystore Indicates the keystore file with key pair and certificate.
129   * @param keystorePwd Indicates the password of keystore file.
130   * @param certAlias Indicates the certificate name inputted by the user.
131   * @permission ohos.permission.ACCESS_CERT_MANAGER
132   */
133  function installPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string, callback: AsyncCallback<CMResult>) : void;
134  function installPrivateCertificate(keystore: Uint8Array, keystorePwd: string, certAlias: string) : Promise<CMResult>;
135
136  /**
137   * Generate private application certificate locally.
138   * @since 9
139   * @syscap SystemCapability.Security.CertificateManager
140   * @param keyAlias Indicates the key alias inputted by the user.
141   * @param keyProperties Indicates the properties of keys in keystore file.
142   * @permission ohos.permission.ACCESS_CERT_MANAGER
143   */
144  function generatePrivateCertificate(keyAlias: string, keyProperties: CMKeyProperties, callback: AsyncCallback<CMResult>) : void;
145  function generatePrivateCertificate(keyAlias: string, keyProperties: CMKeyProperties) : Promise<CMResult>;
146
147  /**
148   * Update private application certificate.
149   * @since 9
150   * @syscap SystemCapability.Security.CertificateManager
151   * @param type Indicates the type of the certificate used.
152   * @param keyUri Indicates key's name.
153   * @param certificate Indicates the certificate file.
154   * @permission ohos.permission.ACCESS_CERT_MANAGER
155   */
156  function updatePrivateCertificate(type: string, keyUri: string, certificate: CertBlob, callback: AsyncCallback<boolean>) : void;
157  function updatePrivateCertificate(type: string, keyUri: string, certificate: CertBlob) : Promise<boolean>;
158
159  /**
160   * Uninstall all application certificate.
161   * @since 9
162   * @syscap SystemCapability.Security.CertificateManager
163   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
164   * @systemapi Hide this for inner system use
165   */
166  function uninstallAllAppCertificate(callback: AsyncCallback<boolean>) : void;
167  function uninstallAllAppCertificate() : Promise<boolean>;
168
169  /**
170   * Uninstall the specified normal application certificate.
171   * @since 9
172   * @syscap SystemCapability.Security.CertificateManager
173   * @param keyUri Indicates key's name.
174   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
175   * @systemapi Hide this for inner system use
176   */
177  function uninstallAppCertificate(keyUri: string, callback: AsyncCallback<boolean>) : void;
178  function uninstallAppCertificate(keyUri: string) : Promise<boolean>;
179
180  /**
181   * Uninstall the specified normal application certificate.
182   * @since 9
183   * @syscap SystemCapability.Security.CertificateManager
184   * @param keyUri Indicates key's name.
185   * @permission ohos.permission.ACCESS_CERT_MANAGER
186   */
187  function uninstallPrivateCertificate(keyUri: string, callback: AsyncCallback<boolean>) : void;
188  function uninstallPrivateCertificate(keyUri: string) : Promise<boolean>;
189
190  /**
191   * Get a list of normal application certificates.
192   * @since 9
193   * @syscap SystemCapability.Security.CertificateManager
194   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
195   * @systemapi Hide this for inner system use
196   */
197  function getAppCertificateList(callback: AsyncCallback<CMResult>) : void;
198  function getAppCertificateList() : Promise<CMResult>;
199
200  /**
201   * Get a list of private application certificates.
202   * @since 9
203   * @syscap SystemCapability.Security.CertificateManager
204   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
205   * @systemapi Hide this for inner system use
206   */
207  function getPrivateCertificateList(callback: AsyncCallback<CMResult>) : void;
208  function getPrivateCertificateList() : Promise<CMResult>;
209
210  /**
211   * Get the detail of normal application certificate.
212   * @since 9
213   * @syscap SystemCapability.Security.CertificateManager
214   * @param keyUri Indicates key's name.
215   * @permission ohos.permission.ACCESS_CERT_MANAGER
216   */
217  function getAppCertificate(keyUri: string, callback: AsyncCallback<CMResult>) : void;
218  function getAppCertificate(keyUri: string, ) : Promise<CMResult>;
219
220  /**
221   * Get the detail of private application certificate.
222   * @since 9
223   * @syscap SystemCapability.Security.CertificateManager
224   * @param keyUri Indicates key's name.
225   * @permission ohos.permission.ACCESS_CERT_MANAGER
226   */
227  function getPrivateCertificate(keyUri: string, callback: AsyncCallback<CMResult>) : void;
228  function getPrivateCertificate(keyUri: string) : Promise<CMResult>;
229
230  /**
231   * Authorize the specified application certificate for the specified application.
232   * @since 9
233   * @syscap SystemCapability.Security.CertificateManager
234   * @param keyUri Indicates key's name.
235   * @param clientAppUid Indicates the uid of the authorized application.
236   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
237   * @systemapi Hide this for inner system use
238   */
239  function grantAppCertificate(keyUri: string, clientAppUid: string, callback: AsyncCallback<CMResult>) : void;
240  function grantAppCertificate(keyUri: string, clientAppUid: string) : Promise<CMResult>;
241
242  /**
243   * Whether the current application is authorized by the specified application certificate.
244   * @since 9
245   * @syscap SystemCapability.Security.CertificateManager
246   * @param keyUri Indicates key's name.
247   * @permission ohos.permission.ACCESS_CERT_MANAGER
248   */
249  function isAuthorizedApp(keyUri: string, callback: AsyncCallback<boolean>) : void;
250  function isAuthorizedApp(keyUri: string) : Promise<boolean>;
251
252  /**
253   * Get the list of applications authorized by the specified certificate.
254   * @since 9
255   * @syscap SystemCapability.Security.CertificateManager
256   * @param keyUri Indicates key's name.
257   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
258   * @systemapi Hide this for inner system use
259   */
260  function getAuthorizedAppList(keyUri: string, callback: AsyncCallback<CMResult>) : void;
261  function getAuthorizedAppList(keyUri: string) : Promise<CMResult>;
262
263  /**
264   * Deauthorize the specified application from the specified application certificate.
265   * @since 9
266   * @syscap SystemCapability.Security.CertificateManager
267   * @param keyUri Indicates key's name.
268   * @param clientAppUid Indicates the uid of the deauthorized application.
269   * @permission ohos.permission.ACCESS_CERT_MANAGER_INTERNAL
270   * @systemapi Hide this for inner system use
271   */
272  function removeGrantedAppCertificate(keyUri: string, clientAppUid: string, callback: AsyncCallback<boolean>) : void;
273  function removeGrantedAppCertificate(keyUri: string, clientAppUid: string) : Promise<boolean>;
274
275  /**
276   * Init operation for signing and verifying etc.
277   * @since 9
278   * @syscap SystemCapability.Security.CertificateManager
279   * @param authUri Indicates the authorization relationship between application and application certificate.
280   * @param spec Indicates the properties of the signature and verification..
281   * @return The handle of the init Operation.
282   * @permission ohos.permission.ACCESS_CERT_MANAGER
283   */
284  function init(authUri: string, spec: CMSignatureSpec, callback: AsyncCallback<CMHandle>) : void;
285  function init(authUri: string, spec: CMSignatureSpec) : Promise<CMHandle>;
286
287  /**
288   * Update operation for signing and verifying etc.
289   * @since 9
290   * @syscap SystemCapability.Security.CertificateManager
291   * @param handle Indicates the handle of the init operation.
292   * @param data Indicates the input value.
293   * @param token Indicates the value of token.
294   * @permission ohos.permission.ACCESS_CERT_MANAGER
295   */
296  function update(handle: Uint8Array, data: Uint8Array, callback: AsyncCallback<boolean>) : void;
297  function update(handle: Uint8Array, data: Uint8Array) : Promise<boolean>;
298
299  /**
300   * Finish operation for signing and verifying etc.
301   * @since 9
302   * @syscap SystemCapability.Security.CertificateManager
303   * @param handle Indicates the handle of the init operation.
304   * @param signature Indicates the sign data.
305   * @permission ohos.permission.ACCESS_CERT_MANAGER
306   */
307  function finish(handle: Uint8Array, callback: AsyncCallback<CMResult>) : void;
308  function finish(handle: Uint8Array, signature: Uint8Array, callback: AsyncCallback<CMResult>) : void;
309  function finish(handle: Uint8Array, signature?: Uint8Array) : Promise<CMResult>;
310
311  /**
312   * Abort operation for signing and verifying etc.
313   * @since 9
314   * @syscap SystemCapability.Security.CertificateManager
315   * @param handle Indicates the handle of the init operation.
316   * @permission ohos.permission.ACCESS_CERT_MANAGER
317   */
318  function abort(handle: Uint8Array, callback: AsyncCallback<boolean>) : void;
319  function abort(handle: Uint8Array) : Promise<boolean>;
320
321  export interface CertInfo {
322    uri: string;
323    certAlias: string;
324    status: boolean;
325    issuerName: string;
326    subjectName: string;
327    serial: string;
328    notBefore: string;
329    notAfter: string;
330    fingerprintSha256: string;
331    cert: Uint8Array;
332  }
333
334  export interface CertAbstract {
335    uri: string;
336    certAlias: string;
337    status: boolean;
338    subjectName: string;
339  }
340
341  export interface Credential {
342    type: string;
343    alias: string;
344    keyUri: string;
345    certNum: number;
346    keyNum: number;
347    credData:Uint8Array;
348  }
349
350  export interface CredentialAbstract {
351    type: string;
352    alias: string;
353    keyUri: string;
354  }
355
356  export interface CertBlob {
357    inData: Uint8Array;
358    alias: string;
359  }
360
361  export interface CMResult {
362    certList?: Array<CertAbstract>;
363    certInfo?: CertInfo;
364    credentialList?: Array<CredentialAbstract>;
365    credential?: Credential;
366    appUidList?: Array<string>;
367    uri?: string;
368    outData?: Uint8Array;
369    isAuth?: boolean;
370  }
371
372  export interface CMKeyProperties {
373    type: string;
374    alg: string;
375    size: number;
376    padding: string;
377    purpose: string;
378    digest: string;
379    authType: string;
380    authTimeout: string;
381  }
382
383  export enum CmKeyPurpose {
384    CM_KEY_PURPOSE_SIGN = 4,
385    CM_KEY_PURPOSE_VERIFY = 8,
386  }
387
388  export interface CMSignatureSpec {
389    purpose: CmKeyPurpose;
390  }
391
392  export interface CMHandle {
393    handle: Uint8Array;
394  }
395
396  export enum CMErrorCode {
397    CM_SUCCESS = 0,
398    CM_ERROR_INNER_ERROR = 17500001,
399    CM_ERROR_NO_PERMISSION = 17500002,
400    CM_ERROR_NO_FOUND = 17500003,
401    CM_ERROR_X509_FORMATE = 17500004,
402  }
403}
404
405export default CertificateManager;
406