1e41f4b71Sopenharmony_ci# Converting a Compressed or Uncompressed ECC Public Key (ArkTS) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciYou can generate a public key object (**PubKey**) from ECC public key data or obtain the ECC public key data from a public key (**PubKey**) object. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciCurrently, only the compressed/uncompressed public key data that complies with the ECC X.509 standard is supported. The public key data mentioned in this topic is a complete X509 public key. For details about the operations on point data, see [Converting Compressed or Uncompressed ECC Point Data](crypto-convert-compressed-or-uncompressed-ECC-point.md). 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ciFor details about the ECC algorithm specifications, see [ECC](crypto-asym-key-generation-conversion-spec.md#ecc). 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciYou can specify the string parameter **format** to set the format of the ECC public key to obtain. To obtain a compressed public key that complies with the X.509 standard, set **format** to **X509|COMPRESSED**. To obtain an uncompressed public key, set **format** to **X509|UNCOMPRESSED**. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci## Converting Uncompressed Public Key Data to Compressed Public Key Data 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci1. Encapsulate uncompressed ECC public key data of the Uint8Array type into a **DataBlob** object. 15e41f4b71Sopenharmony_ciEither the public key or private key can be passed in. In this example, an uncompressed public key is passed in. 16e41f4b71Sopenharmony_ci2. Use [cryptoFramework.createAsyKeyGenerator](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#cryptoframeworkcreateasykeygenerator) with the string parameter **'ECC_BrainPoolP256r1'** to create an asymmetric key generator (**AsyKeyGenerator**) object for a 256-bit ECC key pair. 17e41f4b71Sopenharmony_ci3. Use [AsyKeyGenerator.convertKey](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#convertkey-3) to convert the **DataBlob** object into an asymmetric key (**KeyPair**) object. 18e41f4b71Sopenharmony_ci4. Use [PubKey.getEncodedDer](../../reference/apis-crypto-architecture-kit/js-apis-cryptoFramework.md#getencodedder12) with **format** set to **'X509|COMPRESSED'** to obtain the byte stream of the compressed public key. 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci**Example** 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci```ts 23e41f4b71Sopenharmony_ciimport { cryptoFramework } from '@kit.CryptoArchitectureKit'; 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ciasync function eccPubUncompressedToCompressed() { 26e41f4b71Sopenharmony_ci let pkData = new Uint8Array([48, 90, 48, 20, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 9, 43, 36, 3, 3, 2, 8, 1, 1, 7, 3, 66, 0, 4, 143, 39, 57, 249, 145, 50, 63, 222, 35, 70, 178, 121, 202, 154, 21, 146, 129, 75, 76, 63, 8, 195, 157, 111, 40, 217, 215, 148, 120, 224, 205, 82, 83, 92, 185, 21, 211, 184, 5, 19, 114, 33, 86, 85, 228, 123, 242, 206, 200, 98, 178, 184, 130, 35, 232, 45, 5, 202, 189, 11, 46, 163, 156, 152]); 27e41f4b71Sopenharmony_ci let pubKeyBlob: cryptoFramework.DataBlob = { data: pkData }; 28e41f4b71Sopenharmony_ci let generator = cryptoFramework.createAsyKeyGenerator('ECC_BrainPoolP256r1'); 29e41f4b71Sopenharmony_ci let keyPair = await generator.convertKey(pubKeyBlob, null); 30e41f4b71Sopenharmony_ci let returnBlob = keyPair.pubKey.getEncodedDer('X509|COMPRESSED'); 31e41f4b71Sopenharmony_ci console.info('returnBlob data: ' + returnBlob.data); 32e41f4b71Sopenharmony_ci} 33e41f4b71Sopenharmony_ci``` 34