Sample code for 30+ languages & platforms
Xojo Plugin

Create JCEKS Containing Secret Keys

See more Java KeyStore (JKS) Examples

Demonstrates how to create a JCEKS keystore file containing symmetric secret keys (for AES, Blowfish, HMAC SHA25, ChaCha20, etc.)

This example requires Chilkat v9.5.0.66 or greater.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

// IMPORTANT: This example requires Chilkat v9.5.0.66 or greater.

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

Dim jceks As New Chilkat.JavaKeyStore

// We'll need a pseudo-random number generator (PRNG) to generate symmetric keys.
Dim prng As New Chilkat.Prng

// Generate some keys..

// 128-bit AES key (16 bytes)
Dim aesKey As String
aesKey = prng.GenRandom(16,"base64")

// 256-bit Blowfish key (32 bytes)
Dim blowfishKey As String
blowfishKey = prng.GenRandom(32,"base64")

// HMAC SHA256 key
// (An HMAC key can be anything, and any length. We'll use the following string:
Dim hmacKey As String
hmacKey = "This is my HMAC key"

// ChaCha20 256-bit
Dim chachaKey As String
chachaKey = prng.GenRandom(32,"base64")

// Add each secret key to the JCEKS
Dim encoding As String
encoding = "base64"
Dim password As String
password = "secret"
success = jceks.AddSecretKey(aesKey,encoding,"AES","my aes key",password)
success = jceks.AddSecretKey(blowfishKey,encoding,"BLOWFISH","my blowfish key",password)
// For HMAC, we're using the us-ascii bytes for the key..
success = jceks.AddSecretKey(hmacKey,"ascii","HMAC_SHA256","my hmac key",password)
success = jceks.AddSecretKey(chachaKey,encoding,"CHACHA","my chacha20 key",password)

Dim filePassword As String
filePassword = "password"
// Write the JCEKs to a file.
success = jceks.ToFile(filePassword,"qa_output/secretKeys.jceks")
If (success <> True) Then
    System.DebugLog(jceks.LastErrorText)
    Return
End If

// We can also emit as a JWK Set..
Dim sbJson As New Chilkat.StringBuilder
success = jceks.ToJwkSet("secret",sbJson)
If (success <> True) Then
    System.DebugLog(jceks.LastErrorText)
    Return
End If

// Emit the JSON in pretty-printed (indented) form:
Dim json As New Chilkat.JsonObject
success = json.LoadSb(sbJson)
json.EmitCompact = False
System.DebugLog(json.Emit())

// Output is:

// { 
//   "keys": [
//     { 
//       "kty": "oct",
//       "alg": "AES",
//       "k": "vHekQQB0Gc1NvppapUTW2g",
//       "kid": "my aes key"
//     },
//     { 
//       "kty": "oct",
//       "alg": "BLOWFISH",
//       "k": "qHsdXaJsXicVCZbK8l8hJQpYOa0GkiO9gsRK9WLtht8",
//       "kid": "my blowfish key"
//     },
//     { 
//       "kty": "oct",
//       "alg": "HMAC_SHA256",
//       "k": "VGhpcyBpcyBteSBITUFDIGtleQ",
//       "kid": "my hmac key"
//     },
//     { 
//       "kty": "oct",
//       "alg": "CHACHA",
//       "k": "yNv832U43C9BcWvaQAH2_rG-GwfmpgT5JBRllWGQY1o",
//       "kid": "my chacha20 key"
//     }
//   ]
// }
//