Swift
Swift
Set the Shared JWE Unprotected Header
See more JSON Web Encryption (JWE) Examples
Demonstrates Jwe.SetUnprotectedHeader, which sets the shared JWE unprotected header from a JsonObject.
Background. The unprotected header is shared by all recipients but, unlike the protected header, is not integrity-protected. It is carried in the JSON serialization forms of a JWE.
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 shared JWE unprotected header. It is shared by all recipients but, unlike the protected
// header, is not integrity-protected.
let unprotected = CkoJsonObject()!
unprotected.updateString(jsonPath: "cty", value: "text/plain")
success = jwe.setUnprotectedHeader(json: unprotected)
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()!)")
}