Esempio n. 1
0
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;
}