summaryrefslogtreecommitdiffstats
path: root/src/tests/asn.1/ktest_equal.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2012-07-27 11:51:18 -0400
committerGreg Hudson <ghudson@mit.edu>2012-08-23 13:29:55 -0400
commita7dc565cafbaa6c18d5a76ea3cc823c7159a0d6b (patch)
tree821137ba5134f009c5423148f9cfd85863ab231d /src/tests/asn.1/ktest_equal.c
parentbe74d2e7fa486fd7e5cf59b7e845278164cfb76a (diff)
downloadkrb5-a7dc565cafbaa6c18d5a76ea3cc823c7159a0d6b.tar.gz
krb5-a7dc565cafbaa6c18d5a76ea3cc823c7159a0d6b.tar.xz
krb5-a7dc565cafbaa6c18d5a76ea3cc823c7159a0d6b.zip
Add ASN.1 support for OTP
Add encoders and decoders for the OTP-TOKENINFO, PA-OTP-CHALLENGE, PA-OTP-REQUEST, and PA-OTP-ENC-REQUEST types from RFC 6560. For more thorough testing, add support for generating test encodings using asn1c for sample objects (currently only for the OTP types).
Diffstat (limited to 'src/tests/asn.1/ktest_equal.c')
-rw-r--r--src/tests/asn.1/ktest_equal.c102
1 files changed, 83 insertions, 19 deletions
diff --git a/src/tests/asn.1/ktest_equal.c b/src/tests/asn.1/ktest_equal.c
index 6953708cac..4e7124269e 100644
--- a/src/tests/asn.1/ktest_equal.c
+++ b/src/tests/asn.1/ktest_equal.c
@@ -613,6 +613,75 @@ ktest_equal_fast_response(krb5_fast_response *ref, krb5_fast_response *var)
return p;
}
+static int
+ktest_equal_algorithm_identifier(krb5_algorithm_identifier *ref,
+ krb5_algorithm_identifier *var)
+{
+ int p = TRUE;
+ if (ref == var) return TRUE;
+ else if (ref == NULL || var == NULL) return FALSE;
+ p = p && equal_str(algorithm);
+ p = p && equal_str(parameters);
+ return p;
+}
+
+int
+ktest_equal_otp_tokeninfo(krb5_otp_tokeninfo *ref, krb5_otp_tokeninfo *var)
+{
+ int p = TRUE;
+ if (ref == var) return TRUE;
+ else if (ref == NULL || var == NULL) return FALSE;
+ p = p && scalar_equal(flags);
+ p = p && equal_str(vendor);
+ p = p && equal_str(challenge);
+ p = p && scalar_equal(length);
+ p = p && scalar_equal(format);
+ p = p && equal_str(token_id);
+ p = p && equal_str(alg_id);
+ p = p && ptr_equal(supported_hash_alg,
+ ktest_equal_sequence_of_algorithm_identifier);
+ p = p && scalar_equal(iteration_count);
+ return p;
+}
+
+int
+ktest_equal_pa_otp_challenge(krb5_pa_otp_challenge *ref,
+ krb5_pa_otp_challenge *var)
+{
+ int p = TRUE;
+ if (ref == var) return TRUE;
+ else if (ref == NULL || var == NULL) return FALSE;
+ p = p && equal_str(nonce);
+ p = p && equal_str(service);
+ p = p && ptr_equal(tokeninfo, ktest_equal_sequence_of_otp_tokeninfo);
+ p = p && equal_str(salt);
+ p = p && equal_str(s2kparams);
+ return p;
+}
+
+int
+ktest_equal_pa_otp_req(krb5_pa_otp_req *ref, krb5_pa_otp_req *var)
+{
+ int p = TRUE;
+ if (ref == var) return TRUE;
+ else if (ref == NULL || var == NULL) return FALSE;
+ p = p && scalar_equal(flags);
+ p = p && equal_str(nonce);
+ p = p && struct_equal(enc_data, ktest_equal_enc_data);
+ p = p && ptr_equal(hash_alg, ktest_equal_algorithm_identifier);
+ p = p && scalar_equal(iteration_count);
+ p = p && equal_str(otp_value);
+ p = p && equal_str(pin);
+ p = p && equal_str(challenge);
+ p = p && scalar_equal(time);
+ p = p && equal_str(counter);
+ p = p && scalar_equal(format);
+ p = p && equal_str(token_id);
+ p = p && equal_str(alg_id);
+ p = p && equal_str(vendor);
+ return p;
+}
+
#ifdef ENABLE_LDAP
static int
equal_key_data(krb5_key_data *ref, krb5_key_data *var)
@@ -770,6 +839,20 @@ ktest_equal_sequence_of_checksum(krb5_checksum **ref, krb5_checksum **var)
array_compare(ktest_equal_checksum);
}
+int
+ktest_equal_sequence_of_algorithm_identifier(krb5_algorithm_identifier **ref,
+ krb5_algorithm_identifier **var)
+{
+ array_compare(ktest_equal_algorithm_identifier);
+}
+
+int
+ktest_equal_sequence_of_otp_tokeninfo(krb5_otp_tokeninfo **ref,
+ krb5_otp_tokeninfo **var)
+{
+ array_compare(ktest_equal_otp_tokeninfo);
+}
+
#ifndef DISABLE_PKINIT
static int
@@ -801,25 +884,6 @@ ktest_equal_pk_authenticator_draft9(krb5_pk_authenticator_draft9 *ref,
}
static int
-ktest_equal_algorithm_identifier(krb5_algorithm_identifier *ref,
- krb5_algorithm_identifier *var)
-{
- int p = TRUE;
- if (ref == var) return TRUE;
- else if (ref == NULL || var == NULL) return FALSE;
- p = p && equal_str(algorithm);
- p = p && equal_str(parameters);
- return p;
-}
-
-static int
-ktest_equal_sequence_of_algorithm_identifier(krb5_algorithm_identifier **ref,
- krb5_algorithm_identifier **var)
-{
- array_compare(ktest_equal_algorithm_identifier);
-}
-
-static int
ktest_equal_subject_pk_info(krb5_subject_pk_info *ref,
krb5_subject_pk_info *var)
{