---
name: cdp-accounts-import-export
description: Exports account private keys with RSA encryption and imports external keys using CDP's encrypt-key utility. EVM and Solana.
---

# cdp-accounts-import-export

Export or import account private keys.

## Export

1. Generate RSA keypair:
   ```
   openssl genpkey -algorithm RSA -out /tmp/rsa.pem -pkeyopt rsa_keygen_bits:4096 2>/dev/null
   openssl rsa -pubout -in /tmp/rsa.pem -outform DER -out /tmp/rsa.pub.der 2>/dev/null
   PUBKEY=$(base64 < /tmp/rsa.pub.der | tr -d '\n')
   ```

2. Export:
   - EVM by address: `cdp evm accounts export <address> exportEncryptionKey=$PUBKEY`
   - EVM by name: `cdp evm accounts export by-name <name> exportEncryptionKey=$PUBKEY`
   - Solana by address: `cdp solana accounts export <address> exportEncryptionKey=$PUBKEY`
   - Solana by name: `cdp solana accounts export by-name <name> exportEncryptionKey=$PUBKEY`

3. Clean up RSA files.

## Import

1. Encrypt the private key with CDP's RSA key:
   ```
   ENCRYPTED=$(cdp util encrypt-key --file ./private-key.txt)
   ```
   Auto-detects hex (EVM) vs base58 (Solana).

2. Import:
   - EVM: `cdp evm accounts import encryptedPrivateKey=$ENCRYPTED name=<name>`
   - Solana: `cdp solana accounts import encryptedPrivateKey=$ENCRYPTED name=<name>`

3. Verify: `cdp evm accounts get <importedAddress>`

## End-user import

```
cdp end-users import encryptedPrivateKey=$ENCRYPTED ...
```

## Notes

- Export encryption uses YOUR RSA key (you decrypt with your private key).
- Import encryption uses CDP's well-known RSA key (server decrypts in TEE).
- Test key generation: `openssl rand -hex 32` (EVM) or `cast wallet new` (Foundry).

## Compatibility

| Account type | Export | Import |
|-------------|--------|--------|
| EVM EOA | yes | yes |
| Solana | yes | yes |
| Smart account | no (contract-based) | no |
| End-user | no | import only |
