1e41f4b71Sopenharmony_ci# Basic Concepts of HUKS 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciFamiliarity with the following concepts is helpful because they are used throughout your development process. 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## TEE 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciTrusted Execution Environment (TEE) is a secure area of a main processor of a smartphone, tablet, or a mobile device. Any date in the TEE cannot be read or tampered with by any code outside it. The TEE provides a secure execution environment for trusted applications (TAs) to ensure end-to-end security by features, such as isolated execution, integrity of applications, confidentiality of their assets, and data access permissions. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci## Key Material Format 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ciHUKS defines a set of key material formats for key pairs, public keys, and private keys of different cryptographic algorithms. The key material formats are used when a key is imported or exported. 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci### Key Pair Material Format 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciKey pair material = Key pair material header + Key pair material content 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ciFor example, an application needs an RSA key in Uint8Array format, the variables are assigned with values based on the structure of the RSA key pair material in the memory. 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ciThe following figure illustrates the structure of the RSA key material. For details about the key material formats of other algorithms, see the tables below. 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ciThe key algorithm is a value of [HuksKeyAlg](../../reference/apis-universal-keystore-kit/js-apis-huks.md#hukskeyalg). 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci``` 30e41f4b71Sopenharmony_cilet rsa2048KeyPairMaterial = new Uint8Array([ 31e41f4b71Sopenharmony_ci 0x01, 0x00, 0x00, 0x00, // Key algorithm: huks.HuksKeyAlg.HUKS_ALG_RSA = 1 32e41f4b71Sopenharmony_ci 0x00, 0x08, 0x00, 0x00, // Key size (bit): 2048 33e41f4b71Sopenharmony_ci 0x00, 0x01, 0x00, 0x00, // Length of modulus n (byte): 256 34e41f4b71Sopenharmony_ci 0x03, 0x00, 0x00, 0x00, // Length of the public key exponent e (byte): 3 35e41f4b71Sopenharmony_ci 0x00, 0x01, 0x00, 0x00, // Length of the private key exponent d (byte): 256 36e41f4b71Sopenharmony_ci // Modulus n 37e41f4b71Sopenharmony_ci 0xc5, 0x35, 0x62, 0x48, 0xc4, 0x92, 0x87, 0x73, 0x0d, 0x42, 0x96, 0xfc, 0x7b, 0x11, 0x05, 0x06, 38e41f4b71Sopenharmony_ci 0x0f, 0x8d, 0x66, 0xc1, 0x0e, 0xad, 0x37, 0x44, 0x92, 0x95, 0x2f, 0x6a, 0x55, 0xba, 0xec, 0x1d, 39e41f4b71Sopenharmony_ci 0x54, 0x62, 0x0a, 0x4b, 0xd3, 0xc7, 0x05, 0xe4, 0x07, 0x40, 0xd9, 0xb7, 0xc2, 0x12, 0xcb, 0x9a, 40e41f4b71Sopenharmony_ci 0x90, 0xad, 0xe3, 0x24, 0xe8, 0x5e, 0xa6, 0xf8, 0xd0, 0x6e, 0xbc, 0xd1, 0x69, 0x7f, 0x6b, 0xe4, 41e41f4b71Sopenharmony_ci 0x2b, 0x4e, 0x1a, 0x65, 0xbb, 0x73, 0x88, 0x6b, 0x7c, 0xaf, 0x7e, 0xd0, 0x47, 0x26, 0xeb, 0xa5, 42e41f4b71Sopenharmony_ci 0xbe, 0xd6, 0xe8, 0xee, 0x9c, 0xa5, 0x66, 0xa5, 0xc9, 0xd3, 0x25, 0x13, 0xc4, 0x0e, 0x6c, 0xab, 43e41f4b71Sopenharmony_ci 0x50, 0xb6, 0x50, 0xc9, 0xce, 0x8f, 0x0a, 0x0b, 0xc6, 0x28, 0x69, 0xe9, 0x83, 0x69, 0xde, 0x42, 44e41f4b71Sopenharmony_ci 0x56, 0x79, 0x7f, 0xde, 0x86, 0x24, 0xca, 0xfc, 0xaa, 0xc0, 0xf3, 0xf3, 0x7f, 0x92, 0x8e, 0x8a, 45e41f4b71Sopenharmony_ci 0x12, 0x52, 0xfe, 0x50, 0xb1, 0x5e, 0x8c, 0x01, 0xce, 0xfc, 0x7e, 0xf2, 0x4f, 0x5f, 0x03, 0xfe, 46e41f4b71Sopenharmony_ci 0xa7, 0xcd, 0xa1, 0xfc, 0x94, 0x52, 0x00, 0x8b, 0x9b, 0x7f, 0x09, 0xab, 0xa8, 0xa4, 0xf5, 0xb4, 47e41f4b71Sopenharmony_ci 0xa5, 0xaa, 0xfc, 0x72, 0xeb, 0x17, 0x40, 0xa9, 0xee, 0xbe, 0x8f, 0xc2, 0xd1, 0x80, 0xc2, 0x0d, 48e41f4b71Sopenharmony_ci 0x44, 0xa9, 0x59, 0x44, 0x59, 0x81, 0x3b, 0x5d, 0x4a, 0xde, 0xfb, 0xae, 0x24, 0xfc, 0xa3, 0xd9, 49e41f4b71Sopenharmony_ci 0xbc, 0x57, 0x55, 0xc2, 0x26, 0xbc, 0x19, 0xa7, 0x9a, 0xc5, 0x59, 0xa3, 0xee, 0x5a, 0xef, 0x41, 50e41f4b71Sopenharmony_ci 0x80, 0x7d, 0xf8, 0x5e, 0xc1, 0x1d, 0x32, 0x38, 0x41, 0x5b, 0xb6, 0x92, 0xb8, 0xb7, 0x03, 0x0d, 51e41f4b71Sopenharmony_ci 0x3e, 0x59, 0x0f, 0x1c, 0xb3, 0xe1, 0x2a, 0x95, 0x1a, 0x3b, 0x50, 0x4f, 0xc4, 0x1d, 0xcf, 0x73, 52e41f4b71Sopenharmony_ci 0x7c, 0x14, 0xca, 0xe3, 0x0b, 0xa7, 0xc7, 0x1a, 0x41, 0x4a, 0xee, 0xbe, 0x1f, 0x43, 0xdd, 0xf9, 53e41f4b71Sopenharmony_ci // Public key exponent e 54e41f4b71Sopenharmony_ci 0x01, 0x00, 0x01, 55e41f4b71Sopenharmony_ci // Private key exponent d 56e41f4b71Sopenharmony_ci 0x88, 0x4b, 0x82, 0xe7, 0xe3, 0xe3, 0x99, 0x75, 0x6c, 0x9e, 0xaf, 0x17, 0x44, 0x3e, 0xd9, 0x07, 57e41f4b71Sopenharmony_ci 0xfd, 0x4b, 0xae, 0xce, 0x92, 0xc4, 0x28, 0x44, 0x5e, 0x42, 0x79, 0x08, 0xb6, 0xc3, 0x7f, 0x58, 58e41f4b71Sopenharmony_ci 0x2d, 0xef, 0xac, 0x4a, 0x07, 0xcd, 0xaf, 0x46, 0x8f, 0xb4, 0xc4, 0x43, 0xf9, 0xff, 0x5f, 0x74, 59e41f4b71Sopenharmony_ci 0x2d, 0xb5, 0xe0, 0x1c, 0xab, 0xf4, 0x6e, 0xd5, 0xdb, 0xc8, 0x0c, 0xfb, 0x76, 0x3c, 0x38, 0x66, 60e41f4b71Sopenharmony_ci 0xf3, 0x7f, 0x01, 0x43, 0x7a, 0x30, 0x39, 0x02, 0x80, 0xa4, 0x11, 0xb3, 0x04, 0xd9, 0xe3, 0x57, 61e41f4b71Sopenharmony_ci 0x23, 0xf4, 0x07, 0xfc, 0x91, 0x8a, 0xc6, 0xcc, 0xa2, 0x16, 0x29, 0xb3, 0xe5, 0x76, 0x4a, 0xa8, 62e41f4b71Sopenharmony_ci 0x84, 0x19, 0xdc, 0xef, 0xfc, 0xb0, 0x63, 0x33, 0x0b, 0xfa, 0xf6, 0x68, 0x0b, 0x08, 0xea, 0x31, 63e41f4b71Sopenharmony_ci 0x52, 0xee, 0x99, 0xef, 0x43, 0x2a, 0xbe, 0x97, 0xad, 0xb3, 0xb9, 0x66, 0x7a, 0xae, 0xe1, 0x8f, 64e41f4b71Sopenharmony_ci 0x57, 0x86, 0xe5, 0xfe, 0x14, 0x3c, 0x81, 0xd0, 0x64, 0xf8, 0x86, 0x1a, 0x0b, 0x40, 0x58, 0xc9, 65e41f4b71Sopenharmony_ci 0x33, 0x49, 0xb8, 0x99, 0xc6, 0x2e, 0x94, 0x70, 0xee, 0x09, 0x88, 0xe1, 0x5c, 0x4e, 0x6c, 0x22, 66e41f4b71Sopenharmony_ci 0x72, 0xa7, 0x2a, 0x21, 0xdd, 0xd7, 0x1d, 0xfc, 0x63, 0x15, 0x0b, 0xde, 0x06, 0x9c, 0xf3, 0x28, 67e41f4b71Sopenharmony_ci 0xf3, 0xac, 0x4a, 0xa8, 0xb5, 0x50, 0xca, 0x9b, 0xcc, 0x0a, 0x04, 0xfe, 0x3f, 0x98, 0x68, 0x81, 68e41f4b71Sopenharmony_ci 0xac, 0x24, 0x53, 0xea, 0x1f, 0x1c, 0x6e, 0x5e, 0xca, 0xe8, 0x31, 0x0d, 0x08, 0x12, 0xf3, 0x26, 69e41f4b71Sopenharmony_ci 0xf8, 0x5e, 0xeb, 0x10, 0x27, 0xae, 0xaa, 0xc3, 0xad, 0x6c, 0xc1, 0x89, 0xdb, 0x7d, 0x5a, 0x12, 70e41f4b71Sopenharmony_ci 0x55, 0xad, 0x11, 0x19, 0xa1, 0xa9, 0x8f, 0x0b, 0x6d, 0x78, 0x8d, 0x1c, 0xdf, 0xe5, 0x63, 0x82, 71e41f4b71Sopenharmony_ci 0x0b, 0x7d, 0x23, 0x04, 0xb4, 0x75, 0x8c, 0xed, 0x77, 0xfc, 0x1a, 0x85, 0x29, 0x11, 0xe0, 0x61, 72e41f4b71Sopenharmony_ci]); 73e41f4b71Sopenharmony_ci``` 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci- RSA key pair material format 77e41f4b71Sopenharmony_ci | Key Algorithm| Key Size| Modulus n Length (L<sub>n</sub>)| Public Key Exponent Length (L<sub>e</sub>)| Private Key Exponent d Length (L<sub>d</sub>)| n | e | d | 78e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 79e41f4b71Sopenharmony_ci | 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| L<sub>n</sub> bytes| L<sub>e</sub> bytes| L<sub>d</sub> bytes| 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci- ECC key pair material format 82e41f4b71Sopenharmony_ci | Key Algorithm| Key Size| Coordinate x Length (L<sub>x</sub>)| Coordinate y Length (L<sub>y</sub>)| Coordinate z Length (L<sub>z</sub>)| x | y | z | 83e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 84e41f4b71Sopenharmony_ci | 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| L<sub>x</sub> bytes| L<sub>y</sub> bytes| L<sub>z</sub> bytes| 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci- DSA key pair material format 87e41f4b71Sopenharmony_ci | Key Algorithm| Key Size| Private Key x Length (L<sub>x</sub>)| Public Key y Length (L<sub>y</sub>)| Prime p Length (L<sub>p</sub>)| Prime Factor q Length (L<sub>q</sub>)| g length (L<sub>g</sub>)| x | y | p | q | g | 88e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 89e41f4b71Sopenharmony_ci | 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| L<sub>x</sub> bytes| L<sub>y</sub> bytes| L<sub>p</sub> bytes| L<sub>q</sub> bytes| L<sub>g</sub> bytes| 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci- DH key pair material format 92e41f4b71Sopenharmony_ci | Key Algorithm| Key Size| Public Key pk Length (L<sub>pk</sub>)| Private Key sk Length (L<sub>sk</sub>)| Reserved Field| pk | sk | 93e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 94e41f4b71Sopenharmony_ci | 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| L<sub>pk</sub> bytes| L<sub>sk</sub> bytes| 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci- Curve25519 key pair material format 97e41f4b71Sopenharmony_ci | Key Algorithm| Key Size| Public Key pk Length (L<sub>pk</sub>)| Private Key sk Length (L<sub>sk</sub>)| Reserved Field| pk | sk | 98e41f4b71Sopenharmony_ci | -------- | -------- | -------- | -------- | -------- | -------- | -------- | 99e41f4b71Sopenharmony_ci | 4 bytes| 4 bytes| 4 bytes| 4 bytes| 4 bytes| L<sub>pk</sub> bytes| L<sub>sk</sub> bytes| 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci### Public Key Material Format 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ciWhen a public key is exported or imported, the key material is encapsulated in the DER format defined in X.509. 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ciThe following is ECC public key in EDR format: 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci``` 109e41f4b71Sopenharmony_cilet eccP256PubKey = new Uint8Array([ 110e41f4b71Sopenharmony_ci 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 111e41f4b71Sopenharmony_ci 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xc0, 0xfe, 0x1c, 0x67, 0xde, 112e41f4b71Sopenharmony_ci 0x86, 0x0e, 0xfb, 0xaf, 0xb5, 0x85, 0x52, 0xb4, 0x0e, 0x1f, 0x6c, 0x6c, 0xaa, 0xc5, 0xd9, 0xd2, 113e41f4b71Sopenharmony_ci 0x4d, 0xb0, 0x8a, 0x72, 0x24, 0xa1, 0x99, 0xaf, 0xfc, 0x3e, 0x55, 0x5a, 0xac, 0x99, 0x3d, 0xe8, 114e41f4b71Sopenharmony_ci 0x34, 0x72, 0xb9, 0x47, 0x9c, 0xa6, 0xd8, 0xfb, 0x00, 0xa0, 0x1f, 0x9f, 0x7a, 0x41, 0xe5, 0x44, 115e41f4b71Sopenharmony_ci 0x3e, 0xb2, 0x76, 0x08, 0xa2, 0xbd, 0xe9, 0x41, 0xd5, 0x2b, 0x9e 116e41f4b71Sopenharmony_ci]); 117e41f4b71Sopenharmony_ci``` 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci### Private Key Material Format 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ciThe private key material is in the same format as the key pair material. When the private key material is encapsulated, the public key length in the header of the key pair material is set to 0 and key pair material content and the private key material content are combined. 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ciPrivate key material = Key pair material header + Private key material content 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ciThe following is an example of the RSA private key material. 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci 130e41f4b71Sopenharmony_ci``` 131e41f4b71Sopenharmony_cilet rsa2048PrivateKeyMaterial = new Uint8Array([ 132e41f4b71Sopenharmony_ci 0x01, 0x00, 0x00, 0x00, // Key algorithm: huks.HuksKeyAlg.HUKS_ALG_RSA = 1 133e41f4b71Sopenharmony_ci 0x00, 0x08, 0x00, 0x00, // Key size (bit): 2048 134e41f4b71Sopenharmony_ci 0x00, 0x01, 0x00, 0x00, // Length of modulus n (byte): 256 135e41f4b71Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, // Length of the public key exponent e (byte): 0 136e41f4b71Sopenharmony_ci 0x00, 0x01, 0x00, 0x00, // Length of the private key exponent d (byte): 256 137e41f4b71Sopenharmony_ci // Modulus n 138e41f4b71Sopenharmony_ci 0xc5, 0x35, 0x62, 0x48, 0xc4, 0x92, 0x87, 0x73, 0x0d, 0x42, 0x96, 0xfc, 0x7b, 0x11, 0x05, 0x06, 139e41f4b71Sopenharmony_ci 0x0f, 0x8d, 0x66, 0xc1, 0x0e, 0xad, 0x37, 0x44, 0x92, 0x95, 0x2f, 0x6a, 0x55, 0xba, 0xec, 0x1d, 140e41f4b71Sopenharmony_ci 0x54, 0x62, 0x0a, 0x4b, 0xd3, 0xc7, 0x05, 0xe4, 0x07, 0x40, 0xd9, 0xb7, 0xc2, 0x12, 0xcb, 0x9a, 141e41f4b71Sopenharmony_ci 0x90, 0xad, 0xe3, 0x24, 0xe8, 0x5e, 0xa6, 0xf8, 0xd0, 0x6e, 0xbc, 0xd1, 0x69, 0x7f, 0x6b, 0xe4, 142e41f4b71Sopenharmony_ci 0x2b, 0x4e, 0x1a, 0x65, 0xbb, 0x73, 0x88, 0x6b, 0x7c, 0xaf, 0x7e, 0xd0, 0x47, 0x26, 0xeb, 0xa5, 143e41f4b71Sopenharmony_ci 0xbe, 0xd6, 0xe8, 0xee, 0x9c, 0xa5, 0x66, 0xa5, 0xc9, 0xd3, 0x25, 0x13, 0xc4, 0x0e, 0x6c, 0xab, 144e41f4b71Sopenharmony_ci 0x50, 0xb6, 0x50, 0xc9, 0xce, 0x8f, 0x0a, 0x0b, 0xc6, 0x28, 0x69, 0xe9, 0x83, 0x69, 0xde, 0x42, 145e41f4b71Sopenharmony_ci 0x56, 0x79, 0x7f, 0xde, 0x86, 0x24, 0xca, 0xfc, 0xaa, 0xc0, 0xf3, 0xf3, 0x7f, 0x92, 0x8e, 0x8a, 146e41f4b71Sopenharmony_ci 0x12, 0x52, 0xfe, 0x50, 0xb1, 0x5e, 0x8c, 0x01, 0xce, 0xfc, 0x7e, 0xf2, 0x4f, 0x5f, 0x03, 0xfe, 147e41f4b71Sopenharmony_ci 0xa7, 0xcd, 0xa1, 0xfc, 0x94, 0x52, 0x00, 0x8b, 0x9b, 0x7f, 0x09, 0xab, 0xa8, 0xa4, 0xf5, 0xb4, 148e41f4b71Sopenharmony_ci 0xa5, 0xaa, 0xfc, 0x72, 0xeb, 0x17, 0x40, 0xa9, 0xee, 0xbe, 0x8f, 0xc2, 0xd1, 0x80, 0xc2, 0x0d, 149e41f4b71Sopenharmony_ci 0x44, 0xa9, 0x59, 0x44, 0x59, 0x81, 0x3b, 0x5d, 0x4a, 0xde, 0xfb, 0xae, 0x24, 0xfc, 0xa3, 0xd9, 150e41f4b71Sopenharmony_ci 0xbc, 0x57, 0x55, 0xc2, 0x26, 0xbc, 0x19, 0xa7, 0x9a, 0xc5, 0x59, 0xa3, 0xee, 0x5a, 0xef, 0x41, 151e41f4b71Sopenharmony_ci 0x80, 0x7d, 0xf8, 0x5e, 0xc1, 0x1d, 0x32, 0x38, 0x41, 0x5b, 0xb6, 0x92, 0xb8, 0xb7, 0x03, 0x0d, 152e41f4b71Sopenharmony_ci 0x3e, 0x59, 0x0f, 0x1c, 0xb3, 0xe1, 0x2a, 0x95, 0x1a, 0x3b, 0x50, 0x4f, 0xc4, 0x1d, 0xcf, 0x73, 153e41f4b71Sopenharmony_ci 0x7c, 0x14, 0xca, 0xe3, 0x0b, 0xa7, 0xc7, 0x1a, 0x41, 0x4a, 0xee, 0xbe, 0x1f, 0x43, 0xdd, 0xf9, 154e41f4b71Sopenharmony_ci // Private key exponent d 155e41f4b71Sopenharmony_ci 0x88, 0x4b, 0x82, 0xe7, 0xe3, 0xe3, 0x99, 0x75, 0x6c, 0x9e, 0xaf, 0x17, 0x44, 0x3e, 0xd9, 0x07, 156e41f4b71Sopenharmony_ci 0xfd, 0x4b, 0xae, 0xce, 0x92, 0xc4, 0x28, 0x44, 0x5e, 0x42, 0x79, 0x08, 0xb6, 0xc3, 0x7f, 0x58, 157e41f4b71Sopenharmony_ci 0x2d, 0xef, 0xac, 0x4a, 0x07, 0xcd, 0xaf, 0x46, 0x8f, 0xb4, 0xc4, 0x43, 0xf9, 0xff, 0x5f, 0x74, 158e41f4b71Sopenharmony_ci 0x2d, 0xb5, 0xe0, 0x1c, 0xab, 0xf4, 0x6e, 0xd5, 0xdb, 0xc8, 0x0c, 0xfb, 0x76, 0x3c, 0x38, 0x66, 159e41f4b71Sopenharmony_ci 0xf3, 0x7f, 0x01, 0x43, 0x7a, 0x30, 0x39, 0x02, 0x80, 0xa4, 0x11, 0xb3, 0x04, 0xd9, 0xe3, 0x57, 160e41f4b71Sopenharmony_ci 0x23, 0xf4, 0x07, 0xfc, 0x91, 0x8a, 0xc6, 0xcc, 0xa2, 0x16, 0x29, 0xb3, 0xe5, 0x76, 0x4a, 0xa8, 161e41f4b71Sopenharmony_ci 0x84, 0x19, 0xdc, 0xef, 0xfc, 0xb0, 0x63, 0x33, 0x0b, 0xfa, 0xf6, 0x68, 0x0b, 0x08, 0xea, 0x31, 162e41f4b71Sopenharmony_ci 0x52, 0xee, 0x99, 0xef, 0x43, 0x2a, 0xbe, 0x97, 0xad, 0xb3, 0xb9, 0x66, 0x7a, 0xae, 0xe1, 0x8f, 163e41f4b71Sopenharmony_ci 0x57, 0x86, 0xe5, 0xfe, 0x14, 0x3c, 0x81, 0xd0, 0x64, 0xf8, 0x86, 0x1a, 0x0b, 0x40, 0x58, 0xc9, 164e41f4b71Sopenharmony_ci 0x33, 0x49, 0xb8, 0x99, 0xc6, 0x2e, 0x94, 0x70, 0xee, 0x09, 0x88, 0xe1, 0x5c, 0x4e, 0x6c, 0x22, 165e41f4b71Sopenharmony_ci 0x72, 0xa7, 0x2a, 0x21, 0xdd, 0xd7, 0x1d, 0xfc, 0x63, 0x15, 0x0b, 0xde, 0x06, 0x9c, 0xf3, 0x28, 166e41f4b71Sopenharmony_ci 0xf3, 0xac, 0x4a, 0xa8, 0xb5, 0x50, 0xca, 0x9b, 0xcc, 0x0a, 0x04, 0xfe, 0x3f, 0x98, 0x68, 0x81, 167e41f4b71Sopenharmony_ci 0xac, 0x24, 0x53, 0xea, 0x1f, 0x1c, 0x6e, 0x5e, 0xca, 0xe8, 0x31, 0x0d, 0x08, 0x12, 0xf3, 0x26, 168e41f4b71Sopenharmony_ci 0xf8, 0x5e, 0xeb, 0x10, 0x27, 0xae, 0xaa, 0xc3, 0xad, 0x6c, 0xc1, 0x89, 0xdb, 0x7d, 0x5a, 0x12, 169e41f4b71Sopenharmony_ci 0x55, 0xad, 0x11, 0x19, 0xa1, 0xa9, 0x8f, 0x0b, 0x6d, 0x78, 0x8d, 0x1c, 0xdf, 0xe5, 0x63, 0x82, 170e41f4b71Sopenharmony_ci 0x0b, 0x7d, 0x23, 0x04, 0xb4, 0x75, 0x8c, 0xed, 0x77, 0xfc, 0x1a, 0x85, 0x29, 0x11, 0xe0, 0x61, 171e41f4b71Sopenharmony_ci]); 172e41f4b71Sopenharmony_ci``` 173