int main(/* int argc, const char *const *argv */) { bool valid; unsigned char digest[20], sig[68]; ccec_const_cp_t cp = ccec_cp_256(); ccec_pub_ctx_decl_cp(cp, key); ccec_ctx_init(cp, key); return ccec_verify(key, sizeof(digest), digest, sizeof(sig), sig, &valid); }
static OSStatus SecECPublicKeyRawVerify(SecKeyRef key, SecPadding padding, const uint8_t *signedData, size_t signedDataLen, const uint8_t *sig, size_t sigLen) { int err = errSSLCrypto; // TODO: Should be errSecNotSigner; ccec_pub_ctx_t pubkey; pubkey.pub = key->key; bool valid = 0; if (ccec_verify(pubkey, signedDataLen, signedData, sigLen, sig, &valid)) err = errSSLCrypto; // TODO: This seems weird. Shouldn't be SSL error if (valid) err = errSecSuccess; return err; }