summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ts/ts_asn1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/ts/ts_asn1.c')
-rw-r--r--src/lib/libcrypto/ts/ts_asn1.c125
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
849static 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
873static 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
883ESS_CERT_ID_V2 *
884d2i_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
890int
891i2d_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
896ESS_CERT_ID_V2 *
897ESS_CERT_ID_V2_new(void)
898{
899 return (ESS_CERT_ID_V2 *)ASN1_item_new(&ESS_CERT_ID_V2_it);
900}
901
902void
903ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a)
904{
905 ASN1_item_free((ASN1_VALUE *)a, &ESS_CERT_ID_V2_it);
906}
907
908ESS_CERT_ID_V2 *
909ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *x)
910{
911 return ASN1_item_dup(&ESS_CERT_ID_V2_it, x);
912}
913
914static 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
931static 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
941ESS_SIGNING_CERT_V2 *
942d2i_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
948int
949i2d_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
954ESS_SIGNING_CERT_V2 *
955ESS_SIGNING_CERT_V2_new(void)
956{
957 return (ESS_SIGNING_CERT_V2 *)ASN1_item_new(&ESS_SIGNING_CERT_V2_it);
958}
959
960void
961ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a)
962{
963 ASN1_item_free((ASN1_VALUE *)a, &ESS_SIGNING_CERT_V2_it);
964}
965
966ESS_SIGNING_CERT_V2 *
967ESS_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. */
850TS_TST_INFO * 973TS_TST_INFO *
851PKCS7_to_TS_TST_INFO(PKCS7 *token) 974PKCS7_to_TS_TST_INFO(PKCS7 *token)