[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-azure-security-keyvault-keys-java":3,"mdc-k5kfvg-key":42,"related-org-microsoft-azure-security-keyvault-keys-java":2762,"related-repo-microsoft-azure-security-keyvault-keys-java":2950},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":37,"sourceUrl":40,"mdContent":41},"azure-security-keyvault-keys-java","manage cryptographic keys with Azure Key Vault","Azure Key Vault Keys Java SDK for cryptographic key management. Use when creating, managing, or using RSA\u002FEC keys, performing encrypt\u002Fdecrypt\u002Fsign\u002Fverify operations, or working with HSM-backed keys.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Azure","azure",{"name":20,"slug":21,"type":15},"Java","java",{"name":23,"slug":24,"type":15},"Cryptography","cryptography",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-07T06:53:32.632529","MIT",315,[31,32,18,33,34,35,36],"agent-skills","agents","foundry","mcp","sdk","skills",{"repoUrl":26,"stars":25,"forks":29,"topics":38,"description":39},[31,32,18,33,34,35,36],"Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Ftree\u002FHEAD\u002F.github\u002Fplugins\u002Fazure-sdk-java\u002Fskills\u002Fazure-security-keyvault-keys-java","---\nname: azure-security-keyvault-keys-java\ndescription: Azure Key Vault Keys Java SDK for cryptographic key management. Use when creating, managing, or using RSA\u002FEC keys, performing encrypt\u002Fdecrypt\u002Fsign\u002Fverify operations, or working with HSM-backed keys.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: com.azure:azure-security-keyvault-keys\n---\n\n# Azure Key Vault Keys (Java)\n\nManage cryptographic keys and perform cryptographic operations in Azure Key Vault and Managed HSM.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-security-keyvault-keys\u003C\u002FartifactId>\n    \u003Cversion>4.9.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Client Creation\n\n```java\nimport com.azure.core.credential.TokenCredential;\nimport com.azure.identity.AzureIdentityEnvVars;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\nimport com.azure.security.keyvault.keys.KeyClient;\nimport com.azure.security.keyvault.keys.KeyClientBuilder;\nimport com.azure.security.keyvault.keys.cryptography.CryptographyClient;\nimport com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder;\n\n\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\nTokenCredential credential = new DefaultAzureCredentialBuilder()\n    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n    .build();\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n\n\u002F\u002F Key management client\nKeyClient keyClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildClient();\n\n\u002F\u002F Async client\nKeyAsyncClient keyAsyncClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildAsyncClient();\n\n\u002F\u002F Cryptography client (for encrypt\u002Fdecrypt\u002Fsign\u002Fverify)\nCryptographyClient cryptoClient = new CryptographyClientBuilder()\n    .keyIdentifier(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\u002F\u003Ckey-version>\")\n    .credential(credential)\n    .buildClient();\n```\n\n## Key Types\n\n| Type | Description |\n|------|-------------|\n| `RSA` | RSA key (2048, 3072, 4096 bits) |\n| `RSA_HSM` | RSA key in HSM |\n| `EC` | Elliptic Curve key |\n| `EC_HSM` | Elliptic Curve key in HSM |\n| `OCT` | Symmetric key (Managed HSM only) |\n| `OCT_HSM` | Symmetric key in HSM |\n\n## Create Keys\n\n### Create RSA Key\n\n```java\nimport com.azure.security.keyvault.keys.models.*;\n\n\u002F\u002F Simple RSA key\nKeyVaultKey rsaKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key\")\n    .setKeySize(2048));\n\nSystem.out.println(\"Key name: \" + rsaKey.getName());\nSystem.out.println(\"Key ID: \" + rsaKey.getId());\nSystem.out.println(\"Key type: \" + rsaKey.getKeyType());\n\n\u002F\u002F RSA key with options\nKeyVaultKey rsaKeyWithOptions = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key-2\")\n    .setKeySize(4096)\n    .setExpiresOn(OffsetDateTime.now().plusYears(1))\n    .setNotBefore(OffsetDateTime.now())\n    .setEnabled(true)\n    .setKeyOperations(KeyOperation.ENCRYPT, KeyOperation.DECRYPT, \n                       KeyOperation.WRAP_KEY, KeyOperation.UNWRAP_KEY)\n    .setTags(Map.of(\"environment\", \"production\")));\n\n\u002F\u002F HSM-backed RSA key\nKeyVaultKey hsmKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-hsm-key\")\n    .setKeySize(2048)\n    .setHardwareProtected(true));\n```\n\n### Create EC Key\n\n```java\n\u002F\u002F EC key with P-256 curve\nKeyVaultKey ecKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key\")\n    .setCurveName(KeyCurveName.P_256));\n\n\u002F\u002F EC key with other curves\nKeyVaultKey ecKey384 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-384\")\n    .setCurveName(KeyCurveName.P_384));\n\nKeyVaultKey ecKey521 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-521\")\n    .setCurveName(KeyCurveName.P_521));\n\n\u002F\u002F HSM-backed EC key\nKeyVaultKey ecHsmKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-hsm-key\")\n    .setCurveName(KeyCurveName.P_256)\n    .setHardwareProtected(true));\n```\n\n### Create Symmetric Key (Managed HSM only)\n\n```java\nKeyVaultKey octKey = keyClient.createOctKey(new CreateOctKeyOptions(\"my-symmetric-key\")\n    .setKeySize(256)\n    .setHardwareProtected(true));\n```\n\n## Get Key\n\n```java\n\u002F\u002F Get latest version\nKeyVaultKey key = keyClient.getKey(\"my-key\");\n\n\u002F\u002F Get specific version\nKeyVaultKey keyVersion = keyClient.getKey(\"my-key\", \"\u003Cversion-id>\");\n\n\u002F\u002F Get only key properties (no key material)\nKeyProperties keyProps = keyClient.getKey(\"my-key\").getProperties();\n```\n\n## Update Key Properties\n\n```java\nKeyVaultKey key = keyClient.getKey(\"my-key\");\n\n\u002F\u002F Update properties\nkey.getProperties()\n    .setEnabled(false)\n    .setExpiresOn(OffsetDateTime.now().plusMonths(6))\n    .setTags(Map.of(\"status\", \"archived\"));\n\nKeyVaultKey updatedKey = keyClient.updateKeyProperties(key.getProperties(),\n    KeyOperation.ENCRYPT, KeyOperation.DECRYPT);\n```\n\n## List Keys\n\n```java\nimport com.azure.core.util.paging.PagedIterable;\n\n\u002F\u002F List all keys\nfor (KeyProperties keyProps : keyClient.listPropertiesOfKeys()) {\n    System.out.println(\"Key: \" + keyProps.getName());\n    System.out.println(\"  Enabled: \" + keyProps.isEnabled());\n    System.out.println(\"  Created: \" + keyProps.getCreatedOn());\n}\n\n\u002F\u002F List key versions\nfor (KeyProperties version : keyClient.listPropertiesOfKeyVersions(\"my-key\")) {\n    System.out.println(\"Version: \" + version.getVersion());\n    System.out.println(\"Created: \" + version.getCreatedOn());\n}\n```\n\n## Delete Key\n\n```java\nimport com.azure.core.util.polling.SyncPoller;\n\n\u002F\u002F Begin delete (soft-delete enabled vaults)\nSyncPoller\u003CDeletedKey, Void> deletePoller = keyClient.beginDeleteKey(\"my-key\");\n\n\u002F\u002F Wait for deletion\nDeletedKey deletedKey = deletePoller.poll().getValue();\nSystem.out.println(\"Deleted: \" + deletedKey.getDeletedOn());\n\ndeletePoller.waitForCompletion();\n\n\u002F\u002F Purge deleted key (permanent deletion)\nkeyClient.purgeDeletedKey(\"my-key\");\n\n\u002F\u002F Recover deleted key\nSyncPoller\u003CKeyVaultKey, Void> recoverPoller = keyClient.beginRecoverDeletedKey(\"my-key\");\nrecoverPoller.waitForCompletion();\n```\n\n## Cryptographic Operations\n\n### Encrypt\u002FDecrypt\n\n```java\nimport com.azure.security.keyvault.keys.cryptography.models.*;\n\nCryptographyClient cryptoClient = new CryptographyClientBuilder()\n    .keyIdentifier(\"https:\u002F\u002F\u003Cvault>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildClient();\n\nbyte[] plaintext = \"Hello, World!\".getBytes(StandardCharsets.UTF_8);\n\n\u002F\u002F Encrypt\nEncryptResult encryptResult = cryptoClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext);\nbyte[] ciphertext = encryptResult.getCipherText();\nSystem.out.println(\"Ciphertext length: \" + ciphertext.length);\n\n\u002F\u002F Decrypt\nDecryptResult decryptResult = cryptoClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext);\nString decrypted = new String(decryptResult.getPlainText(), StandardCharsets.UTF_8);\nSystem.out.println(\"Decrypted: \" + decrypted);\n```\n\n### Sign\u002FVerify\n\n```java\nimport java.security.MessageDigest;\n\n\u002F\u002F Create digest of data\nbyte[] data = \"Data to sign\".getBytes(StandardCharsets.UTF_8);\nMessageDigest md = MessageDigest.getInstance(\"SHA-256\");\nbyte[] digest = md.digest(data);\n\n\u002F\u002F Sign\nSignResult signResult = cryptoClient.sign(SignatureAlgorithm.RS256, digest);\nbyte[] signature = signResult.getSignature();\n\n\u002F\u002F Verify\nVerifyResult verifyResult = cryptoClient.verify(SignatureAlgorithm.RS256, digest, signature);\nSystem.out.println(\"Valid signature: \" + verifyResult.isValid());\n```\n\n### Wrap\u002FUnwrap Key\n\n```java\n\u002F\u002F Key to wrap (e.g., AES key)\nbyte[] keyToWrap = new byte[32];  \u002F\u002F 256-bit key\nnew SecureRandom().nextBytes(keyToWrap);\n\n\u002F\u002F Wrap\nWrapResult wrapResult = cryptoClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyToWrap);\nbyte[] wrappedKey = wrapResult.getEncryptedKey();\n\n\u002F\u002F Unwrap\nUnwrapResult unwrapResult = cryptoClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP, wrappedKey);\nbyte[] unwrappedKey = unwrapResult.getKey();\n```\n\n## Backup and Restore\n\n```java\n\u002F\u002F Backup\nbyte[] backup = keyClient.backupKey(\"my-key\");\n\n\u002F\u002F Save backup to file\nFiles.write(Paths.get(\"key-backup.blob\"), backup);\n\n\u002F\u002F Restore\nbyte[] backupData = Files.readAllBytes(Paths.get(\"key-backup.blob\"));\nKeyVaultKey restoredKey = keyClient.restoreKeyBackup(backupData);\n```\n\n## Key Rotation\n\n```java\n\u002F\u002F Rotate to new version\nKeyVaultKey rotatedKey = keyClient.rotateKey(\"my-key\");\nSystem.out.println(\"New version: \" + rotatedKey.getProperties().getVersion());\n\n\u002F\u002F Set rotation policy\nKeyRotationPolicy policy = new KeyRotationPolicy()\n    .setExpiresIn(\"P90D\")  \u002F\u002F Expire after 90 days\n    .setLifetimeActions(Arrays.asList(\n        new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)\n            .setTimeBeforeExpiry(\"P30D\")));  \u002F\u002F Rotate 30 days before expiry\n\nkeyClient.updateKeyRotationPolicy(\"my-key\", policy);\n\n\u002F\u002F Get rotation policy\nKeyRotationPolicy currentPolicy = keyClient.getKeyRotationPolicy(\"my-key\");\n```\n\n## Import Key\n\n```java\nimport com.azure.security.keyvault.keys.models.ImportKeyOptions;\nimport com.azure.security.keyvault.keys.models.JsonWebKey;\n\n\u002F\u002F Import existing key material\nJsonWebKey jsonWebKey = new JsonWebKey()\n    .setKeyType(KeyType.RSA)\n    .setN(modulus)\n    .setE(exponent)\n    .setD(privateExponent)\n    \u002F\u002F ... other RSA components\n    ;\n\nImportKeyOptions importOptions = new ImportKeyOptions(\"imported-key\", jsonWebKey)\n    .setHardwareProtected(false);\n\nKeyVaultKey importedKey = keyClient.importKey(importOptions);\n```\n\n## Encryption Algorithms\n\n| Algorithm | Key Type | Description |\n|-----------|----------|-------------|\n| `RSA1_5` | RSA | RSAES-PKCS1-v1_5 |\n| `RSA_OAEP` | RSA | RSAES with OAEP (recommended) |\n| `RSA_OAEP_256` | RSA | RSAES with OAEP using SHA-256 |\n| `A128GCM` | OCT | AES-GCM 128-bit |\n| `A256GCM` | OCT | AES-GCM 256-bit |\n| `A128CBC` | OCT | AES-CBC 128-bit |\n| `A256CBC` | OCT | AES-CBC 256-bit |\n\n## Signature Algorithms\n\n| Algorithm | Key Type | Hash |\n|-----------|----------|------|\n| `RS256` | RSA | SHA-256 |\n| `RS384` | RSA | SHA-384 |\n| `RS512` | RSA | SHA-512 |\n| `PS256` | RSA | SHA-256 (PSS) |\n| `ES256` | EC P-256 | SHA-256 |\n| `ES384` | EC P-384 | SHA-384 |\n| `ES512` | EC P-521 | SHA-512 |\n\n## Error Handling\n\n```java\nimport com.azure.core.exception.HttpResponseException;\nimport com.azure.core.exception.ResourceNotFoundException;\n\ntry {\n    KeyVaultKey key = keyClient.getKey(\"non-existent-key\");\n} catch (ResourceNotFoundException e) {\n    System.out.println(\"Key not found: \" + e.getMessage());\n} catch (HttpResponseException e) {\n    System.out.println(\"HTTP error \" + e.getResponse().getStatusCode());\n    System.out.println(\"Message: \" + e.getMessage());\n}\n```\n\n## Environment Variables\n\n```bash\nAZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net  # Required for vault URL\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\n```\n\n## Best Practices\n\n1. **Use HSM Keys for Production** - Set `setHardwareProtected(true)` for sensitive keys\n2. **Enable Soft Delete** - Protects against accidental deletion\n3. **Key Rotation** - Set up automatic rotation policies\n4. **Least Privilege** - Use separate keys for different operations\n5. **Local Crypto When Possible** - Use `CryptographyClient` with local key material to reduce round-trips\n\n## Trigger Phrases\n\n- \"Key Vault keys Java\", \"cryptographic keys Java\"\n- \"encrypt decrypt Java\", \"sign verify Java\"\n- \"RSA key\", \"EC key\", \"HSM key\"\n- \"key rotation\", \"wrap unwrap key\"\n",{"data":43,"body":47},{"name":4,"description":6,"license":28,"metadata":44},{"author":9,"version":45,"package":46},"1.0.0","com.azure:azure-security-keyvault-keys",{"type":48,"children":49},"root",[50,59,65,72,131,137,440,446,576,582,589,784,790,913,919,949,955,1024,1030,1114,1120,1236,1242,1380,1386,1392,1537,1543,1659,1665,1758,1764,1841,1847,1971,1977,2109,2115,2288,2294,2466,2472,2565,2571,2649,2655,2726,2732,2756],{"type":51,"tag":52,"props":53,"children":55},"element","h1",{"id":54},"azure-key-vault-keys-java",[56],{"type":57,"value":58},"text","Azure Key Vault Keys (Java)",{"type":51,"tag":60,"props":61,"children":62},"p",{},[63],{"type":57,"value":64},"Manage cryptographic keys and perform cryptographic operations in Azure Key Vault and Managed HSM.",{"type":51,"tag":66,"props":67,"children":69},"h2",{"id":68},"installation",[70],{"type":57,"value":71},"Installation",{"type":51,"tag":73,"props":74,"children":79},"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-xml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-security-keyvault-keys\u003C\u002FartifactId>\n    \u003Cversion>4.9.0\u003C\u002Fversion>\n\u003C\u002Fdependency>\n","xml","",[80],{"type":51,"tag":81,"props":82,"children":83},"code",{"__ignoreMap":78},[84,95,104,113,122],{"type":51,"tag":85,"props":86,"children":89},"span",{"class":87,"line":88},"line",1,[90],{"type":51,"tag":85,"props":91,"children":92},{},[93],{"type":57,"value":94},"\u003Cdependency>\n",{"type":51,"tag":85,"props":96,"children":98},{"class":87,"line":97},2,[99],{"type":51,"tag":85,"props":100,"children":101},{},[102],{"type":57,"value":103},"    \u003CgroupId>com.azure\u003C\u002FgroupId>\n",{"type":51,"tag":85,"props":105,"children":107},{"class":87,"line":106},3,[108],{"type":51,"tag":85,"props":109,"children":110},{},[111],{"type":57,"value":112},"    \u003CartifactId>azure-security-keyvault-keys\u003C\u002FartifactId>\n",{"type":51,"tag":85,"props":114,"children":116},{"class":87,"line":115},4,[117],{"type":51,"tag":85,"props":118,"children":119},{},[120],{"type":57,"value":121},"    \u003Cversion>4.9.0\u003C\u002Fversion>\n",{"type":51,"tag":85,"props":123,"children":125},{"class":87,"line":124},5,[126],{"type":51,"tag":85,"props":127,"children":128},{},[129],{"type":57,"value":130},"\u003C\u002Fdependency>\n",{"type":51,"tag":66,"props":132,"children":134},{"id":133},"client-creation",[135],{"type":57,"value":136},"Client Creation",{"type":51,"tag":73,"props":138,"children":141},{"className":139,"code":140,"language":21,"meta":78,"style":78},"language-java shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import com.azure.core.credential.TokenCredential;\nimport com.azure.identity.AzureIdentityEnvVars;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\nimport com.azure.identity.ManagedIdentityCredentialBuilder;\nimport com.azure.security.keyvault.keys.KeyClient;\nimport com.azure.security.keyvault.keys.KeyClientBuilder;\nimport com.azure.security.keyvault.keys.cryptography.CryptographyClient;\nimport com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder;\n\n\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\nTokenCredential credential = new DefaultAzureCredentialBuilder()\n    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n    .build();\n\u002F\u002F Or use a specific credential directly in production:\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n\n\u002F\u002F Key management client\nKeyClient keyClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildClient();\n\n\u002F\u002F Async client\nKeyAsyncClient keyAsyncClient = new KeyClientBuilder()\n    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n    .credential(credential)\n    .buildAsyncClient();\n\n\u002F\u002F Cryptography client (for encrypt\u002Fdecrypt\u002Fsign\u002Fverify)\nCryptographyClient cryptoClient = new CryptographyClientBuilder()\n    .keyIdentifier(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\u002F\u003Ckey-version>\")\n    .credential(credential)\n    .buildClient();\n",[142],{"type":51,"tag":81,"props":143,"children":144},{"__ignoreMap":78},[145,153,161,169,177,185,194,203,212,222,231,240,249,258,267,276,285,293,302,311,320,329,338,346,355,364,372,380,389,397,406,415,424,432],{"type":51,"tag":85,"props":146,"children":147},{"class":87,"line":88},[148],{"type":51,"tag":85,"props":149,"children":150},{},[151],{"type":57,"value":152},"import com.azure.core.credential.TokenCredential;\n",{"type":51,"tag":85,"props":154,"children":155},{"class":87,"line":97},[156],{"type":51,"tag":85,"props":157,"children":158},{},[159],{"type":57,"value":160},"import com.azure.identity.AzureIdentityEnvVars;\n",{"type":51,"tag":85,"props":162,"children":163},{"class":87,"line":106},[164],{"type":51,"tag":85,"props":165,"children":166},{},[167],{"type":57,"value":168},"import com.azure.identity.DefaultAzureCredentialBuilder;\n",{"type":51,"tag":85,"props":170,"children":171},{"class":87,"line":115},[172],{"type":51,"tag":85,"props":173,"children":174},{},[175],{"type":57,"value":176},"import com.azure.identity.ManagedIdentityCredentialBuilder;\n",{"type":51,"tag":85,"props":178,"children":179},{"class":87,"line":124},[180],{"type":51,"tag":85,"props":181,"children":182},{},[183],{"type":57,"value":184},"import com.azure.security.keyvault.keys.KeyClient;\n",{"type":51,"tag":85,"props":186,"children":188},{"class":87,"line":187},6,[189],{"type":51,"tag":85,"props":190,"children":191},{},[192],{"type":57,"value":193},"import com.azure.security.keyvault.keys.KeyClientBuilder;\n",{"type":51,"tag":85,"props":195,"children":197},{"class":87,"line":196},7,[198],{"type":51,"tag":85,"props":199,"children":200},{},[201],{"type":57,"value":202},"import com.azure.security.keyvault.keys.cryptography.CryptographyClient;\n",{"type":51,"tag":85,"props":204,"children":206},{"class":87,"line":205},8,[207],{"type":51,"tag":85,"props":208,"children":209},{},[210],{"type":57,"value":211},"import com.azure.security.keyvault.keys.cryptography.CryptographyClientBuilder;\n",{"type":51,"tag":85,"props":213,"children":215},{"class":87,"line":214},9,[216],{"type":51,"tag":85,"props":217,"children":219},{"emptyLinePlaceholder":218},true,[220],{"type":57,"value":221},"\n",{"type":51,"tag":85,"props":223,"children":225},{"class":87,"line":224},10,[226],{"type":51,"tag":85,"props":227,"children":228},{},[229],{"type":57,"value":230},"\u002F\u002F Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=\u003Cspecific_credential>\n",{"type":51,"tag":85,"props":232,"children":234},{"class":87,"line":233},11,[235],{"type":51,"tag":85,"props":236,"children":237},{},[238],{"type":57,"value":239},"TokenCredential credential = new DefaultAzureCredentialBuilder()\n",{"type":51,"tag":85,"props":241,"children":243},{"class":87,"line":242},12,[244],{"type":51,"tag":85,"props":245,"children":246},{},[247],{"type":57,"value":248},"    .requireEnvVars(AzureIdentityEnvVars.AZURE_TOKEN_CREDENTIALS)\n",{"type":51,"tag":85,"props":250,"children":252},{"class":87,"line":251},13,[253],{"type":51,"tag":85,"props":254,"children":255},{},[256],{"type":57,"value":257},"    .build();\n",{"type":51,"tag":85,"props":259,"children":261},{"class":87,"line":260},14,[262],{"type":51,"tag":85,"props":263,"children":264},{},[265],{"type":57,"value":266},"\u002F\u002F Or use a specific credential directly in production:\n",{"type":51,"tag":85,"props":268,"children":270},{"class":87,"line":269},15,[271],{"type":51,"tag":85,"props":272,"children":273},{},[274],{"type":57,"value":275},"\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Foverview\u002Fazure\u002Fidentity-readme?view=azure-java-stable#credential-classes\n",{"type":51,"tag":85,"props":277,"children":279},{"class":87,"line":278},16,[280],{"type":51,"tag":85,"props":281,"children":282},{},[283],{"type":57,"value":284},"\u002F\u002F TokenCredential credential = new ManagedIdentityCredentialBuilder().build();\n",{"type":51,"tag":85,"props":286,"children":288},{"class":87,"line":287},17,[289],{"type":51,"tag":85,"props":290,"children":291},{"emptyLinePlaceholder":218},[292],{"type":57,"value":221},{"type":51,"tag":85,"props":294,"children":296},{"class":87,"line":295},18,[297],{"type":51,"tag":85,"props":298,"children":299},{},[300],{"type":57,"value":301},"\u002F\u002F Key management client\n",{"type":51,"tag":85,"props":303,"children":305},{"class":87,"line":304},19,[306],{"type":51,"tag":85,"props":307,"children":308},{},[309],{"type":57,"value":310},"KeyClient keyClient = new KeyClientBuilder()\n",{"type":51,"tag":85,"props":312,"children":314},{"class":87,"line":313},20,[315],{"type":51,"tag":85,"props":316,"children":317},{},[318],{"type":57,"value":319},"    .vaultUrl(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\")\n",{"type":51,"tag":85,"props":321,"children":323},{"class":87,"line":322},21,[324],{"type":51,"tag":85,"props":325,"children":326},{},[327],{"type":57,"value":328},"    .credential(credential)\n",{"type":51,"tag":85,"props":330,"children":332},{"class":87,"line":331},22,[333],{"type":51,"tag":85,"props":334,"children":335},{},[336],{"type":57,"value":337},"    .buildClient();\n",{"type":51,"tag":85,"props":339,"children":341},{"class":87,"line":340},23,[342],{"type":51,"tag":85,"props":343,"children":344},{"emptyLinePlaceholder":218},[345],{"type":57,"value":221},{"type":51,"tag":85,"props":347,"children":349},{"class":87,"line":348},24,[350],{"type":51,"tag":85,"props":351,"children":352},{},[353],{"type":57,"value":354},"\u002F\u002F Async client\n",{"type":51,"tag":85,"props":356,"children":358},{"class":87,"line":357},25,[359],{"type":51,"tag":85,"props":360,"children":361},{},[362],{"type":57,"value":363},"KeyAsyncClient keyAsyncClient = new KeyClientBuilder()\n",{"type":51,"tag":85,"props":365,"children":367},{"class":87,"line":366},26,[368],{"type":51,"tag":85,"props":369,"children":370},{},[371],{"type":57,"value":319},{"type":51,"tag":85,"props":373,"children":375},{"class":87,"line":374},27,[376],{"type":51,"tag":85,"props":377,"children":378},{},[379],{"type":57,"value":328},{"type":51,"tag":85,"props":381,"children":383},{"class":87,"line":382},28,[384],{"type":51,"tag":85,"props":385,"children":386},{},[387],{"type":57,"value":388},"    .buildAsyncClient();\n",{"type":51,"tag":85,"props":390,"children":392},{"class":87,"line":391},29,[393],{"type":51,"tag":85,"props":394,"children":395},{"emptyLinePlaceholder":218},[396],{"type":57,"value":221},{"type":51,"tag":85,"props":398,"children":400},{"class":87,"line":399},30,[401],{"type":51,"tag":85,"props":402,"children":403},{},[404],{"type":57,"value":405},"\u002F\u002F Cryptography client (for encrypt\u002Fdecrypt\u002Fsign\u002Fverify)\n",{"type":51,"tag":85,"props":407,"children":409},{"class":87,"line":408},31,[410],{"type":51,"tag":85,"props":411,"children":412},{},[413],{"type":57,"value":414},"CryptographyClient cryptoClient = new CryptographyClientBuilder()\n",{"type":51,"tag":85,"props":416,"children":418},{"class":87,"line":417},32,[419],{"type":51,"tag":85,"props":420,"children":421},{},[422],{"type":57,"value":423},"    .keyIdentifier(\"https:\u002F\u002F\u003Cvault-name>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\u002F\u003Ckey-version>\")\n",{"type":51,"tag":85,"props":425,"children":427},{"class":87,"line":426},33,[428],{"type":51,"tag":85,"props":429,"children":430},{},[431],{"type":57,"value":328},{"type":51,"tag":85,"props":433,"children":435},{"class":87,"line":434},34,[436],{"type":51,"tag":85,"props":437,"children":438},{},[439],{"type":57,"value":337},{"type":51,"tag":66,"props":441,"children":443},{"id":442},"key-types",[444],{"type":57,"value":445},"Key Types",{"type":51,"tag":447,"props":448,"children":449},"table",{},[450,469],{"type":51,"tag":451,"props":452,"children":453},"thead",{},[454],{"type":51,"tag":455,"props":456,"children":457},"tr",{},[458,464],{"type":51,"tag":459,"props":460,"children":461},"th",{},[462],{"type":57,"value":463},"Type",{"type":51,"tag":459,"props":465,"children":466},{},[467],{"type":57,"value":468},"Description",{"type":51,"tag":470,"props":471,"children":472},"tbody",{},[473,491,508,525,542,559],{"type":51,"tag":455,"props":474,"children":475},{},[476,486],{"type":51,"tag":477,"props":478,"children":479},"td",{},[480],{"type":51,"tag":81,"props":481,"children":483},{"className":482},[],[484],{"type":57,"value":485},"RSA",{"type":51,"tag":477,"props":487,"children":488},{},[489],{"type":57,"value":490},"RSA key (2048, 3072, 4096 bits)",{"type":51,"tag":455,"props":492,"children":493},{},[494,503],{"type":51,"tag":477,"props":495,"children":496},{},[497],{"type":51,"tag":81,"props":498,"children":500},{"className":499},[],[501],{"type":57,"value":502},"RSA_HSM",{"type":51,"tag":477,"props":504,"children":505},{},[506],{"type":57,"value":507},"RSA key in HSM",{"type":51,"tag":455,"props":509,"children":510},{},[511,520],{"type":51,"tag":477,"props":512,"children":513},{},[514],{"type":51,"tag":81,"props":515,"children":517},{"className":516},[],[518],{"type":57,"value":519},"EC",{"type":51,"tag":477,"props":521,"children":522},{},[523],{"type":57,"value":524},"Elliptic Curve key",{"type":51,"tag":455,"props":526,"children":527},{},[528,537],{"type":51,"tag":477,"props":529,"children":530},{},[531],{"type":51,"tag":81,"props":532,"children":534},{"className":533},[],[535],{"type":57,"value":536},"EC_HSM",{"type":51,"tag":477,"props":538,"children":539},{},[540],{"type":57,"value":541},"Elliptic Curve key in HSM",{"type":51,"tag":455,"props":543,"children":544},{},[545,554],{"type":51,"tag":477,"props":546,"children":547},{},[548],{"type":51,"tag":81,"props":549,"children":551},{"className":550},[],[552],{"type":57,"value":553},"OCT",{"type":51,"tag":477,"props":555,"children":556},{},[557],{"type":57,"value":558},"Symmetric key (Managed HSM only)",{"type":51,"tag":455,"props":560,"children":561},{},[562,571],{"type":51,"tag":477,"props":563,"children":564},{},[565],{"type":51,"tag":81,"props":566,"children":568},{"className":567},[],[569],{"type":57,"value":570},"OCT_HSM",{"type":51,"tag":477,"props":572,"children":573},{},[574],{"type":57,"value":575},"Symmetric key in HSM",{"type":51,"tag":66,"props":577,"children":579},{"id":578},"create-keys",[580],{"type":57,"value":581},"Create Keys",{"type":51,"tag":583,"props":584,"children":586},"h3",{"id":585},"create-rsa-key",[587],{"type":57,"value":588},"Create RSA Key",{"type":51,"tag":73,"props":590,"children":592},{"className":139,"code":591,"language":21,"meta":78,"style":78},"import com.azure.security.keyvault.keys.models.*;\n\n\u002F\u002F Simple RSA key\nKeyVaultKey rsaKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key\")\n    .setKeySize(2048));\n\nSystem.out.println(\"Key name: \" + rsaKey.getName());\nSystem.out.println(\"Key ID: \" + rsaKey.getId());\nSystem.out.println(\"Key type: \" + rsaKey.getKeyType());\n\n\u002F\u002F RSA key with options\nKeyVaultKey rsaKeyWithOptions = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key-2\")\n    .setKeySize(4096)\n    .setExpiresOn(OffsetDateTime.now().plusYears(1))\n    .setNotBefore(OffsetDateTime.now())\n    .setEnabled(true)\n    .setKeyOperations(KeyOperation.ENCRYPT, KeyOperation.DECRYPT, \n                       KeyOperation.WRAP_KEY, KeyOperation.UNWRAP_KEY)\n    .setTags(Map.of(\"environment\", \"production\")));\n\n\u002F\u002F HSM-backed RSA key\nKeyVaultKey hsmKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-hsm-key\")\n    .setKeySize(2048)\n    .setHardwareProtected(true));\n",[593],{"type":51,"tag":81,"props":594,"children":595},{"__ignoreMap":78},[596,604,611,619,627,635,642,650,658,666,673,681,689,697,705,713,721,729,737,745,752,760,768,776],{"type":51,"tag":85,"props":597,"children":598},{"class":87,"line":88},[599],{"type":51,"tag":85,"props":600,"children":601},{},[602],{"type":57,"value":603},"import com.azure.security.keyvault.keys.models.*;\n",{"type":51,"tag":85,"props":605,"children":606},{"class":87,"line":97},[607],{"type":51,"tag":85,"props":608,"children":609},{"emptyLinePlaceholder":218},[610],{"type":57,"value":221},{"type":51,"tag":85,"props":612,"children":613},{"class":87,"line":106},[614],{"type":51,"tag":85,"props":615,"children":616},{},[617],{"type":57,"value":618},"\u002F\u002F Simple RSA key\n",{"type":51,"tag":85,"props":620,"children":621},{"class":87,"line":115},[622],{"type":51,"tag":85,"props":623,"children":624},{},[625],{"type":57,"value":626},"KeyVaultKey rsaKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key\")\n",{"type":51,"tag":85,"props":628,"children":629},{"class":87,"line":124},[630],{"type":51,"tag":85,"props":631,"children":632},{},[633],{"type":57,"value":634},"    .setKeySize(2048));\n",{"type":51,"tag":85,"props":636,"children":637},{"class":87,"line":187},[638],{"type":51,"tag":85,"props":639,"children":640},{"emptyLinePlaceholder":218},[641],{"type":57,"value":221},{"type":51,"tag":85,"props":643,"children":644},{"class":87,"line":196},[645],{"type":51,"tag":85,"props":646,"children":647},{},[648],{"type":57,"value":649},"System.out.println(\"Key name: \" + rsaKey.getName());\n",{"type":51,"tag":85,"props":651,"children":652},{"class":87,"line":205},[653],{"type":51,"tag":85,"props":654,"children":655},{},[656],{"type":57,"value":657},"System.out.println(\"Key ID: \" + rsaKey.getId());\n",{"type":51,"tag":85,"props":659,"children":660},{"class":87,"line":214},[661],{"type":51,"tag":85,"props":662,"children":663},{},[664],{"type":57,"value":665},"System.out.println(\"Key type: \" + rsaKey.getKeyType());\n",{"type":51,"tag":85,"props":667,"children":668},{"class":87,"line":224},[669],{"type":51,"tag":85,"props":670,"children":671},{"emptyLinePlaceholder":218},[672],{"type":57,"value":221},{"type":51,"tag":85,"props":674,"children":675},{"class":87,"line":233},[676],{"type":51,"tag":85,"props":677,"children":678},{},[679],{"type":57,"value":680},"\u002F\u002F RSA key with options\n",{"type":51,"tag":85,"props":682,"children":683},{"class":87,"line":242},[684],{"type":51,"tag":85,"props":685,"children":686},{},[687],{"type":57,"value":688},"KeyVaultKey rsaKeyWithOptions = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-rsa-key-2\")\n",{"type":51,"tag":85,"props":690,"children":691},{"class":87,"line":251},[692],{"type":51,"tag":85,"props":693,"children":694},{},[695],{"type":57,"value":696},"    .setKeySize(4096)\n",{"type":51,"tag":85,"props":698,"children":699},{"class":87,"line":260},[700],{"type":51,"tag":85,"props":701,"children":702},{},[703],{"type":57,"value":704},"    .setExpiresOn(OffsetDateTime.now().plusYears(1))\n",{"type":51,"tag":85,"props":706,"children":707},{"class":87,"line":269},[708],{"type":51,"tag":85,"props":709,"children":710},{},[711],{"type":57,"value":712},"    .setNotBefore(OffsetDateTime.now())\n",{"type":51,"tag":85,"props":714,"children":715},{"class":87,"line":278},[716],{"type":51,"tag":85,"props":717,"children":718},{},[719],{"type":57,"value":720},"    .setEnabled(true)\n",{"type":51,"tag":85,"props":722,"children":723},{"class":87,"line":287},[724],{"type":51,"tag":85,"props":725,"children":726},{},[727],{"type":57,"value":728},"    .setKeyOperations(KeyOperation.ENCRYPT, KeyOperation.DECRYPT, \n",{"type":51,"tag":85,"props":730,"children":731},{"class":87,"line":295},[732],{"type":51,"tag":85,"props":733,"children":734},{},[735],{"type":57,"value":736},"                       KeyOperation.WRAP_KEY, KeyOperation.UNWRAP_KEY)\n",{"type":51,"tag":85,"props":738,"children":739},{"class":87,"line":304},[740],{"type":51,"tag":85,"props":741,"children":742},{},[743],{"type":57,"value":744},"    .setTags(Map.of(\"environment\", \"production\")));\n",{"type":51,"tag":85,"props":746,"children":747},{"class":87,"line":313},[748],{"type":51,"tag":85,"props":749,"children":750},{"emptyLinePlaceholder":218},[751],{"type":57,"value":221},{"type":51,"tag":85,"props":753,"children":754},{"class":87,"line":322},[755],{"type":51,"tag":85,"props":756,"children":757},{},[758],{"type":57,"value":759},"\u002F\u002F HSM-backed RSA key\n",{"type":51,"tag":85,"props":761,"children":762},{"class":87,"line":331},[763],{"type":51,"tag":85,"props":764,"children":765},{},[766],{"type":57,"value":767},"KeyVaultKey hsmKey = keyClient.createRsaKey(new CreateRsaKeyOptions(\"my-hsm-key\")\n",{"type":51,"tag":85,"props":769,"children":770},{"class":87,"line":340},[771],{"type":51,"tag":85,"props":772,"children":773},{},[774],{"type":57,"value":775},"    .setKeySize(2048)\n",{"type":51,"tag":85,"props":777,"children":778},{"class":87,"line":348},[779],{"type":51,"tag":85,"props":780,"children":781},{},[782],{"type":57,"value":783},"    .setHardwareProtected(true));\n",{"type":51,"tag":583,"props":785,"children":787},{"id":786},"create-ec-key",[788],{"type":57,"value":789},"Create EC Key",{"type":51,"tag":73,"props":791,"children":793},{"className":139,"code":792,"language":21,"meta":78,"style":78},"\u002F\u002F EC key with P-256 curve\nKeyVaultKey ecKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key\")\n    .setCurveName(KeyCurveName.P_256));\n\n\u002F\u002F EC key with other curves\nKeyVaultKey ecKey384 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-384\")\n    .setCurveName(KeyCurveName.P_384));\n\nKeyVaultKey ecKey521 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-521\")\n    .setCurveName(KeyCurveName.P_521));\n\n\u002F\u002F HSM-backed EC key\nKeyVaultKey ecHsmKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-hsm-key\")\n    .setCurveName(KeyCurveName.P_256)\n    .setHardwareProtected(true));\n",[794],{"type":51,"tag":81,"props":795,"children":796},{"__ignoreMap":78},[797,805,813,821,828,836,844,852,859,867,875,882,890,898,906],{"type":51,"tag":85,"props":798,"children":799},{"class":87,"line":88},[800],{"type":51,"tag":85,"props":801,"children":802},{},[803],{"type":57,"value":804},"\u002F\u002F EC key with P-256 curve\n",{"type":51,"tag":85,"props":806,"children":807},{"class":87,"line":97},[808],{"type":51,"tag":85,"props":809,"children":810},{},[811],{"type":57,"value":812},"KeyVaultKey ecKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key\")\n",{"type":51,"tag":85,"props":814,"children":815},{"class":87,"line":106},[816],{"type":51,"tag":85,"props":817,"children":818},{},[819],{"type":57,"value":820},"    .setCurveName(KeyCurveName.P_256));\n",{"type":51,"tag":85,"props":822,"children":823},{"class":87,"line":115},[824],{"type":51,"tag":85,"props":825,"children":826},{"emptyLinePlaceholder":218},[827],{"type":57,"value":221},{"type":51,"tag":85,"props":829,"children":830},{"class":87,"line":124},[831],{"type":51,"tag":85,"props":832,"children":833},{},[834],{"type":57,"value":835},"\u002F\u002F EC key with other curves\n",{"type":51,"tag":85,"props":837,"children":838},{"class":87,"line":187},[839],{"type":51,"tag":85,"props":840,"children":841},{},[842],{"type":57,"value":843},"KeyVaultKey ecKey384 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-384\")\n",{"type":51,"tag":85,"props":845,"children":846},{"class":87,"line":196},[847],{"type":51,"tag":85,"props":848,"children":849},{},[850],{"type":57,"value":851},"    .setCurveName(KeyCurveName.P_384));\n",{"type":51,"tag":85,"props":853,"children":854},{"class":87,"line":205},[855],{"type":51,"tag":85,"props":856,"children":857},{"emptyLinePlaceholder":218},[858],{"type":57,"value":221},{"type":51,"tag":85,"props":860,"children":861},{"class":87,"line":214},[862],{"type":51,"tag":85,"props":863,"children":864},{},[865],{"type":57,"value":866},"KeyVaultKey ecKey521 = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-key-521\")\n",{"type":51,"tag":85,"props":868,"children":869},{"class":87,"line":224},[870],{"type":51,"tag":85,"props":871,"children":872},{},[873],{"type":57,"value":874},"    .setCurveName(KeyCurveName.P_521));\n",{"type":51,"tag":85,"props":876,"children":877},{"class":87,"line":233},[878],{"type":51,"tag":85,"props":879,"children":880},{"emptyLinePlaceholder":218},[881],{"type":57,"value":221},{"type":51,"tag":85,"props":883,"children":884},{"class":87,"line":242},[885],{"type":51,"tag":85,"props":886,"children":887},{},[888],{"type":57,"value":889},"\u002F\u002F HSM-backed EC key\n",{"type":51,"tag":85,"props":891,"children":892},{"class":87,"line":251},[893],{"type":51,"tag":85,"props":894,"children":895},{},[896],{"type":57,"value":897},"KeyVaultKey ecHsmKey = keyClient.createEcKey(new CreateEcKeyOptions(\"my-ec-hsm-key\")\n",{"type":51,"tag":85,"props":899,"children":900},{"class":87,"line":260},[901],{"type":51,"tag":85,"props":902,"children":903},{},[904],{"type":57,"value":905},"    .setCurveName(KeyCurveName.P_256)\n",{"type":51,"tag":85,"props":907,"children":908},{"class":87,"line":269},[909],{"type":51,"tag":85,"props":910,"children":911},{},[912],{"type":57,"value":783},{"type":51,"tag":583,"props":914,"children":916},{"id":915},"create-symmetric-key-managed-hsm-only",[917],{"type":57,"value":918},"Create Symmetric Key (Managed HSM only)",{"type":51,"tag":73,"props":920,"children":922},{"className":139,"code":921,"language":21,"meta":78,"style":78},"KeyVaultKey octKey = keyClient.createOctKey(new CreateOctKeyOptions(\"my-symmetric-key\")\n    .setKeySize(256)\n    .setHardwareProtected(true));\n",[923],{"type":51,"tag":81,"props":924,"children":925},{"__ignoreMap":78},[926,934,942],{"type":51,"tag":85,"props":927,"children":928},{"class":87,"line":88},[929],{"type":51,"tag":85,"props":930,"children":931},{},[932],{"type":57,"value":933},"KeyVaultKey octKey = keyClient.createOctKey(new CreateOctKeyOptions(\"my-symmetric-key\")\n",{"type":51,"tag":85,"props":935,"children":936},{"class":87,"line":97},[937],{"type":51,"tag":85,"props":938,"children":939},{},[940],{"type":57,"value":941},"    .setKeySize(256)\n",{"type":51,"tag":85,"props":943,"children":944},{"class":87,"line":106},[945],{"type":51,"tag":85,"props":946,"children":947},{},[948],{"type":57,"value":783},{"type":51,"tag":66,"props":950,"children":952},{"id":951},"get-key",[953],{"type":57,"value":954},"Get Key",{"type":51,"tag":73,"props":956,"children":958},{"className":139,"code":957,"language":21,"meta":78,"style":78},"\u002F\u002F Get latest version\nKeyVaultKey key = keyClient.getKey(\"my-key\");\n\n\u002F\u002F Get specific version\nKeyVaultKey keyVersion = keyClient.getKey(\"my-key\", \"\u003Cversion-id>\");\n\n\u002F\u002F Get only key properties (no key material)\nKeyProperties keyProps = keyClient.getKey(\"my-key\").getProperties();\n",[959],{"type":51,"tag":81,"props":960,"children":961},{"__ignoreMap":78},[962,970,978,985,993,1001,1008,1016],{"type":51,"tag":85,"props":963,"children":964},{"class":87,"line":88},[965],{"type":51,"tag":85,"props":966,"children":967},{},[968],{"type":57,"value":969},"\u002F\u002F Get latest version\n",{"type":51,"tag":85,"props":971,"children":972},{"class":87,"line":97},[973],{"type":51,"tag":85,"props":974,"children":975},{},[976],{"type":57,"value":977},"KeyVaultKey key = keyClient.getKey(\"my-key\");\n",{"type":51,"tag":85,"props":979,"children":980},{"class":87,"line":106},[981],{"type":51,"tag":85,"props":982,"children":983},{"emptyLinePlaceholder":218},[984],{"type":57,"value":221},{"type":51,"tag":85,"props":986,"children":987},{"class":87,"line":115},[988],{"type":51,"tag":85,"props":989,"children":990},{},[991],{"type":57,"value":992},"\u002F\u002F Get specific version\n",{"type":51,"tag":85,"props":994,"children":995},{"class":87,"line":124},[996],{"type":51,"tag":85,"props":997,"children":998},{},[999],{"type":57,"value":1000},"KeyVaultKey keyVersion = keyClient.getKey(\"my-key\", \"\u003Cversion-id>\");\n",{"type":51,"tag":85,"props":1002,"children":1003},{"class":87,"line":187},[1004],{"type":51,"tag":85,"props":1005,"children":1006},{"emptyLinePlaceholder":218},[1007],{"type":57,"value":221},{"type":51,"tag":85,"props":1009,"children":1010},{"class":87,"line":196},[1011],{"type":51,"tag":85,"props":1012,"children":1013},{},[1014],{"type":57,"value":1015},"\u002F\u002F Get only key properties (no key material)\n",{"type":51,"tag":85,"props":1017,"children":1018},{"class":87,"line":205},[1019],{"type":51,"tag":85,"props":1020,"children":1021},{},[1022],{"type":57,"value":1023},"KeyProperties keyProps = keyClient.getKey(\"my-key\").getProperties();\n",{"type":51,"tag":66,"props":1025,"children":1027},{"id":1026},"update-key-properties",[1028],{"type":57,"value":1029},"Update Key Properties",{"type":51,"tag":73,"props":1031,"children":1033},{"className":139,"code":1032,"language":21,"meta":78,"style":78},"KeyVaultKey key = keyClient.getKey(\"my-key\");\n\n\u002F\u002F Update properties\nkey.getProperties()\n    .setEnabled(false)\n    .setExpiresOn(OffsetDateTime.now().plusMonths(6))\n    .setTags(Map.of(\"status\", \"archived\"));\n\nKeyVaultKey updatedKey = keyClient.updateKeyProperties(key.getProperties(),\n    KeyOperation.ENCRYPT, KeyOperation.DECRYPT);\n",[1034],{"type":51,"tag":81,"props":1035,"children":1036},{"__ignoreMap":78},[1037,1044,1051,1059,1067,1075,1083,1091,1098,1106],{"type":51,"tag":85,"props":1038,"children":1039},{"class":87,"line":88},[1040],{"type":51,"tag":85,"props":1041,"children":1042},{},[1043],{"type":57,"value":977},{"type":51,"tag":85,"props":1045,"children":1046},{"class":87,"line":97},[1047],{"type":51,"tag":85,"props":1048,"children":1049},{"emptyLinePlaceholder":218},[1050],{"type":57,"value":221},{"type":51,"tag":85,"props":1052,"children":1053},{"class":87,"line":106},[1054],{"type":51,"tag":85,"props":1055,"children":1056},{},[1057],{"type":57,"value":1058},"\u002F\u002F Update properties\n",{"type":51,"tag":85,"props":1060,"children":1061},{"class":87,"line":115},[1062],{"type":51,"tag":85,"props":1063,"children":1064},{},[1065],{"type":57,"value":1066},"key.getProperties()\n",{"type":51,"tag":85,"props":1068,"children":1069},{"class":87,"line":124},[1070],{"type":51,"tag":85,"props":1071,"children":1072},{},[1073],{"type":57,"value":1074},"    .setEnabled(false)\n",{"type":51,"tag":85,"props":1076,"children":1077},{"class":87,"line":187},[1078],{"type":51,"tag":85,"props":1079,"children":1080},{},[1081],{"type":57,"value":1082},"    .setExpiresOn(OffsetDateTime.now().plusMonths(6))\n",{"type":51,"tag":85,"props":1084,"children":1085},{"class":87,"line":196},[1086],{"type":51,"tag":85,"props":1087,"children":1088},{},[1089],{"type":57,"value":1090},"    .setTags(Map.of(\"status\", \"archived\"));\n",{"type":51,"tag":85,"props":1092,"children":1093},{"class":87,"line":205},[1094],{"type":51,"tag":85,"props":1095,"children":1096},{"emptyLinePlaceholder":218},[1097],{"type":57,"value":221},{"type":51,"tag":85,"props":1099,"children":1100},{"class":87,"line":214},[1101],{"type":51,"tag":85,"props":1102,"children":1103},{},[1104],{"type":57,"value":1105},"KeyVaultKey updatedKey = keyClient.updateKeyProperties(key.getProperties(),\n",{"type":51,"tag":85,"props":1107,"children":1108},{"class":87,"line":224},[1109],{"type":51,"tag":85,"props":1110,"children":1111},{},[1112],{"type":57,"value":1113},"    KeyOperation.ENCRYPT, KeyOperation.DECRYPT);\n",{"type":51,"tag":66,"props":1115,"children":1117},{"id":1116},"list-keys",[1118],{"type":57,"value":1119},"List Keys",{"type":51,"tag":73,"props":1121,"children":1123},{"className":139,"code":1122,"language":21,"meta":78,"style":78},"import com.azure.core.util.paging.PagedIterable;\n\n\u002F\u002F List all keys\nfor (KeyProperties keyProps : keyClient.listPropertiesOfKeys()) {\n    System.out.println(\"Key: \" + keyProps.getName());\n    System.out.println(\"  Enabled: \" + keyProps.isEnabled());\n    System.out.println(\"  Created: \" + keyProps.getCreatedOn());\n}\n\n\u002F\u002F List key versions\nfor (KeyProperties version : keyClient.listPropertiesOfKeyVersions(\"my-key\")) {\n    System.out.println(\"Version: \" + version.getVersion());\n    System.out.println(\"Created: \" + version.getCreatedOn());\n}\n",[1124],{"type":51,"tag":81,"props":1125,"children":1126},{"__ignoreMap":78},[1127,1135,1142,1150,1158,1166,1174,1182,1190,1197,1205,1213,1221,1229],{"type":51,"tag":85,"props":1128,"children":1129},{"class":87,"line":88},[1130],{"type":51,"tag":85,"props":1131,"children":1132},{},[1133],{"type":57,"value":1134},"import com.azure.core.util.paging.PagedIterable;\n",{"type":51,"tag":85,"props":1136,"children":1137},{"class":87,"line":97},[1138],{"type":51,"tag":85,"props":1139,"children":1140},{"emptyLinePlaceholder":218},[1141],{"type":57,"value":221},{"type":51,"tag":85,"props":1143,"children":1144},{"class":87,"line":106},[1145],{"type":51,"tag":85,"props":1146,"children":1147},{},[1148],{"type":57,"value":1149},"\u002F\u002F List all keys\n",{"type":51,"tag":85,"props":1151,"children":1152},{"class":87,"line":115},[1153],{"type":51,"tag":85,"props":1154,"children":1155},{},[1156],{"type":57,"value":1157},"for (KeyProperties keyProps : keyClient.listPropertiesOfKeys()) {\n",{"type":51,"tag":85,"props":1159,"children":1160},{"class":87,"line":124},[1161],{"type":51,"tag":85,"props":1162,"children":1163},{},[1164],{"type":57,"value":1165},"    System.out.println(\"Key: \" + keyProps.getName());\n",{"type":51,"tag":85,"props":1167,"children":1168},{"class":87,"line":187},[1169],{"type":51,"tag":85,"props":1170,"children":1171},{},[1172],{"type":57,"value":1173},"    System.out.println(\"  Enabled: \" + keyProps.isEnabled());\n",{"type":51,"tag":85,"props":1175,"children":1176},{"class":87,"line":196},[1177],{"type":51,"tag":85,"props":1178,"children":1179},{},[1180],{"type":57,"value":1181},"    System.out.println(\"  Created: \" + keyProps.getCreatedOn());\n",{"type":51,"tag":85,"props":1183,"children":1184},{"class":87,"line":205},[1185],{"type":51,"tag":85,"props":1186,"children":1187},{},[1188],{"type":57,"value":1189},"}\n",{"type":51,"tag":85,"props":1191,"children":1192},{"class":87,"line":214},[1193],{"type":51,"tag":85,"props":1194,"children":1195},{"emptyLinePlaceholder":218},[1196],{"type":57,"value":221},{"type":51,"tag":85,"props":1198,"children":1199},{"class":87,"line":224},[1200],{"type":51,"tag":85,"props":1201,"children":1202},{},[1203],{"type":57,"value":1204},"\u002F\u002F List key versions\n",{"type":51,"tag":85,"props":1206,"children":1207},{"class":87,"line":233},[1208],{"type":51,"tag":85,"props":1209,"children":1210},{},[1211],{"type":57,"value":1212},"for (KeyProperties version : keyClient.listPropertiesOfKeyVersions(\"my-key\")) {\n",{"type":51,"tag":85,"props":1214,"children":1215},{"class":87,"line":242},[1216],{"type":51,"tag":85,"props":1217,"children":1218},{},[1219],{"type":57,"value":1220},"    System.out.println(\"Version: \" + version.getVersion());\n",{"type":51,"tag":85,"props":1222,"children":1223},{"class":87,"line":251},[1224],{"type":51,"tag":85,"props":1225,"children":1226},{},[1227],{"type":57,"value":1228},"    System.out.println(\"Created: \" + version.getCreatedOn());\n",{"type":51,"tag":85,"props":1230,"children":1231},{"class":87,"line":260},[1232],{"type":51,"tag":85,"props":1233,"children":1234},{},[1235],{"type":57,"value":1189},{"type":51,"tag":66,"props":1237,"children":1239},{"id":1238},"delete-key",[1240],{"type":57,"value":1241},"Delete Key",{"type":51,"tag":73,"props":1243,"children":1245},{"className":139,"code":1244,"language":21,"meta":78,"style":78},"import com.azure.core.util.polling.SyncPoller;\n\n\u002F\u002F Begin delete (soft-delete enabled vaults)\nSyncPoller\u003CDeletedKey, Void> deletePoller = keyClient.beginDeleteKey(\"my-key\");\n\n\u002F\u002F Wait for deletion\nDeletedKey deletedKey = deletePoller.poll().getValue();\nSystem.out.println(\"Deleted: \" + deletedKey.getDeletedOn());\n\ndeletePoller.waitForCompletion();\n\n\u002F\u002F Purge deleted key (permanent deletion)\nkeyClient.purgeDeletedKey(\"my-key\");\n\n\u002F\u002F Recover deleted key\nSyncPoller\u003CKeyVaultKey, Void> recoverPoller = keyClient.beginRecoverDeletedKey(\"my-key\");\nrecoverPoller.waitForCompletion();\n",[1246],{"type":51,"tag":81,"props":1247,"children":1248},{"__ignoreMap":78},[1249,1257,1264,1272,1280,1287,1295,1303,1311,1318,1326,1333,1341,1349,1356,1364,1372],{"type":51,"tag":85,"props":1250,"children":1251},{"class":87,"line":88},[1252],{"type":51,"tag":85,"props":1253,"children":1254},{},[1255],{"type":57,"value":1256},"import com.azure.core.util.polling.SyncPoller;\n",{"type":51,"tag":85,"props":1258,"children":1259},{"class":87,"line":97},[1260],{"type":51,"tag":85,"props":1261,"children":1262},{"emptyLinePlaceholder":218},[1263],{"type":57,"value":221},{"type":51,"tag":85,"props":1265,"children":1266},{"class":87,"line":106},[1267],{"type":51,"tag":85,"props":1268,"children":1269},{},[1270],{"type":57,"value":1271},"\u002F\u002F Begin delete (soft-delete enabled vaults)\n",{"type":51,"tag":85,"props":1273,"children":1274},{"class":87,"line":115},[1275],{"type":51,"tag":85,"props":1276,"children":1277},{},[1278],{"type":57,"value":1279},"SyncPoller\u003CDeletedKey, Void> deletePoller = keyClient.beginDeleteKey(\"my-key\");\n",{"type":51,"tag":85,"props":1281,"children":1282},{"class":87,"line":124},[1283],{"type":51,"tag":85,"props":1284,"children":1285},{"emptyLinePlaceholder":218},[1286],{"type":57,"value":221},{"type":51,"tag":85,"props":1288,"children":1289},{"class":87,"line":187},[1290],{"type":51,"tag":85,"props":1291,"children":1292},{},[1293],{"type":57,"value":1294},"\u002F\u002F Wait for deletion\n",{"type":51,"tag":85,"props":1296,"children":1297},{"class":87,"line":196},[1298],{"type":51,"tag":85,"props":1299,"children":1300},{},[1301],{"type":57,"value":1302},"DeletedKey deletedKey = deletePoller.poll().getValue();\n",{"type":51,"tag":85,"props":1304,"children":1305},{"class":87,"line":205},[1306],{"type":51,"tag":85,"props":1307,"children":1308},{},[1309],{"type":57,"value":1310},"System.out.println(\"Deleted: \" + deletedKey.getDeletedOn());\n",{"type":51,"tag":85,"props":1312,"children":1313},{"class":87,"line":214},[1314],{"type":51,"tag":85,"props":1315,"children":1316},{"emptyLinePlaceholder":218},[1317],{"type":57,"value":221},{"type":51,"tag":85,"props":1319,"children":1320},{"class":87,"line":224},[1321],{"type":51,"tag":85,"props":1322,"children":1323},{},[1324],{"type":57,"value":1325},"deletePoller.waitForCompletion();\n",{"type":51,"tag":85,"props":1327,"children":1328},{"class":87,"line":233},[1329],{"type":51,"tag":85,"props":1330,"children":1331},{"emptyLinePlaceholder":218},[1332],{"type":57,"value":221},{"type":51,"tag":85,"props":1334,"children":1335},{"class":87,"line":242},[1336],{"type":51,"tag":85,"props":1337,"children":1338},{},[1339],{"type":57,"value":1340},"\u002F\u002F Purge deleted key (permanent deletion)\n",{"type":51,"tag":85,"props":1342,"children":1343},{"class":87,"line":251},[1344],{"type":51,"tag":85,"props":1345,"children":1346},{},[1347],{"type":57,"value":1348},"keyClient.purgeDeletedKey(\"my-key\");\n",{"type":51,"tag":85,"props":1350,"children":1351},{"class":87,"line":260},[1352],{"type":51,"tag":85,"props":1353,"children":1354},{"emptyLinePlaceholder":218},[1355],{"type":57,"value":221},{"type":51,"tag":85,"props":1357,"children":1358},{"class":87,"line":269},[1359],{"type":51,"tag":85,"props":1360,"children":1361},{},[1362],{"type":57,"value":1363},"\u002F\u002F Recover deleted key\n",{"type":51,"tag":85,"props":1365,"children":1366},{"class":87,"line":278},[1367],{"type":51,"tag":85,"props":1368,"children":1369},{},[1370],{"type":57,"value":1371},"SyncPoller\u003CKeyVaultKey, Void> recoverPoller = keyClient.beginRecoverDeletedKey(\"my-key\");\n",{"type":51,"tag":85,"props":1373,"children":1374},{"class":87,"line":287},[1375],{"type":51,"tag":85,"props":1376,"children":1377},{},[1378],{"type":57,"value":1379},"recoverPoller.waitForCompletion();\n",{"type":51,"tag":66,"props":1381,"children":1383},{"id":1382},"cryptographic-operations",[1384],{"type":57,"value":1385},"Cryptographic Operations",{"type":51,"tag":583,"props":1387,"children":1389},{"id":1388},"encryptdecrypt",[1390],{"type":57,"value":1391},"Encrypt\u002FDecrypt",{"type":51,"tag":73,"props":1393,"children":1395},{"className":139,"code":1394,"language":21,"meta":78,"style":78},"import com.azure.security.keyvault.keys.cryptography.models.*;\n\nCryptographyClient cryptoClient = new CryptographyClientBuilder()\n    .keyIdentifier(\"https:\u002F\u002F\u003Cvault>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\")\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .buildClient();\n\nbyte[] plaintext = \"Hello, World!\".getBytes(StandardCharsets.UTF_8);\n\n\u002F\u002F Encrypt\nEncryptResult encryptResult = cryptoClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext);\nbyte[] ciphertext = encryptResult.getCipherText();\nSystem.out.println(\"Ciphertext length: \" + ciphertext.length);\n\n\u002F\u002F Decrypt\nDecryptResult decryptResult = cryptoClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext);\nString decrypted = new String(decryptResult.getPlainText(), StandardCharsets.UTF_8);\nSystem.out.println(\"Decrypted: \" + decrypted);\n",[1396],{"type":51,"tag":81,"props":1397,"children":1398},{"__ignoreMap":78},[1399,1407,1414,1421,1429,1437,1444,1451,1459,1466,1474,1482,1490,1498,1505,1513,1521,1529],{"type":51,"tag":85,"props":1400,"children":1401},{"class":87,"line":88},[1402],{"type":51,"tag":85,"props":1403,"children":1404},{},[1405],{"type":57,"value":1406},"import com.azure.security.keyvault.keys.cryptography.models.*;\n",{"type":51,"tag":85,"props":1408,"children":1409},{"class":87,"line":97},[1410],{"type":51,"tag":85,"props":1411,"children":1412},{"emptyLinePlaceholder":218},[1413],{"type":57,"value":221},{"type":51,"tag":85,"props":1415,"children":1416},{"class":87,"line":106},[1417],{"type":51,"tag":85,"props":1418,"children":1419},{},[1420],{"type":57,"value":414},{"type":51,"tag":85,"props":1422,"children":1423},{"class":87,"line":115},[1424],{"type":51,"tag":85,"props":1425,"children":1426},{},[1427],{"type":57,"value":1428},"    .keyIdentifier(\"https:\u002F\u002F\u003Cvault>.vault.azure.net\u002Fkeys\u002F\u003Ckey-name>\")\n",{"type":51,"tag":85,"props":1430,"children":1431},{"class":87,"line":124},[1432],{"type":51,"tag":85,"props":1433,"children":1434},{},[1435],{"type":57,"value":1436},"    .credential(new DefaultAzureCredentialBuilder().build())\n",{"type":51,"tag":85,"props":1438,"children":1439},{"class":87,"line":187},[1440],{"type":51,"tag":85,"props":1441,"children":1442},{},[1443],{"type":57,"value":337},{"type":51,"tag":85,"props":1445,"children":1446},{"class":87,"line":196},[1447],{"type":51,"tag":85,"props":1448,"children":1449},{"emptyLinePlaceholder":218},[1450],{"type":57,"value":221},{"type":51,"tag":85,"props":1452,"children":1453},{"class":87,"line":205},[1454],{"type":51,"tag":85,"props":1455,"children":1456},{},[1457],{"type":57,"value":1458},"byte[] plaintext = \"Hello, World!\".getBytes(StandardCharsets.UTF_8);\n",{"type":51,"tag":85,"props":1460,"children":1461},{"class":87,"line":214},[1462],{"type":51,"tag":85,"props":1463,"children":1464},{"emptyLinePlaceholder":218},[1465],{"type":57,"value":221},{"type":51,"tag":85,"props":1467,"children":1468},{"class":87,"line":224},[1469],{"type":51,"tag":85,"props":1470,"children":1471},{},[1472],{"type":57,"value":1473},"\u002F\u002F Encrypt\n",{"type":51,"tag":85,"props":1475,"children":1476},{"class":87,"line":233},[1477],{"type":51,"tag":85,"props":1478,"children":1479},{},[1480],{"type":57,"value":1481},"EncryptResult encryptResult = cryptoClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext);\n",{"type":51,"tag":85,"props":1483,"children":1484},{"class":87,"line":242},[1485],{"type":51,"tag":85,"props":1486,"children":1487},{},[1488],{"type":57,"value":1489},"byte[] ciphertext = encryptResult.getCipherText();\n",{"type":51,"tag":85,"props":1491,"children":1492},{"class":87,"line":251},[1493],{"type":51,"tag":85,"props":1494,"children":1495},{},[1496],{"type":57,"value":1497},"System.out.println(\"Ciphertext length: \" + ciphertext.length);\n",{"type":51,"tag":85,"props":1499,"children":1500},{"class":87,"line":260},[1501],{"type":51,"tag":85,"props":1502,"children":1503},{"emptyLinePlaceholder":218},[1504],{"type":57,"value":221},{"type":51,"tag":85,"props":1506,"children":1507},{"class":87,"line":269},[1508],{"type":51,"tag":85,"props":1509,"children":1510},{},[1511],{"type":57,"value":1512},"\u002F\u002F Decrypt\n",{"type":51,"tag":85,"props":1514,"children":1515},{"class":87,"line":278},[1516],{"type":51,"tag":85,"props":1517,"children":1518},{},[1519],{"type":57,"value":1520},"DecryptResult decryptResult = cryptoClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext);\n",{"type":51,"tag":85,"props":1522,"children":1523},{"class":87,"line":287},[1524],{"type":51,"tag":85,"props":1525,"children":1526},{},[1527],{"type":57,"value":1528},"String decrypted = new String(decryptResult.getPlainText(), StandardCharsets.UTF_8);\n",{"type":51,"tag":85,"props":1530,"children":1531},{"class":87,"line":295},[1532],{"type":51,"tag":85,"props":1533,"children":1534},{},[1535],{"type":57,"value":1536},"System.out.println(\"Decrypted: \" + decrypted);\n",{"type":51,"tag":583,"props":1538,"children":1540},{"id":1539},"signverify",[1541],{"type":57,"value":1542},"Sign\u002FVerify",{"type":51,"tag":73,"props":1544,"children":1546},{"className":139,"code":1545,"language":21,"meta":78,"style":78},"import java.security.MessageDigest;\n\n\u002F\u002F Create digest of data\nbyte[] data = \"Data to sign\".getBytes(StandardCharsets.UTF_8);\nMessageDigest md = MessageDigest.getInstance(\"SHA-256\");\nbyte[] digest = md.digest(data);\n\n\u002F\u002F Sign\nSignResult signResult = cryptoClient.sign(SignatureAlgorithm.RS256, digest);\nbyte[] signature = signResult.getSignature();\n\n\u002F\u002F Verify\nVerifyResult verifyResult = cryptoClient.verify(SignatureAlgorithm.RS256, digest, signature);\nSystem.out.println(\"Valid signature: \" + verifyResult.isValid());\n",[1547],{"type":51,"tag":81,"props":1548,"children":1549},{"__ignoreMap":78},[1550,1558,1565,1573,1581,1589,1597,1604,1612,1620,1628,1635,1643,1651],{"type":51,"tag":85,"props":1551,"children":1552},{"class":87,"line":88},[1553],{"type":51,"tag":85,"props":1554,"children":1555},{},[1556],{"type":57,"value":1557},"import java.security.MessageDigest;\n",{"type":51,"tag":85,"props":1559,"children":1560},{"class":87,"line":97},[1561],{"type":51,"tag":85,"props":1562,"children":1563},{"emptyLinePlaceholder":218},[1564],{"type":57,"value":221},{"type":51,"tag":85,"props":1566,"children":1567},{"class":87,"line":106},[1568],{"type":51,"tag":85,"props":1569,"children":1570},{},[1571],{"type":57,"value":1572},"\u002F\u002F Create digest of data\n",{"type":51,"tag":85,"props":1574,"children":1575},{"class":87,"line":115},[1576],{"type":51,"tag":85,"props":1577,"children":1578},{},[1579],{"type":57,"value":1580},"byte[] data = \"Data to sign\".getBytes(StandardCharsets.UTF_8);\n",{"type":51,"tag":85,"props":1582,"children":1583},{"class":87,"line":124},[1584],{"type":51,"tag":85,"props":1585,"children":1586},{},[1587],{"type":57,"value":1588},"MessageDigest md = MessageDigest.getInstance(\"SHA-256\");\n",{"type":51,"tag":85,"props":1590,"children":1591},{"class":87,"line":187},[1592],{"type":51,"tag":85,"props":1593,"children":1594},{},[1595],{"type":57,"value":1596},"byte[] digest = md.digest(data);\n",{"type":51,"tag":85,"props":1598,"children":1599},{"class":87,"line":196},[1600],{"type":51,"tag":85,"props":1601,"children":1602},{"emptyLinePlaceholder":218},[1603],{"type":57,"value":221},{"type":51,"tag":85,"props":1605,"children":1606},{"class":87,"line":205},[1607],{"type":51,"tag":85,"props":1608,"children":1609},{},[1610],{"type":57,"value":1611},"\u002F\u002F Sign\n",{"type":51,"tag":85,"props":1613,"children":1614},{"class":87,"line":214},[1615],{"type":51,"tag":85,"props":1616,"children":1617},{},[1618],{"type":57,"value":1619},"SignResult signResult = cryptoClient.sign(SignatureAlgorithm.RS256, digest);\n",{"type":51,"tag":85,"props":1621,"children":1622},{"class":87,"line":224},[1623],{"type":51,"tag":85,"props":1624,"children":1625},{},[1626],{"type":57,"value":1627},"byte[] signature = signResult.getSignature();\n",{"type":51,"tag":85,"props":1629,"children":1630},{"class":87,"line":233},[1631],{"type":51,"tag":85,"props":1632,"children":1633},{"emptyLinePlaceholder":218},[1634],{"type":57,"value":221},{"type":51,"tag":85,"props":1636,"children":1637},{"class":87,"line":242},[1638],{"type":51,"tag":85,"props":1639,"children":1640},{},[1641],{"type":57,"value":1642},"\u002F\u002F Verify\n",{"type":51,"tag":85,"props":1644,"children":1645},{"class":87,"line":251},[1646],{"type":51,"tag":85,"props":1647,"children":1648},{},[1649],{"type":57,"value":1650},"VerifyResult verifyResult = cryptoClient.verify(SignatureAlgorithm.RS256, digest, signature);\n",{"type":51,"tag":85,"props":1652,"children":1653},{"class":87,"line":260},[1654],{"type":51,"tag":85,"props":1655,"children":1656},{},[1657],{"type":57,"value":1658},"System.out.println(\"Valid signature: \" + verifyResult.isValid());\n",{"type":51,"tag":583,"props":1660,"children":1662},{"id":1661},"wrapunwrap-key",[1663],{"type":57,"value":1664},"Wrap\u002FUnwrap Key",{"type":51,"tag":73,"props":1666,"children":1668},{"className":139,"code":1667,"language":21,"meta":78,"style":78},"\u002F\u002F Key to wrap (e.g., AES key)\nbyte[] keyToWrap = new byte[32];  \u002F\u002F 256-bit key\nnew SecureRandom().nextBytes(keyToWrap);\n\n\u002F\u002F Wrap\nWrapResult wrapResult = cryptoClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyToWrap);\nbyte[] wrappedKey = wrapResult.getEncryptedKey();\n\n\u002F\u002F Unwrap\nUnwrapResult unwrapResult = cryptoClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP, wrappedKey);\nbyte[] unwrappedKey = unwrapResult.getKey();\n",[1669],{"type":51,"tag":81,"props":1670,"children":1671},{"__ignoreMap":78},[1672,1680,1688,1696,1703,1711,1719,1727,1734,1742,1750],{"type":51,"tag":85,"props":1673,"children":1674},{"class":87,"line":88},[1675],{"type":51,"tag":85,"props":1676,"children":1677},{},[1678],{"type":57,"value":1679},"\u002F\u002F Key to wrap (e.g., AES key)\n",{"type":51,"tag":85,"props":1681,"children":1682},{"class":87,"line":97},[1683],{"type":51,"tag":85,"props":1684,"children":1685},{},[1686],{"type":57,"value":1687},"byte[] keyToWrap = new byte[32];  \u002F\u002F 256-bit key\n",{"type":51,"tag":85,"props":1689,"children":1690},{"class":87,"line":106},[1691],{"type":51,"tag":85,"props":1692,"children":1693},{},[1694],{"type":57,"value":1695},"new SecureRandom().nextBytes(keyToWrap);\n",{"type":51,"tag":85,"props":1697,"children":1698},{"class":87,"line":115},[1699],{"type":51,"tag":85,"props":1700,"children":1701},{"emptyLinePlaceholder":218},[1702],{"type":57,"value":221},{"type":51,"tag":85,"props":1704,"children":1705},{"class":87,"line":124},[1706],{"type":51,"tag":85,"props":1707,"children":1708},{},[1709],{"type":57,"value":1710},"\u002F\u002F Wrap\n",{"type":51,"tag":85,"props":1712,"children":1713},{"class":87,"line":187},[1714],{"type":51,"tag":85,"props":1715,"children":1716},{},[1717],{"type":57,"value":1718},"WrapResult wrapResult = cryptoClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyToWrap);\n",{"type":51,"tag":85,"props":1720,"children":1721},{"class":87,"line":196},[1722],{"type":51,"tag":85,"props":1723,"children":1724},{},[1725],{"type":57,"value":1726},"byte[] wrappedKey = wrapResult.getEncryptedKey();\n",{"type":51,"tag":85,"props":1728,"children":1729},{"class":87,"line":205},[1730],{"type":51,"tag":85,"props":1731,"children":1732},{"emptyLinePlaceholder":218},[1733],{"type":57,"value":221},{"type":51,"tag":85,"props":1735,"children":1736},{"class":87,"line":214},[1737],{"type":51,"tag":85,"props":1738,"children":1739},{},[1740],{"type":57,"value":1741},"\u002F\u002F Unwrap\n",{"type":51,"tag":85,"props":1743,"children":1744},{"class":87,"line":224},[1745],{"type":51,"tag":85,"props":1746,"children":1747},{},[1748],{"type":57,"value":1749},"UnwrapResult unwrapResult = cryptoClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP, wrappedKey);\n",{"type":51,"tag":85,"props":1751,"children":1752},{"class":87,"line":233},[1753],{"type":51,"tag":85,"props":1754,"children":1755},{},[1756],{"type":57,"value":1757},"byte[] unwrappedKey = unwrapResult.getKey();\n",{"type":51,"tag":66,"props":1759,"children":1761},{"id":1760},"backup-and-restore",[1762],{"type":57,"value":1763},"Backup and Restore",{"type":51,"tag":73,"props":1765,"children":1767},{"className":139,"code":1766,"language":21,"meta":78,"style":78},"\u002F\u002F Backup\nbyte[] backup = keyClient.backupKey(\"my-key\");\n\n\u002F\u002F Save backup to file\nFiles.write(Paths.get(\"key-backup.blob\"), backup);\n\n\u002F\u002F Restore\nbyte[] backupData = Files.readAllBytes(Paths.get(\"key-backup.blob\"));\nKeyVaultKey restoredKey = keyClient.restoreKeyBackup(backupData);\n",[1768],{"type":51,"tag":81,"props":1769,"children":1770},{"__ignoreMap":78},[1771,1779,1787,1794,1802,1810,1817,1825,1833],{"type":51,"tag":85,"props":1772,"children":1773},{"class":87,"line":88},[1774],{"type":51,"tag":85,"props":1775,"children":1776},{},[1777],{"type":57,"value":1778},"\u002F\u002F Backup\n",{"type":51,"tag":85,"props":1780,"children":1781},{"class":87,"line":97},[1782],{"type":51,"tag":85,"props":1783,"children":1784},{},[1785],{"type":57,"value":1786},"byte[] backup = keyClient.backupKey(\"my-key\");\n",{"type":51,"tag":85,"props":1788,"children":1789},{"class":87,"line":106},[1790],{"type":51,"tag":85,"props":1791,"children":1792},{"emptyLinePlaceholder":218},[1793],{"type":57,"value":221},{"type":51,"tag":85,"props":1795,"children":1796},{"class":87,"line":115},[1797],{"type":51,"tag":85,"props":1798,"children":1799},{},[1800],{"type":57,"value":1801},"\u002F\u002F Save backup to file\n",{"type":51,"tag":85,"props":1803,"children":1804},{"class":87,"line":124},[1805],{"type":51,"tag":85,"props":1806,"children":1807},{},[1808],{"type":57,"value":1809},"Files.write(Paths.get(\"key-backup.blob\"), backup);\n",{"type":51,"tag":85,"props":1811,"children":1812},{"class":87,"line":187},[1813],{"type":51,"tag":85,"props":1814,"children":1815},{"emptyLinePlaceholder":218},[1816],{"type":57,"value":221},{"type":51,"tag":85,"props":1818,"children":1819},{"class":87,"line":196},[1820],{"type":51,"tag":85,"props":1821,"children":1822},{},[1823],{"type":57,"value":1824},"\u002F\u002F Restore\n",{"type":51,"tag":85,"props":1826,"children":1827},{"class":87,"line":205},[1828],{"type":51,"tag":85,"props":1829,"children":1830},{},[1831],{"type":57,"value":1832},"byte[] backupData = Files.readAllBytes(Paths.get(\"key-backup.blob\"));\n",{"type":51,"tag":85,"props":1834,"children":1835},{"class":87,"line":214},[1836],{"type":51,"tag":85,"props":1837,"children":1838},{},[1839],{"type":57,"value":1840},"KeyVaultKey restoredKey = keyClient.restoreKeyBackup(backupData);\n",{"type":51,"tag":66,"props":1842,"children":1844},{"id":1843},"key-rotation",[1845],{"type":57,"value":1846},"Key Rotation",{"type":51,"tag":73,"props":1848,"children":1850},{"className":139,"code":1849,"language":21,"meta":78,"style":78},"\u002F\u002F Rotate to new version\nKeyVaultKey rotatedKey = keyClient.rotateKey(\"my-key\");\nSystem.out.println(\"New version: \" + rotatedKey.getProperties().getVersion());\n\n\u002F\u002F Set rotation policy\nKeyRotationPolicy policy = new KeyRotationPolicy()\n    .setExpiresIn(\"P90D\")  \u002F\u002F Expire after 90 days\n    .setLifetimeActions(Arrays.asList(\n        new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)\n            .setTimeBeforeExpiry(\"P30D\")));  \u002F\u002F Rotate 30 days before expiry\n\nkeyClient.updateKeyRotationPolicy(\"my-key\", policy);\n\n\u002F\u002F Get rotation policy\nKeyRotationPolicy currentPolicy = keyClient.getKeyRotationPolicy(\"my-key\");\n",[1851],{"type":51,"tag":81,"props":1852,"children":1853},{"__ignoreMap":78},[1854,1862,1870,1878,1885,1893,1901,1909,1917,1925,1933,1940,1948,1955,1963],{"type":51,"tag":85,"props":1855,"children":1856},{"class":87,"line":88},[1857],{"type":51,"tag":85,"props":1858,"children":1859},{},[1860],{"type":57,"value":1861},"\u002F\u002F Rotate to new version\n",{"type":51,"tag":85,"props":1863,"children":1864},{"class":87,"line":97},[1865],{"type":51,"tag":85,"props":1866,"children":1867},{},[1868],{"type":57,"value":1869},"KeyVaultKey rotatedKey = keyClient.rotateKey(\"my-key\");\n",{"type":51,"tag":85,"props":1871,"children":1872},{"class":87,"line":106},[1873],{"type":51,"tag":85,"props":1874,"children":1875},{},[1876],{"type":57,"value":1877},"System.out.println(\"New version: \" + rotatedKey.getProperties().getVersion());\n",{"type":51,"tag":85,"props":1879,"children":1880},{"class":87,"line":115},[1881],{"type":51,"tag":85,"props":1882,"children":1883},{"emptyLinePlaceholder":218},[1884],{"type":57,"value":221},{"type":51,"tag":85,"props":1886,"children":1887},{"class":87,"line":124},[1888],{"type":51,"tag":85,"props":1889,"children":1890},{},[1891],{"type":57,"value":1892},"\u002F\u002F Set rotation policy\n",{"type":51,"tag":85,"props":1894,"children":1895},{"class":87,"line":187},[1896],{"type":51,"tag":85,"props":1897,"children":1898},{},[1899],{"type":57,"value":1900},"KeyRotationPolicy policy = new KeyRotationPolicy()\n",{"type":51,"tag":85,"props":1902,"children":1903},{"class":87,"line":196},[1904],{"type":51,"tag":85,"props":1905,"children":1906},{},[1907],{"type":57,"value":1908},"    .setExpiresIn(\"P90D\")  \u002F\u002F Expire after 90 days\n",{"type":51,"tag":85,"props":1910,"children":1911},{"class":87,"line":205},[1912],{"type":51,"tag":85,"props":1913,"children":1914},{},[1915],{"type":57,"value":1916},"    .setLifetimeActions(Arrays.asList(\n",{"type":51,"tag":85,"props":1918,"children":1919},{"class":87,"line":214},[1920],{"type":51,"tag":85,"props":1921,"children":1922},{},[1923],{"type":57,"value":1924},"        new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)\n",{"type":51,"tag":85,"props":1926,"children":1927},{"class":87,"line":224},[1928],{"type":51,"tag":85,"props":1929,"children":1930},{},[1931],{"type":57,"value":1932},"            .setTimeBeforeExpiry(\"P30D\")));  \u002F\u002F Rotate 30 days before expiry\n",{"type":51,"tag":85,"props":1934,"children":1935},{"class":87,"line":233},[1936],{"type":51,"tag":85,"props":1937,"children":1938},{"emptyLinePlaceholder":218},[1939],{"type":57,"value":221},{"type":51,"tag":85,"props":1941,"children":1942},{"class":87,"line":242},[1943],{"type":51,"tag":85,"props":1944,"children":1945},{},[1946],{"type":57,"value":1947},"keyClient.updateKeyRotationPolicy(\"my-key\", policy);\n",{"type":51,"tag":85,"props":1949,"children":1950},{"class":87,"line":251},[1951],{"type":51,"tag":85,"props":1952,"children":1953},{"emptyLinePlaceholder":218},[1954],{"type":57,"value":221},{"type":51,"tag":85,"props":1956,"children":1957},{"class":87,"line":260},[1958],{"type":51,"tag":85,"props":1959,"children":1960},{},[1961],{"type":57,"value":1962},"\u002F\u002F Get rotation policy\n",{"type":51,"tag":85,"props":1964,"children":1965},{"class":87,"line":269},[1966],{"type":51,"tag":85,"props":1967,"children":1968},{},[1969],{"type":57,"value":1970},"KeyRotationPolicy currentPolicy = keyClient.getKeyRotationPolicy(\"my-key\");\n",{"type":51,"tag":66,"props":1972,"children":1974},{"id":1973},"import-key",[1975],{"type":57,"value":1976},"Import Key",{"type":51,"tag":73,"props":1978,"children":1980},{"className":139,"code":1979,"language":21,"meta":78,"style":78},"import com.azure.security.keyvault.keys.models.ImportKeyOptions;\nimport com.azure.security.keyvault.keys.models.JsonWebKey;\n\n\u002F\u002F Import existing key material\nJsonWebKey jsonWebKey = new JsonWebKey()\n    .setKeyType(KeyType.RSA)\n    .setN(modulus)\n    .setE(exponent)\n    .setD(privateExponent)\n    \u002F\u002F ... other RSA components\n    ;\n\nImportKeyOptions importOptions = new ImportKeyOptions(\"imported-key\", jsonWebKey)\n    .setHardwareProtected(false);\n\nKeyVaultKey importedKey = keyClient.importKey(importOptions);\n",[1981],{"type":51,"tag":81,"props":1982,"children":1983},{"__ignoreMap":78},[1984,1992,2000,2007,2015,2023,2031,2039,2047,2055,2063,2071,2078,2086,2094,2101],{"type":51,"tag":85,"props":1985,"children":1986},{"class":87,"line":88},[1987],{"type":51,"tag":85,"props":1988,"children":1989},{},[1990],{"type":57,"value":1991},"import com.azure.security.keyvault.keys.models.ImportKeyOptions;\n",{"type":51,"tag":85,"props":1993,"children":1994},{"class":87,"line":97},[1995],{"type":51,"tag":85,"props":1996,"children":1997},{},[1998],{"type":57,"value":1999},"import com.azure.security.keyvault.keys.models.JsonWebKey;\n",{"type":51,"tag":85,"props":2001,"children":2002},{"class":87,"line":106},[2003],{"type":51,"tag":85,"props":2004,"children":2005},{"emptyLinePlaceholder":218},[2006],{"type":57,"value":221},{"type":51,"tag":85,"props":2008,"children":2009},{"class":87,"line":115},[2010],{"type":51,"tag":85,"props":2011,"children":2012},{},[2013],{"type":57,"value":2014},"\u002F\u002F Import existing key material\n",{"type":51,"tag":85,"props":2016,"children":2017},{"class":87,"line":124},[2018],{"type":51,"tag":85,"props":2019,"children":2020},{},[2021],{"type":57,"value":2022},"JsonWebKey jsonWebKey = new JsonWebKey()\n",{"type":51,"tag":85,"props":2024,"children":2025},{"class":87,"line":187},[2026],{"type":51,"tag":85,"props":2027,"children":2028},{},[2029],{"type":57,"value":2030},"    .setKeyType(KeyType.RSA)\n",{"type":51,"tag":85,"props":2032,"children":2033},{"class":87,"line":196},[2034],{"type":51,"tag":85,"props":2035,"children":2036},{},[2037],{"type":57,"value":2038},"    .setN(modulus)\n",{"type":51,"tag":85,"props":2040,"children":2041},{"class":87,"line":205},[2042],{"type":51,"tag":85,"props":2043,"children":2044},{},[2045],{"type":57,"value":2046},"    .setE(exponent)\n",{"type":51,"tag":85,"props":2048,"children":2049},{"class":87,"line":214},[2050],{"type":51,"tag":85,"props":2051,"children":2052},{},[2053],{"type":57,"value":2054},"    .setD(privateExponent)\n",{"type":51,"tag":85,"props":2056,"children":2057},{"class":87,"line":224},[2058],{"type":51,"tag":85,"props":2059,"children":2060},{},[2061],{"type":57,"value":2062},"    \u002F\u002F ... other RSA components\n",{"type":51,"tag":85,"props":2064,"children":2065},{"class":87,"line":233},[2066],{"type":51,"tag":85,"props":2067,"children":2068},{},[2069],{"type":57,"value":2070},"    ;\n",{"type":51,"tag":85,"props":2072,"children":2073},{"class":87,"line":242},[2074],{"type":51,"tag":85,"props":2075,"children":2076},{"emptyLinePlaceholder":218},[2077],{"type":57,"value":221},{"type":51,"tag":85,"props":2079,"children":2080},{"class":87,"line":251},[2081],{"type":51,"tag":85,"props":2082,"children":2083},{},[2084],{"type":57,"value":2085},"ImportKeyOptions importOptions = new ImportKeyOptions(\"imported-key\", jsonWebKey)\n",{"type":51,"tag":85,"props":2087,"children":2088},{"class":87,"line":260},[2089],{"type":51,"tag":85,"props":2090,"children":2091},{},[2092],{"type":57,"value":2093},"    .setHardwareProtected(false);\n",{"type":51,"tag":85,"props":2095,"children":2096},{"class":87,"line":269},[2097],{"type":51,"tag":85,"props":2098,"children":2099},{"emptyLinePlaceholder":218},[2100],{"type":57,"value":221},{"type":51,"tag":85,"props":2102,"children":2103},{"class":87,"line":278},[2104],{"type":51,"tag":85,"props":2105,"children":2106},{},[2107],{"type":57,"value":2108},"KeyVaultKey importedKey = keyClient.importKey(importOptions);\n",{"type":51,"tag":66,"props":2110,"children":2112},{"id":2111},"encryption-algorithms",[2113],{"type":57,"value":2114},"Encryption Algorithms",{"type":51,"tag":447,"props":2116,"children":2117},{},[2118,2138],{"type":51,"tag":451,"props":2119,"children":2120},{},[2121],{"type":51,"tag":455,"props":2122,"children":2123},{},[2124,2129,2134],{"type":51,"tag":459,"props":2125,"children":2126},{},[2127],{"type":57,"value":2128},"Algorithm",{"type":51,"tag":459,"props":2130,"children":2131},{},[2132],{"type":57,"value":2133},"Key Type",{"type":51,"tag":459,"props":2135,"children":2136},{},[2137],{"type":57,"value":468},{"type":51,"tag":470,"props":2139,"children":2140},{},[2141,2162,2183,2204,2225,2246,2267],{"type":51,"tag":455,"props":2142,"children":2143},{},[2144,2153,2157],{"type":51,"tag":477,"props":2145,"children":2146},{},[2147],{"type":51,"tag":81,"props":2148,"children":2150},{"className":2149},[],[2151],{"type":57,"value":2152},"RSA1_5",{"type":51,"tag":477,"props":2154,"children":2155},{},[2156],{"type":57,"value":485},{"type":51,"tag":477,"props":2158,"children":2159},{},[2160],{"type":57,"value":2161},"RSAES-PKCS1-v1_5",{"type":51,"tag":455,"props":2163,"children":2164},{},[2165,2174,2178],{"type":51,"tag":477,"props":2166,"children":2167},{},[2168],{"type":51,"tag":81,"props":2169,"children":2171},{"className":2170},[],[2172],{"type":57,"value":2173},"RSA_OAEP",{"type":51,"tag":477,"props":2175,"children":2176},{},[2177],{"type":57,"value":485},{"type":51,"tag":477,"props":2179,"children":2180},{},[2181],{"type":57,"value":2182},"RSAES with OAEP (recommended)",{"type":51,"tag":455,"props":2184,"children":2185},{},[2186,2195,2199],{"type":51,"tag":477,"props":2187,"children":2188},{},[2189],{"type":51,"tag":81,"props":2190,"children":2192},{"className":2191},[],[2193],{"type":57,"value":2194},"RSA_OAEP_256",{"type":51,"tag":477,"props":2196,"children":2197},{},[2198],{"type":57,"value":485},{"type":51,"tag":477,"props":2200,"children":2201},{},[2202],{"type":57,"value":2203},"RSAES with OAEP using SHA-256",{"type":51,"tag":455,"props":2205,"children":2206},{},[2207,2216,2220],{"type":51,"tag":477,"props":2208,"children":2209},{},[2210],{"type":51,"tag":81,"props":2211,"children":2213},{"className":2212},[],[2214],{"type":57,"value":2215},"A128GCM",{"type":51,"tag":477,"props":2217,"children":2218},{},[2219],{"type":57,"value":553},{"type":51,"tag":477,"props":2221,"children":2222},{},[2223],{"type":57,"value":2224},"AES-GCM 128-bit",{"type":51,"tag":455,"props":2226,"children":2227},{},[2228,2237,2241],{"type":51,"tag":477,"props":2229,"children":2230},{},[2231],{"type":51,"tag":81,"props":2232,"children":2234},{"className":2233},[],[2235],{"type":57,"value":2236},"A256GCM",{"type":51,"tag":477,"props":2238,"children":2239},{},[2240],{"type":57,"value":553},{"type":51,"tag":477,"props":2242,"children":2243},{},[2244],{"type":57,"value":2245},"AES-GCM 256-bit",{"type":51,"tag":455,"props":2247,"children":2248},{},[2249,2258,2262],{"type":51,"tag":477,"props":2250,"children":2251},{},[2252],{"type":51,"tag":81,"props":2253,"children":2255},{"className":2254},[],[2256],{"type":57,"value":2257},"A128CBC",{"type":51,"tag":477,"props":2259,"children":2260},{},[2261],{"type":57,"value":553},{"type":51,"tag":477,"props":2263,"children":2264},{},[2265],{"type":57,"value":2266},"AES-CBC 128-bit",{"type":51,"tag":455,"props":2268,"children":2269},{},[2270,2279,2283],{"type":51,"tag":477,"props":2271,"children":2272},{},[2273],{"type":51,"tag":81,"props":2274,"children":2276},{"className":2275},[],[2277],{"type":57,"value":2278},"A256CBC",{"type":51,"tag":477,"props":2280,"children":2281},{},[2282],{"type":57,"value":553},{"type":51,"tag":477,"props":2284,"children":2285},{},[2286],{"type":57,"value":2287},"AES-CBC 256-bit",{"type":51,"tag":66,"props":2289,"children":2291},{"id":2290},"signature-algorithms",[2292],{"type":57,"value":2293},"Signature Algorithms",{"type":51,"tag":447,"props":2295,"children":2296},{},[2297,2316],{"type":51,"tag":451,"props":2298,"children":2299},{},[2300],{"type":51,"tag":455,"props":2301,"children":2302},{},[2303,2307,2311],{"type":51,"tag":459,"props":2304,"children":2305},{},[2306],{"type":57,"value":2128},{"type":51,"tag":459,"props":2308,"children":2309},{},[2310],{"type":57,"value":2133},{"type":51,"tag":459,"props":2312,"children":2313},{},[2314],{"type":57,"value":2315},"Hash",{"type":51,"tag":470,"props":2317,"children":2318},{},[2319,2340,2361,2382,2403,2424,2445],{"type":51,"tag":455,"props":2320,"children":2321},{},[2322,2331,2335],{"type":51,"tag":477,"props":2323,"children":2324},{},[2325],{"type":51,"tag":81,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":57,"value":2330},"RS256",{"type":51,"tag":477,"props":2332,"children":2333},{},[2334],{"type":57,"value":485},{"type":51,"tag":477,"props":2336,"children":2337},{},[2338],{"type":57,"value":2339},"SHA-256",{"type":51,"tag":455,"props":2341,"children":2342},{},[2343,2352,2356],{"type":51,"tag":477,"props":2344,"children":2345},{},[2346],{"type":51,"tag":81,"props":2347,"children":2349},{"className":2348},[],[2350],{"type":57,"value":2351},"RS384",{"type":51,"tag":477,"props":2353,"children":2354},{},[2355],{"type":57,"value":485},{"type":51,"tag":477,"props":2357,"children":2358},{},[2359],{"type":57,"value":2360},"SHA-384",{"type":51,"tag":455,"props":2362,"children":2363},{},[2364,2373,2377],{"type":51,"tag":477,"props":2365,"children":2366},{},[2367],{"type":51,"tag":81,"props":2368,"children":2370},{"className":2369},[],[2371],{"type":57,"value":2372},"RS512",{"type":51,"tag":477,"props":2374,"children":2375},{},[2376],{"type":57,"value":485},{"type":51,"tag":477,"props":2378,"children":2379},{},[2380],{"type":57,"value":2381},"SHA-512",{"type":51,"tag":455,"props":2383,"children":2384},{},[2385,2394,2398],{"type":51,"tag":477,"props":2386,"children":2387},{},[2388],{"type":51,"tag":81,"props":2389,"children":2391},{"className":2390},[],[2392],{"type":57,"value":2393},"PS256",{"type":51,"tag":477,"props":2395,"children":2396},{},[2397],{"type":57,"value":485},{"type":51,"tag":477,"props":2399,"children":2400},{},[2401],{"type":57,"value":2402},"SHA-256 (PSS)",{"type":51,"tag":455,"props":2404,"children":2405},{},[2406,2415,2420],{"type":51,"tag":477,"props":2407,"children":2408},{},[2409],{"type":51,"tag":81,"props":2410,"children":2412},{"className":2411},[],[2413],{"type":57,"value":2414},"ES256",{"type":51,"tag":477,"props":2416,"children":2417},{},[2418],{"type":57,"value":2419},"EC P-256",{"type":51,"tag":477,"props":2421,"children":2422},{},[2423],{"type":57,"value":2339},{"type":51,"tag":455,"props":2425,"children":2426},{},[2427,2436,2441],{"type":51,"tag":477,"props":2428,"children":2429},{},[2430],{"type":51,"tag":81,"props":2431,"children":2433},{"className":2432},[],[2434],{"type":57,"value":2435},"ES384",{"type":51,"tag":477,"props":2437,"children":2438},{},[2439],{"type":57,"value":2440},"EC P-384",{"type":51,"tag":477,"props":2442,"children":2443},{},[2444],{"type":57,"value":2360},{"type":51,"tag":455,"props":2446,"children":2447},{},[2448,2457,2462],{"type":51,"tag":477,"props":2449,"children":2450},{},[2451],{"type":51,"tag":81,"props":2452,"children":2454},{"className":2453},[],[2455],{"type":57,"value":2456},"ES512",{"type":51,"tag":477,"props":2458,"children":2459},{},[2460],{"type":57,"value":2461},"EC P-521",{"type":51,"tag":477,"props":2463,"children":2464},{},[2465],{"type":57,"value":2381},{"type":51,"tag":66,"props":2467,"children":2469},{"id":2468},"error-handling",[2470],{"type":57,"value":2471},"Error Handling",{"type":51,"tag":73,"props":2473,"children":2475},{"className":139,"code":2474,"language":21,"meta":78,"style":78},"import com.azure.core.exception.HttpResponseException;\nimport com.azure.core.exception.ResourceNotFoundException;\n\ntry {\n    KeyVaultKey key = keyClient.getKey(\"non-existent-key\");\n} catch (ResourceNotFoundException e) {\n    System.out.println(\"Key not found: \" + e.getMessage());\n} catch (HttpResponseException e) {\n    System.out.println(\"HTTP error \" + e.getResponse().getStatusCode());\n    System.out.println(\"Message: \" + e.getMessage());\n}\n",[2476],{"type":51,"tag":81,"props":2477,"children":2478},{"__ignoreMap":78},[2479,2487,2495,2502,2510,2518,2526,2534,2542,2550,2558],{"type":51,"tag":85,"props":2480,"children":2481},{"class":87,"line":88},[2482],{"type":51,"tag":85,"props":2483,"children":2484},{},[2485],{"type":57,"value":2486},"import com.azure.core.exception.HttpResponseException;\n",{"type":51,"tag":85,"props":2488,"children":2489},{"class":87,"line":97},[2490],{"type":51,"tag":85,"props":2491,"children":2492},{},[2493],{"type":57,"value":2494},"import com.azure.core.exception.ResourceNotFoundException;\n",{"type":51,"tag":85,"props":2496,"children":2497},{"class":87,"line":106},[2498],{"type":51,"tag":85,"props":2499,"children":2500},{"emptyLinePlaceholder":218},[2501],{"type":57,"value":221},{"type":51,"tag":85,"props":2503,"children":2504},{"class":87,"line":115},[2505],{"type":51,"tag":85,"props":2506,"children":2507},{},[2508],{"type":57,"value":2509},"try {\n",{"type":51,"tag":85,"props":2511,"children":2512},{"class":87,"line":124},[2513],{"type":51,"tag":85,"props":2514,"children":2515},{},[2516],{"type":57,"value":2517},"    KeyVaultKey key = keyClient.getKey(\"non-existent-key\");\n",{"type":51,"tag":85,"props":2519,"children":2520},{"class":87,"line":187},[2521],{"type":51,"tag":85,"props":2522,"children":2523},{},[2524],{"type":57,"value":2525},"} catch (ResourceNotFoundException e) {\n",{"type":51,"tag":85,"props":2527,"children":2528},{"class":87,"line":196},[2529],{"type":51,"tag":85,"props":2530,"children":2531},{},[2532],{"type":57,"value":2533},"    System.out.println(\"Key not found: \" + e.getMessage());\n",{"type":51,"tag":85,"props":2535,"children":2536},{"class":87,"line":205},[2537],{"type":51,"tag":85,"props":2538,"children":2539},{},[2540],{"type":57,"value":2541},"} catch (HttpResponseException e) {\n",{"type":51,"tag":85,"props":2543,"children":2544},{"class":87,"line":214},[2545],{"type":51,"tag":85,"props":2546,"children":2547},{},[2548],{"type":57,"value":2549},"    System.out.println(\"HTTP error \" + e.getResponse().getStatusCode());\n",{"type":51,"tag":85,"props":2551,"children":2552},{"class":87,"line":224},[2553],{"type":51,"tag":85,"props":2554,"children":2555},{},[2556],{"type":57,"value":2557},"    System.out.println(\"Message: \" + e.getMessage());\n",{"type":51,"tag":85,"props":2559,"children":2560},{"class":87,"line":233},[2561],{"type":51,"tag":85,"props":2562,"children":2563},{},[2564],{"type":57,"value":1189},{"type":51,"tag":66,"props":2566,"children":2568},{"id":2567},"environment-variables",[2569],{"type":57,"value":2570},"Environment Variables",{"type":51,"tag":73,"props":2572,"children":2576},{"className":2573,"code":2574,"language":2575,"meta":78,"style":78},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","AZURE_KEYVAULT_URL=https:\u002F\u002F\u003Cvault-name>.vault.azure.net  # Required for vault URL\nAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production\n","bash",[2577],{"type":51,"tag":81,"props":2578,"children":2579},{"__ignoreMap":78},[2580,2627],{"type":51,"tag":85,"props":2581,"children":2582},{"class":87,"line":88},[2583,2589,2595,2601,2606,2611,2616,2621],{"type":51,"tag":85,"props":2584,"children":2586},{"style":2585},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[2587],{"type":57,"value":2588},"AZURE_KEYVAULT_URL",{"type":51,"tag":85,"props":2590,"children":2592},{"style":2591},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[2593],{"type":57,"value":2594},"=",{"type":51,"tag":85,"props":2596,"children":2598},{"style":2597},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[2599],{"type":57,"value":2600},"https:\u002F\u002F",{"type":51,"tag":85,"props":2602,"children":2603},{"style":2591},[2604],{"type":57,"value":2605},"\u003C",{"type":51,"tag":85,"props":2607,"children":2608},{"style":2597},[2609],{"type":57,"value":2610},"vault-name",{"type":51,"tag":85,"props":2612,"children":2613},{"style":2591},[2614],{"type":57,"value":2615},">",{"type":51,"tag":85,"props":2617,"children":2618},{"style":2597},[2619],{"type":57,"value":2620},".vault.azure.net",{"type":51,"tag":85,"props":2622,"children":2624},{"style":2623},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[2625],{"type":57,"value":2626},"  # Required for vault URL\n",{"type":51,"tag":85,"props":2628,"children":2629},{"class":87,"line":97},[2630,2635,2639,2644],{"type":51,"tag":85,"props":2631,"children":2632},{"style":2585},[2633],{"type":57,"value":2634},"AZURE_TOKEN_CREDENTIALS",{"type":51,"tag":85,"props":2636,"children":2637},{"style":2591},[2638],{"type":57,"value":2594},{"type":51,"tag":85,"props":2640,"children":2641},{"style":2597},[2642],{"type":57,"value":2643},"prod",{"type":51,"tag":85,"props":2645,"children":2646},{"style":2623},[2647],{"type":57,"value":2648},"  # Required only if DefaultAzureCredential is used in production\n",{"type":51,"tag":66,"props":2650,"children":2652},{"id":2651},"best-practices",[2653],{"type":57,"value":2654},"Best Practices",{"type":51,"tag":2656,"props":2657,"children":2658},"ol",{},[2659,2679,2689,2698,2708],{"type":51,"tag":2660,"props":2661,"children":2662},"li",{},[2663,2669,2671,2677],{"type":51,"tag":2664,"props":2665,"children":2666},"strong",{},[2667],{"type":57,"value":2668},"Use HSM Keys for Production",{"type":57,"value":2670}," - Set ",{"type":51,"tag":81,"props":2672,"children":2674},{"className":2673},[],[2675],{"type":57,"value":2676},"setHardwareProtected(true)",{"type":57,"value":2678}," for sensitive keys",{"type":51,"tag":2660,"props":2680,"children":2681},{},[2682,2687],{"type":51,"tag":2664,"props":2683,"children":2684},{},[2685],{"type":57,"value":2686},"Enable Soft Delete",{"type":57,"value":2688}," - Protects against accidental deletion",{"type":51,"tag":2660,"props":2690,"children":2691},{},[2692,2696],{"type":51,"tag":2664,"props":2693,"children":2694},{},[2695],{"type":57,"value":1846},{"type":57,"value":2697}," - Set up automatic rotation policies",{"type":51,"tag":2660,"props":2699,"children":2700},{},[2701,2706],{"type":51,"tag":2664,"props":2702,"children":2703},{},[2704],{"type":57,"value":2705},"Least Privilege",{"type":57,"value":2707}," - Use separate keys for different operations",{"type":51,"tag":2660,"props":2709,"children":2710},{},[2711,2716,2718,2724],{"type":51,"tag":2664,"props":2712,"children":2713},{},[2714],{"type":57,"value":2715},"Local Crypto When Possible",{"type":57,"value":2717}," - Use ",{"type":51,"tag":81,"props":2719,"children":2721},{"className":2720},[],[2722],{"type":57,"value":2723},"CryptographyClient",{"type":57,"value":2725}," with local key material to reduce round-trips",{"type":51,"tag":66,"props":2727,"children":2729},{"id":2728},"trigger-phrases",[2730],{"type":57,"value":2731},"Trigger Phrases",{"type":51,"tag":2733,"props":2734,"children":2735},"ul",{},[2736,2741,2746,2751],{"type":51,"tag":2660,"props":2737,"children":2738},{},[2739],{"type":57,"value":2740},"\"Key Vault keys Java\", \"cryptographic keys Java\"",{"type":51,"tag":2660,"props":2742,"children":2743},{},[2744],{"type":57,"value":2745},"\"encrypt decrypt Java\", \"sign verify Java\"",{"type":51,"tag":2660,"props":2747,"children":2748},{},[2749],{"type":57,"value":2750},"\"RSA key\", \"EC key\", \"HSM key\"",{"type":51,"tag":2660,"props":2752,"children":2753},{},[2754],{"type":57,"value":2755},"\"key rotation\", \"wrap unwrap key\"",{"type":51,"tag":2757,"props":2758,"children":2759},"style",{},[2760],{"type":57,"value":2761},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2763,"total":2949},[2764,2786,2802,2821,2834,2851,2862,2875,2890,2905,2924,2937],{"slug":2765,"name":2765,"fn":2766,"description":2767,"org":2768,"tags":2769,"stars":2783,"repoUrl":2784,"updatedAt":2785},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2770,2773,2776,2777,2780],{"name":2771,"slug":2772,"type":15},"Engineering","engineering",{"name":2774,"slug":2775,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":2778,"slug":2779,"type":15},"Project Management","project-management",{"name":2781,"slug":2782,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":2787,"name":2787,"fn":2788,"description":2789,"org":2790,"tags":2791,"stars":25,"repoUrl":26,"updatedAt":2801},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2792,2795,2797,2798],{"name":2793,"slug":2794,"type":15},".NET","net",{"name":2796,"slug":32,"type":15},"Agents",{"name":17,"slug":18,"type":15},{"name":2799,"slug":2800,"type":15},"LLM","llm","2026-07-03T16:32:10.297433",{"slug":2803,"name":2803,"fn":2804,"description":2805,"org":2806,"tags":2807,"stars":25,"repoUrl":26,"updatedAt":2820},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2808,2811,2812,2815,2816,2817],{"name":2809,"slug":2810,"type":15},"Analytics","analytics",{"name":17,"slug":18,"type":15},{"name":2813,"slug":2814,"type":15},"Data Analysis","data-analysis",{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":2818,"slug":2819,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":2822,"name":2822,"fn":2823,"description":2824,"org":2825,"tags":2826,"stars":25,"repoUrl":26,"updatedAt":2833},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2827,2830,2831,2832],{"name":2828,"slug":2829,"type":15},"AI Infrastructure","ai-infrastructure",{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-07-07T06:53:31.293235",{"slug":2835,"name":2835,"fn":2836,"description":2837,"org":2838,"tags":2839,"stars":25,"repoUrl":26,"updatedAt":2850},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2840,2841,2844,2845,2846,2849],{"name":17,"slug":18,"type":15},{"name":2842,"slug":2843,"type":15},"Compliance","compliance",{"name":2799,"slug":2800,"type":15},{"name":9,"slug":8,"type":15},{"name":2847,"slug":2848,"type":15},"Python","python",{"name":13,"slug":14,"type":15},"2026-07-18T05:14:23.017504",{"slug":2852,"name":2852,"fn":2853,"description":2854,"org":2855,"tags":2856,"stars":25,"repoUrl":26,"updatedAt":2861},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2857,2858,2859,2860],{"name":2809,"slug":2810,"type":15},{"name":17,"slug":18,"type":15},{"name":2799,"slug":2800,"type":15},{"name":2847,"slug":2848,"type":15},"2026-07-31T05:54:29.068751",{"slug":2863,"name":2863,"fn":2864,"description":2865,"org":2866,"tags":2867,"stars":25,"repoUrl":26,"updatedAt":2874},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2868,2871,2872,2873],{"name":2869,"slug":2870,"type":15},"API Development","api-development",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":2847,"slug":2848,"type":15},"2026-07-18T05:14:16.988376",{"slug":2876,"name":2876,"fn":2877,"description":2878,"org":2879,"tags":2880,"stars":25,"repoUrl":26,"updatedAt":2889},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2881,2882,2885,2888],{"name":17,"slug":18,"type":15},{"name":2883,"slug":2884,"type":15},"Computer Vision","computer-vision",{"name":2886,"slug":2887,"type":15},"Images","images",{"name":2847,"slug":2848,"type":15},"2026-07-18T05:14:18.007737",{"slug":2891,"name":2891,"fn":2892,"description":2893,"org":2894,"tags":2895,"stars":25,"repoUrl":26,"updatedAt":2904},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2896,2897,2900,2903],{"name":17,"slug":18,"type":15},{"name":2898,"slug":2899,"type":15},"Configuration","configuration",{"name":2901,"slug":2902,"type":15},"Feature Flags","feature-flags",{"name":20,"slug":21,"type":15},"2026-07-03T16:32:01.278468",{"slug":2906,"name":2906,"fn":2907,"description":2908,"org":2909,"tags":2910,"stars":25,"repoUrl":26,"updatedAt":2923},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2911,2914,2917,2920],{"name":2912,"slug":2913,"type":15},"Cosmos DB","cosmos-db",{"name":2915,"slug":2916,"type":15},"Database","database",{"name":2918,"slug":2919,"type":15},"NoSQL","nosql",{"name":2921,"slug":2922,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2925,"name":2925,"fn":2907,"description":2926,"org":2927,"tags":2928,"stars":25,"repoUrl":26,"updatedAt":2936},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2929,2930,2931,2932,2933],{"name":2912,"slug":2913,"type":15},{"name":2915,"slug":2916,"type":15},{"name":9,"slug":8,"type":15},{"name":2918,"slug":2919,"type":15},{"name":2934,"slug":2935,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2938,"name":2938,"fn":2939,"description":2940,"org":2941,"tags":2942,"stars":25,"repoUrl":26,"updatedAt":2948},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2943,2944,2945,2946,2947],{"name":17,"slug":18,"type":15},{"name":2912,"slug":2913,"type":15},{"name":2915,"slug":2916,"type":15},{"name":20,"slug":21,"type":15},{"name":2918,"slug":2919,"type":15},"2026-05-13T06:14:17.582229",267,{"items":2951,"total":3005},[2952,2959,2968,2975,2984,2991,2998],{"slug":2787,"name":2787,"fn":2788,"description":2789,"org":2953,"tags":2954,"stars":25,"repoUrl":26,"updatedAt":2801},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2955,2956,2957,2958],{"name":2793,"slug":2794,"type":15},{"name":2796,"slug":32,"type":15},{"name":17,"slug":18,"type":15},{"name":2799,"slug":2800,"type":15},{"slug":2803,"name":2803,"fn":2804,"description":2805,"org":2960,"tags":2961,"stars":25,"repoUrl":26,"updatedAt":2820},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2962,2963,2964,2965,2966,2967],{"name":2809,"slug":2810,"type":15},{"name":17,"slug":18,"type":15},{"name":2813,"slug":2814,"type":15},{"name":20,"slug":21,"type":15},{"name":9,"slug":8,"type":15},{"name":2818,"slug":2819,"type":15},{"slug":2822,"name":2822,"fn":2823,"description":2824,"org":2969,"tags":2970,"stars":25,"repoUrl":26,"updatedAt":2833},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2971,2972,2973,2974],{"name":2828,"slug":2829,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":2835,"name":2835,"fn":2836,"description":2837,"org":2976,"tags":2977,"stars":25,"repoUrl":26,"updatedAt":2850},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2978,2979,2980,2981,2982,2983],{"name":17,"slug":18,"type":15},{"name":2842,"slug":2843,"type":15},{"name":2799,"slug":2800,"type":15},{"name":9,"slug":8,"type":15},{"name":2847,"slug":2848,"type":15},{"name":13,"slug":14,"type":15},{"slug":2852,"name":2852,"fn":2853,"description":2854,"org":2985,"tags":2986,"stars":25,"repoUrl":26,"updatedAt":2861},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2987,2988,2989,2990],{"name":2809,"slug":2810,"type":15},{"name":17,"slug":18,"type":15},{"name":2799,"slug":2800,"type":15},{"name":2847,"slug":2848,"type":15},{"slug":2863,"name":2863,"fn":2864,"description":2865,"org":2992,"tags":2993,"stars":25,"repoUrl":26,"updatedAt":2874},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2994,2995,2996,2997],{"name":2869,"slug":2870,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":2847,"slug":2848,"type":15},{"slug":2876,"name":2876,"fn":2877,"description":2878,"org":2999,"tags":3000,"stars":25,"repoUrl":26,"updatedAt":2889},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3001,3002,3003,3004],{"name":17,"slug":18,"type":15},{"name":2883,"slug":2884,"type":15},{"name":2886,"slug":2887,"type":15},{"name":2847,"slug":2848,"type":15},38]