From 75a923f0ee362a039b51a141a719ce50597ca233 Mon Sep 17 00:00:00 2001 From: Devel Date: Thu, 12 Apr 2018 18:07:08 +0200 Subject: Added signature calculation and verification for ECDSA Change-Id: I946e146b9a6ae33ee294a09417e8366853faa502 Signed-off-by: Devel --- libparc/parc/security/parc_CryptoSuite.c | 51 +++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) (limited to 'libparc/parc/security/parc_CryptoSuite.c') diff --git a/libparc/parc/security/parc_CryptoSuite.c b/libparc/parc/security/parc_CryptoSuite.c index 9f4506e7..c807f9aa 100755 --- a/libparc/parc/security/parc_CryptoSuite.c +++ b/libparc/parc/security/parc_CryptoSuite.c @@ -28,7 +28,7 @@ parcCryptoSuite_GetCryptoHash(PARCCryptoSuite suite) case PARCCryptoSuite_DSA_SHA256: // fallthrough case PARCCryptoSuite_HMAC_SHA256: // fallthrough case PARCCryptoSuite_RSA_SHA256: // fallthrough - case PARCCryptoSuite_EC_SECP_256K1: + case PARCCryptoSuite_ECDSA_SHA256: return PARCCryptoHashType_SHA256; case PARCCryptoSuite_HMAC_SHA512: // fallthrough @@ -42,3 +42,52 @@ parcCryptoSuite_GetCryptoHash(PARCCryptoSuite suite) trapIllegalValue(suite, "Unknown crypto suite: %d", suite); } } + +int +parcCryptoSuite_GetSignatureSizeBits(PARCCryptoSuite suite, int keyLengthBits) +{ + switch (suite) { + case PARCCryptoSuite_DSA_SHA256: // fallthrough + case PARCCryptoSuite_RSA_SHA256: // fallthrough + case PARCCryptoSuite_RSA_SHA512: + return keyLengthBits; + + case PARCCryptoSuite_ECDSA_SHA256: + return keyLengthBits*2 + 64; //Overhead added by ECDSA + + case PARCCryptoSuite_HMAC_SHA256: // fallthrough + case PARCCryptoSuite_HMAC_SHA512: // fallthrough + return 512; + + case PARCCryptoSuite_NULL_CRC32C: + return 32; + + default: + trapIllegalValue(suite, "Unknown crypto suite: %d", suite); + } +} + +int +parcCryptoSuite_GetSignatureSizeBytes(PARCCryptoSuite suite, int keyLengthBits) +{ + int keyLengthBytes = keyLengthBits >> 3; + switch (suite) { + case PARCCryptoSuite_DSA_SHA256: // fallthrough + case PARCCryptoSuite_RSA_SHA256: // fallthrough + case PARCCryptoSuite_RSA_SHA512: + return keyLengthBytes; + + case PARCCryptoSuite_ECDSA_SHA256: + return keyLengthBytes*2 + 8; //Overhead added by ECDSA + + case PARCCryptoSuite_HMAC_SHA256: // fallthrough + case PARCCryptoSuite_HMAC_SHA512: // fallthrough + return 64; + + case PARCCryptoSuite_NULL_CRC32C: + return 4; + + default: + trapIllegalValue(suite, "Unknown crypto suite: %d", suite); + } +} -- cgit 1.2.3-korg