1# 指定用户身份操作(仅对系统应用开放)
2
3多用户并发进行密钥操作时,为了实现密钥数据隔离和访问控制,HUKS提供了额外的可以指定用户进行密钥操作的接口。
4>**说明:**
5> 轻量级设备不支持指定用户身份操作功能。
6
7## 约束与限制
8
9- 调用方的user id必须在0到99之间,包含0和99。
10- 这部分接口是原有能力的增强,仅面向系统应用开放。
11
12## 接口说明
13
14这部分增强接口,在现有的功能接口的基础上,增加支持参数`userId`用于指定用户ID。
15
16指定用户的接口额外支持以下功能和使用条件:
17
181. 使用方可以同时在options参数中传入[HUKS_TAG_AUTH_STORAGE_LEVEL](../../reference/apis-universal-keystore-kit/_huks_type_api.md#oh_huks_authstoragelevel)选项,以指定存储在指定用户的DE区、CE区或ECE区。
192. 使用方在options参数中不额外传入HUKS_TAG_AUTH_STORAGE_LEVEL选项时,该接口默认行为为:使用指定userId对应CE存储区的密钥。即不传入HUKS_TAG_AUTH_STORAGE_LEVEL参数,等同于传入值为[HUKS_AUTH_STORAGE_LEVEL_CE](../../reference/apis-universal-keystore-kit/_huks_type_api.md#oh_huks_authstoragelevel)的HUKS_TAG_AUTH_STORAGE_LEVEL参数。
20
21除此之外指定用户的接口的用法和支持的算法规格,与不指定用户的对应接口一致。
22
23| 指定用户的接口 | 说明 | 不指定用户的接口示例参考 |
24| -------- | -------- | ----------|
25| [generateKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksgeneratekeyitemasuser)              |   生成密钥。           |  [generateKeyItem](huks-key-generation-arkts.md)             |
26| [deleteKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksdeletekeyitemasuser)                  |   删除密钥。           |  [deleteKeyItem](huks-delete-key-arkts.md)               |
27| [importKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksimportkeyitemasuser)                  |   明文导入密钥。      |  [importKeyItem](huks-import-key-in-plaintext-arkts.md)                |
28| [importWrappedKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksimportwrappedkeyitemasuser)    |  加密导入密钥。        |  [importWrappedKeyItem](huks-import-wrapped-key-arkts.md)             |
29| [exportKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksexportkeyitemasuser)                  |   导出密钥。        |  [exportKeyItem](huks-export-key-arkts.md)                |
30| [getKeyItemPropertiesAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksgetkeyitempropertiesasuser)    |  获取密钥属性。     |  [getKeyItemProperties](huks-obtain-key-properties-arkts.md)             |
31| [hasKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#hukshaskeyitemasuser)                        |  查询密钥是否存在。    |  [hasKeyItem](huks-check-key-arkts.md)               |
32| [initSessionAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksinitsessionasuser)                      |  初始化密钥会话。       |  initSession   [加密解密](huks-encryption-decryption-arkts.md) [签名验签](huks-signing-signature-verification-arkts.md) [密钥协商](huks-key-agreement-arkts.md) [密钥派生](huks-key-derivation-arkts.md)           |
33| [attestKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksattestkeyitemasuser)                  |  非匿名密钥证明。    |  [attestKeyItem](huks-key-attestation-arkts.md)                |
34| [anonAttestKeyItemAsUser](../../reference/apis-universal-keystore-kit/js-apis-huks-sys.md#huksanonattestkeyitemasuser)          | 匿名密钥证明。     |  [anonAttestKeyItem](huks-key-anon-attestation-arkts.md)                |
35