Problem: CHMAC_SHA256 and CHMAC_SHA512 use memcpy to copy key bytes.
Empty vectors can provide a null data() pointer, which triggers a UBSan null-pointer warning even for zero-length copies and forces the crypto fuzz target to avoid empty inputs.
Fix: Use std::copy, which has defined semantics for empty ranges, add empty-key HMAC test vectors, and let the crypto fuzz target pass empty byte vectors directly.
Remove the stale eval_script empty-input guard in a separate commit because ConsumeRemainingBytes() already returns before copying when no bytes remain.