AWS_CRYPTOSDK_STATIC_INLINE bool aws_cryptosdk_session_is_valid()

in include/aws/cryptosdk/private/session.h [101:115]


AWS_CRYPTOSDK_STATIC_INLINE bool aws_cryptosdk_session_is_valid(const struct aws_cryptosdk_session *session) {
    if (!AWS_OBJECT_PTR_IS_WRITABLE(session)) {
        return false;
    }
    bool allocator_valid     = aws_allocator_is_valid(session->alloc);
    bool cmm_valid           = aws_cryptosdk_cmm_base_is_valid(session->cmm);
    bool hdr_valid           = aws_cryptosdk_hdr_is_valid(&session->header);
    bool keyring_trace_valid = aws_cryptosdk_keyring_trace_is_valid(&session->keyring_trace);
    bool alg_props_valid   = (session->alg_props == NULL || aws_cryptosdk_alg_properties_is_valid(session->alg_props));
    bool content_key_valid = aws_cryptosdk_content_key_is_valid(&session->content_key);
    bool key_commitment_valid = aws_byte_buf_is_valid(&session->key_commitment);
    bool signctx_valid        = (session->signctx == NULL) || aws_cryptosdk_sig_ctx_is_valid(session->signctx);
    return allocator_valid && cmm_valid && hdr_valid && keyring_trace_valid && alg_props_valid && content_key_valid &&
           key_commitment_valid && signctx_valid;
}