From 91784040db2b9273687f88d8b95f729d4a61ecc2 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 21 Aug 2020 10:32:44 -0700 Subject: [PATCH] libcrypto_utils: switch to C++. brillo is long gone, so no one should care about being C any more, and this will let future janitorial work take advantage of RAII. Test: treehugger Change-Id: I06acd01e8b30247bed6e971ab3e8660d3e599cce --- libcrypto_utils/Android.bp | 2 +- .../{android_pubkey.c => android_pubkey.cpp} | 27 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) rename libcrypto_utils/{android_pubkey.c => android_pubkey.cpp} (88%) diff --git a/libcrypto_utils/Android.bp b/libcrypto_utils/Android.bp index d7175e0be..923b29154 100644 --- a/libcrypto_utils/Android.bp +++ b/libcrypto_utils/Android.bp @@ -23,7 +23,7 @@ cc_library { }, host_supported: true, srcs: [ - "android_pubkey.c", + "android_pubkey.cpp", ], cflags: [ "-Wall", diff --git a/libcrypto_utils/android_pubkey.c b/libcrypto_utils/android_pubkey.cpp similarity index 88% rename from libcrypto_utils/android_pubkey.c rename to libcrypto_utils/android_pubkey.cpp index 188ffcbe1..21e5663ee 100644 --- a/libcrypto_utils/android_pubkey.c +++ b/libcrypto_utils/android_pubkey.cpp @@ -35,22 +35,22 @@ // little-endian 32 bit words. Note that Android only supports little-endian // processors, so we don't do any byte order conversions when parsing the binary // struct. -typedef struct RSAPublicKey { - // Modulus length. This must be ANDROID_PUBKEY_MODULUS_SIZE. - uint32_t modulus_size_words; +struct RSAPublicKey { + // Modulus length. This must be ANDROID_PUBKEY_MODULUS_SIZE. + uint32_t modulus_size_words; - // Precomputed montgomery parameter: -1 / n[0] mod 2^32 - uint32_t n0inv; + // Precomputed montgomery parameter: -1 / n[0] mod 2^32 + uint32_t n0inv; - // RSA modulus as a little-endian array. - uint8_t modulus[ANDROID_PUBKEY_MODULUS_SIZE]; + // RSA modulus as a little-endian array. + uint8_t modulus[ANDROID_PUBKEY_MODULUS_SIZE]; - // Montgomery parameter R^2 as a little-endian array. - uint8_t rr[ANDROID_PUBKEY_MODULUS_SIZE]; + // Montgomery parameter R^2 as a little-endian array. + uint8_t rr[ANDROID_PUBKEY_MODULUS_SIZE]; - // RSA modulus: 3 or 65537 - uint32_t exponent; -} RSAPublicKey; + // RSA modulus: 3 or 65537 + uint32_t exponent; +}; bool android_pubkey_decode(const uint8_t* key_buffer, size_t size, RSA** key) { const RSAPublicKey* key_struct = (RSAPublicKey*)key_buffer; @@ -116,8 +116,7 @@ bool android_pubkey_encode(const RSA* key, uint8_t* key_buffer, size_t size) { BIGNUM* n0inv = BN_new(); BIGNUM* rr = BN_new(); - if (sizeof(RSAPublicKey) > size || - RSA_size(key) != ANDROID_PUBKEY_MODULUS_SIZE) { + if (sizeof(RSAPublicKey) > size || RSA_size(key) != ANDROID_PUBKEY_MODULUS_SIZE) { goto cleanup; }