9. Distinguishing between JWS and JWE Objects (区分 JWS 和 JWE 对象)
合法输入中, 以下方法都能区分对象是 JWS 还是 JWE:
- Compact Serialization segment count: JWS 有 3 个以
.分隔的 segment, JWE 有 5 个 segment. - JSON Serialization member: JWS 使用
payloadmember, JWE 使用ciphertextmember. algvalue: 如果alg表示 digital signature, MAC 或none, 对象是 JWS. 如果它表示 Key Encryption, Key Wrapping, Direct Key Agreement, Key Agreement with Key Wrapping 或 Direct Encryption, 对象是 JWE.encmember: JOSE Header 中存在enc时, 对象是 JWE, 否则通常是 JWS.
对 malformed input, 不同方法可能给出不同结果, 实现应按应用上下文和解析规则拒绝不一致或非法表示.