diff options
Diffstat (limited to 'src/lib/libcrypto/ts/ts_asn1.c')
-rw-r--r-- | src/lib/libcrypto/ts/ts_asn1.c | 125 |
1 files changed, 124 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ts/ts_asn1.c b/src/lib/libcrypto/ts/ts_asn1.c index bc89f1368a..c4316d13f8 100644 --- a/src/lib/libcrypto/ts/ts_asn1.c +++ b/src/lib/libcrypto/ts/ts_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ts_asn1.c,v 1.11 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: ts_asn1.c,v 1.12 2022/07/16 18:36:36 kn Exp $ */ |
2 | /* Written by Nils Larsch for the OpenSSL project 2004. | 2 | /* Written by Nils Larsch for the OpenSSL project 2004. |
3 | */ | 3 | */ |
4 | /* ==================================================================== | 4 | /* ==================================================================== |
@@ -846,6 +846,129 @@ ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *x) | |||
846 | return ASN1_item_dup(&ESS_SIGNING_CERT_it, x); | 846 | return ASN1_item_dup(&ESS_SIGNING_CERT_it, x); |
847 | } | 847 | } |
848 | 848 | ||
849 | static const ASN1_TEMPLATE ESS_CERT_ID_V2_seq_tt[] = { | ||
850 | { | ||
851 | .flags = ASN1_TFLG_OPTIONAL, | ||
852 | .tag = 0, | ||
853 | .offset = offsetof(ESS_CERT_ID_V2, hash_alg), | ||
854 | .field_name = "hash_alg", | ||
855 | .item = &X509_ALGOR_it, | ||
856 | }, | ||
857 | { | ||
858 | .flags = 0, | ||
859 | .tag = 0, | ||
860 | .offset = offsetof(ESS_CERT_ID_V2, hash), | ||
861 | .field_name = "hash", | ||
862 | .item = &ASN1_OCTET_STRING_it, | ||
863 | }, | ||
864 | { | ||
865 | .flags = ASN1_TFLG_OPTIONAL, | ||
866 | .tag = 0, | ||
867 | .offset = offsetof(ESS_CERT_ID_V2, issuer_serial), | ||
868 | .field_name = "issuer_serial", | ||
869 | .item = &ESS_ISSUER_SERIAL_it, | ||
870 | }, | ||
871 | }; | ||
872 | |||
873 | static const ASN1_ITEM ESS_CERT_ID_V2_it = { | ||
874 | .itype = ASN1_ITYPE_SEQUENCE, | ||
875 | .utype = V_ASN1_SEQUENCE, | ||
876 | .templates = ESS_CERT_ID_V2_seq_tt, | ||
877 | .tcount = sizeof(ESS_CERT_ID_V2_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
878 | .funcs = NULL, | ||
879 | .size = sizeof(ESS_CERT_ID_V2), | ||
880 | .sname = "ESS_CERT_ID_V2", | ||
881 | }; | ||
882 | |||
883 | ESS_CERT_ID_V2 * | ||
884 | d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, const unsigned char **in, long len) | ||
885 | { | ||
886 | return (ESS_CERT_ID_V2 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
887 | &ESS_CERT_ID_V2_it); | ||
888 | } | ||
889 | |||
890 | int | ||
891 | i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **out) | ||
892 | { | ||
893 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ESS_CERT_ID_V2_it); | ||
894 | } | ||
895 | |||
896 | ESS_CERT_ID_V2 * | ||
897 | ESS_CERT_ID_V2_new(void) | ||
898 | { | ||
899 | return (ESS_CERT_ID_V2 *)ASN1_item_new(&ESS_CERT_ID_V2_it); | ||
900 | } | ||
901 | |||
902 | void | ||
903 | ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a) | ||
904 | { | ||
905 | ASN1_item_free((ASN1_VALUE *)a, &ESS_CERT_ID_V2_it); | ||
906 | } | ||
907 | |||
908 | ESS_CERT_ID_V2 * | ||
909 | ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *x) | ||
910 | { | ||
911 | return ASN1_item_dup(&ESS_CERT_ID_V2_it, x); | ||
912 | } | ||
913 | |||
914 | static const ASN1_TEMPLATE ESS_SIGNING_CERT_V2_seq_tt[] = { | ||
915 | { | ||
916 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
917 | .tag = 0, | ||
918 | .offset = offsetof(ESS_SIGNING_CERT_V2, cert_ids), | ||
919 | .field_name = "cert_ids", | ||
920 | .item = &ESS_CERT_ID_V2_it, | ||
921 | }, | ||
922 | { | ||
923 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
924 | .tag = 0, | ||
925 | .offset = offsetof(ESS_SIGNING_CERT_V2, policy_info), | ||
926 | .field_name = "policy_info", | ||
927 | .item = &POLICYINFO_it, | ||
928 | }, | ||
929 | }; | ||
930 | |||
931 | static const ASN1_ITEM ESS_SIGNING_CERT_V2_it = { | ||
932 | .itype = ASN1_ITYPE_SEQUENCE, | ||
933 | .utype = V_ASN1_SEQUENCE, | ||
934 | .templates = ESS_SIGNING_CERT_V2_seq_tt, | ||
935 | .tcount = sizeof(ESS_SIGNING_CERT_V2_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
936 | .funcs = NULL, | ||
937 | .size = sizeof(ESS_SIGNING_CERT_V2), | ||
938 | .sname = "ESS_SIGNING_CERT_V2", | ||
939 | }; | ||
940 | |||
941 | ESS_SIGNING_CERT_V2 * | ||
942 | d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, const unsigned char **in, long len) | ||
943 | { | ||
944 | return (ESS_SIGNING_CERT_V2 *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
945 | &ESS_SIGNING_CERT_V2_it); | ||
946 | } | ||
947 | |||
948 | int | ||
949 | i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **out) | ||
950 | { | ||
951 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &ESS_SIGNING_CERT_V2_it); | ||
952 | } | ||
953 | |||
954 | ESS_SIGNING_CERT_V2 * | ||
955 | ESS_SIGNING_CERT_V2_new(void) | ||
956 | { | ||
957 | return (ESS_SIGNING_CERT_V2 *)ASN1_item_new(&ESS_SIGNING_CERT_V2_it); | ||
958 | } | ||
959 | |||
960 | void | ||
961 | ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a) | ||
962 | { | ||
963 | ASN1_item_free((ASN1_VALUE *)a, &ESS_SIGNING_CERT_V2_it); | ||
964 | } | ||
965 | |||
966 | ESS_SIGNING_CERT_V2 * | ||
967 | ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *x) | ||
968 | { | ||
969 | return ASN1_item_dup(&ESS_SIGNING_CERT_V2_it, x); | ||
970 | } | ||
971 | |||
849 | /* Getting encapsulated TS_TST_INFO object from PKCS7. */ | 972 | /* Getting encapsulated TS_TST_INFO object from PKCS7. */ |
850 | TS_TST_INFO * | 973 | TS_TST_INFO * |
851 | PKCS7_to_TS_TST_INFO(PKCS7 *token) | 974 | PKCS7_to_TS_TST_INFO(PKCS7 *token) |