Swift
Swift
Set a Per-Recipient JWE Header
See more JSON Web Encryption (JWE) Examples
Demonstrates Jwe.SetRecipientHeader, which sets the per-recipient unprotected header for a recipient index.
Background. Per-recipient headers carry recipient-specific values such as a key id (
kid), and are used with the JSON serialization forms that support multiple recipients.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
let jwe = CkoJwe()!
// Protected header: AES key-wrap with AES-256-GCM content encryption.
let header = CkoJsonObject()!
header.updateString(jsonPath: "alg", value: "A256KW")
header.updateString(jsonPath: "enc", value: "A256GCM")
success = jwe.setProtectedHeader(json: header)
if success == false {
print("\(jwe.lastErrorText!)")
return
}
// The 256-bit key-wrapping key (base64) for recipient index 0. In production, obtain the key from a
// secure source rather than hard-coding it.
var base64Key: String? = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
success = jwe.setWrappingKey(index: 0, encodedKey: base64Key, encoding: "base64")
if success == false {
print("\(jwe.lastErrorText!)")
return
}
// Set the per-recipient unprotected header for recipient 0, for example a key id used to identify
// which key a recipient should use.
let recipHeader = CkoJsonObject()!
recipHeader.updateString(jsonPath: "kid", value: "recipient-key-1")
success = jwe.setRecipientHeader(index: 0, json: recipHeader)
if success == false {
print("\(jwe.lastErrorText!)")
return
}
let sbContent = CkoStringBuilder()!
sbContent.append(value: "This is the secret content.")
let sbJwe = CkoStringBuilder()!
success = jwe.encryptSb(contentSb: sbContent, charset: "utf-8", jweSb: sbJwe)
if success == false {
print("\(jwe.lastErrorText!)")
return
}
print("\(sbJwe.getAsString()!)")
}