verification/cbmc/sources/openssl/rand_override.c (9 lines of code) (raw):

/* * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ #include <make_common_data_structures.h> #include <openssl/rand.h> /* * RAND_bytes() puts num cryptographically strong pseudo-random bytes into buf. * An error occurs if the PRNG has not been seeded with enough randomness to ensure an unpredictable byte sequence. * RAND_bytes() returns 1 on success, 0 otherwise. */ int RAND_bytes(unsigned char *buf, int num) { // https://github.com/openssl/openssl/blob/master/crypto/rand/rand_lib.c#L373 if (num < 0) return 0; assert(AWS_MEM_IS_WRITABLE(buf, num)); int rv; __CPROVER_assume(rv == 0 || rv == 1); return rv; }