aboutsummaryrefslogtreecommitdiffstats
path: root/libparc/parc/security/parc_CryptoSuite.c
diff options
context:
space:
mode:
Diffstat (limited to 'libparc/parc/security/parc_CryptoSuite.c')
-rwxr-xr-xlibparc/parc/security/parc_CryptoSuite.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/libparc/parc/security/parc_CryptoSuite.c b/libparc/parc/security/parc_CryptoSuite.c
index c807f9aa..32b1431e 100755
--- a/libparc/parc/security/parc_CryptoSuite.c
+++ b/libparc/parc/security/parc_CryptoSuite.c
@@ -20,6 +20,7 @@
#include <LongBow/runtime.h>
#include <parc/security/parc_CryptoSuite.h>
+#include <parc/security/parc_SigningAlgorithm.h>
PARCCryptoHashType
parcCryptoSuite_GetCryptoHash(PARCCryptoSuite suite)
@@ -91,3 +92,44 @@ parcCryptoSuite_GetSignatureSizeBytes(PARCCryptoSuite suite, int keyLengthBits)
trapIllegalValue(suite, "Unknown crypto suite: %d", suite);
}
}
+
+PARCCryptoSuite parcCryptoSuite_GetFromSigningHash(PARCSigningAlgorithm signAlgo, PARCCryptoHashType hash) {
+
+ switch (signAlgo) {
+ case PARCSigningAlgorithm_DSA:
+ return PARCCryptoSuite_DSA_SHA256 + hash -1;
+ case PARCSigningAlgorithm_RSA:
+ return PARCCryptoSuite_RSA_SHA256 + hash -1;
+ case PARCSigningAlgorithm_ECDSA:
+ return PARCCryptoSuite_ECDSA_SHA256 + hash -1;
+ case PARCSigningAlgorithm_NULL:
+ return PARCCryptoSuite_NULL_CRC32C;
+ default:
+ trapIllegalValue(suite, "Unknown signing algorithm suite: %d", signAlgo);
+ }
+}
+
+PARCSigningAlgorithm
+parcCryptoSuite_GetSigningAlgorithm(PARCCryptoSuite suite)
+{
+ switch (suite) {
+ case PARCCryptoSuite_DSA_SHA256:
+ return PARCSigningAlgorithm_DSA;
+
+ case PARCCryptoSuite_RSA_SHA256: // fallthrough
+ case PARCCryptoSuite_RSA_SHA512:
+ return PARCSigningAlgorithm_RSA;
+
+ case PARCCryptoSuite_HMAC_SHA256: // fallthrough
+ case PARCCryptoSuite_HMAC_SHA512:
+ return PARCSigningAlgorithm_HMAC;
+
+ case PARCCryptoSuite_ECDSA_SHA256:
+ return PARCSigningAlgorithm_ECDSA;
+ case PARCCryptoSuite_NULL_CRC32C:
+ return PARCSigningAlgorithm_NULL;
+
+ default:
+ trapIllegalValue(suit, "Unknown crypto suite: %d", suite);
+ }
+}