diff mbox series

[02/15] backports: update x509.asn1.[ch]

Message ID 20200221095437.fcc31f62d6cf.I268b63a7ca56b448e4a0ae8e2f4293561342648d@changeid (mailing list archive)
State New, archived
Headers show
Series updates & improvements | expand

Commit Message

Johannes Berg Feb. 21, 2020, 8:56 a.m. UTC
From: Luca Coelho <luciano.coelho@intel.com>

In v5.2, x509_cert_parser.c implemented a new function,
x509_note_params().  So we need the new generated asn1 files.  Update
these files from the ones generated with v5.2

type=maint
ticket=jira:WIFI-25529

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 backport/compat/verification/x509.asn1.c | 105 ++++++++++++-----------
 backport/compat/verification/x509.asn1.h |   1 +
 2 files changed, 55 insertions(+), 51 deletions(-)

Comments

Hauke Mehrtens Feb. 23, 2020, 10:26 p.m. UTC | #1
On 2/21/20 9:56 AM, Johannes Berg wrote:
> From: Luca Coelho <luciano.coelho@intel.com>
> 
> In v5.2, x509_cert_parser.c implemented a new function,
> x509_note_params().  So we need the new generated asn1 files.  Update
> these files from the ones generated with v5.2

Should we generate these files automatically?
Sine this commit flex and bison are anyway needed for building:
https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git/commit/?id=4ec72687181df4b786152747c008a688c9b9b9de

Why did you use kernel 5.2 and nothing more recent?

> type=maint
> ticket=jira:WIFI-25529
> 
> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> ---
>  backport/compat/verification/x509.asn1.c | 105 ++++++++++++-----------
>  backport/compat/verification/x509.asn1.h |   1 +
>  2 files changed, 55 insertions(+), 51 deletions(-)
> 
> diff --git a/backport/compat/verification/x509.asn1.c b/backport/compat/verification/x509.asn1.c
> index 316c10e3267f..e68864b6a1f5 100644
> --- a/backport/compat/verification/x509.asn1.c
> +++ b/backport/compat/verification/x509.asn1.c
> @@ -13,13 +13,14 @@ enum x509_actions {
>  	ACT_x509_note_issuer = 3,
>  	ACT_x509_note_not_after = 4,
>  	ACT_x509_note_not_before = 5,
> -	ACT_x509_note_pkey_algo = 6,
> -	ACT_x509_note_serial = 7,
> -	ACT_x509_note_signature = 8,
> -	ACT_x509_note_subject = 9,
> -	ACT_x509_note_tbs_certificate = 10,
> -	ACT_x509_process_extension = 11,
> -	NR__x509_actions = 12
> +	ACT_x509_note_params = 6,
> +	ACT_x509_note_pkey_algo = 7,
> +	ACT_x509_note_serial = 8,
> +	ACT_x509_note_signature = 9,
> +	ACT_x509_note_subject = 10,
> +	ACT_x509_note_tbs_certificate = 11,
> +	ACT_x509_process_extension = 12,
> +	NR__x509_actions = 13
>  };
>  
>  static const asn1_action_t x509_action_table[NR__x509_actions] = {
> @@ -29,12 +30,13 @@ static const asn1_action_t x509_action_table[NR__x509_actions] = {
>  	[   3] = x509_note_issuer,
>  	[   4] = x509_note_not_after,
>  	[   5] = x509_note_not_before,
> -	[   6] = x509_note_pkey_algo,
> -	[   7] = x509_note_serial,
> -	[   8] = x509_note_signature,
> -	[   9] = x509_note_subject,
> -	[  10] = x509_note_tbs_certificate,
> -	[  11] = x509_process_extension,
> +	[   6] = x509_note_params,
> +	[   7] = x509_note_pkey_algo,
> +	[   8] = x509_note_serial,
> +	[   9] = x509_note_signature,
> +	[  10] = x509_note_subject,
> +	[  11] = x509_note_tbs_certificate,
> +	[  12] = x509_process_extension,
>  };
>  
>  static const unsigned char x509_machine[] = {
> @@ -61,7 +63,7 @@ static const unsigned char x509_machine[] = {
>  	// Name
>  	[  16] =   ASN1_OP_MATCH_JUMP,
>  	[  17] =   _tag(UNIV, CONS, SEQ),
> -	[  18] =   _jump_target(80),		// --> Name
> +	[  18] =   _jump_target(81),		// --> Name
>  	[  19] =   ASN1_OP_ACT,
>  	[  20] =   _action(ACT_x509_note_issuer),
>  	// Validity
> @@ -87,7 +89,7 @@ static const unsigned char x509_machine[] = {
>  	// Name
>  	[  38] =   ASN1_OP_MATCH_JUMP,
>  	[  39] =   _tag(UNIV, CONS, SEQ),
> -	[  40] =   _jump_target(80),		// --> Name
> +	[  40] =   _jump_target(81),		// --> Name
>  	[  41] =   ASN1_OP_ACT,
>  	[  42] =   _action(ACT_x509_note_subject),
>  	// SubjectPublicKeyInfo
> @@ -109,7 +111,7 @@ static const unsigned char x509_machine[] = {
>  	[  55] =   _tagn(CONT, PRIM,  2),
>  	[  56] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// extensions
>  	[  57] =   _tagn(CONT, CONS,  3),
> -	[  58] =   _jump_target(95),
> +	[  58] =   _jump_target(96),
>  	[  59] =  ASN1_OP_END_SEQ,
>  	[  60] =  ASN1_OP_ACT,
>  	[  61] =  _action(ACT_x509_note_tbs_certificate),
> @@ -132,47 +134,48 @@ static const unsigned char x509_machine[] = {
>  	[  74] =  ASN1_OP_MATCH_ACT,		// algorithm
>  	[  75] =  _tag(UNIV, PRIM, OID),
>  	[  76] =  _action(ACT_x509_note_OID),
> -	[  77] =  ASN1_OP_MATCH_ANY_OR_SKIP,		// parameters
> -	[  78] = ASN1_OP_END_SEQ,
> -	[  79] = ASN1_OP_RETURN,
> +	[  77] =  ASN1_OP_MATCH_ANY_ACT_OR_SKIP,		// parameters
> +	[  78] =  _action(ACT_x509_note_params),
> +	[  79] = ASN1_OP_END_SEQ,
> +	[  80] = ASN1_OP_RETURN,
>  
>  	// RelativeDistinguishedName
> -	[  80] =  ASN1_OP_MATCH,
> -	[  81] =  _tag(UNIV, CONS, SET),
> +	[  81] =  ASN1_OP_MATCH,
> +	[  82] =  _tag(UNIV, CONS, SET),
>  	// AttributeValueAssertion
> -	[  82] =   ASN1_OP_MATCH,
> -	[  83] =   _tag(UNIV, CONS, SEQ),
> -	[  84] =    ASN1_OP_MATCH_ACT,		// attributeType
> -	[  85] =    _tag(UNIV, PRIM, OID),
> -	[  86] =    _action(ACT_x509_note_OID),
> -	[  87] =    ASN1_OP_MATCH_ANY_ACT,		// attributeValue
> -	[  88] =    _action(ACT_x509_extract_name_segment),
> -	[  89] =   ASN1_OP_END_SEQ,
> -	[  90] =  ASN1_OP_END_SET_OF,
> -	[  91] =  _jump_target(82),
> -	[  92] = ASN1_OP_END_SEQ_OF,
> -	[  93] = _jump_target(80),
> -	[  94] = ASN1_OP_RETURN,
> +	[  83] =   ASN1_OP_MATCH,
> +	[  84] =   _tag(UNIV, CONS, SEQ),
> +	[  85] =    ASN1_OP_MATCH_ACT,		// attributeType
> +	[  86] =    _tag(UNIV, PRIM, OID),
> +	[  87] =    _action(ACT_x509_note_OID),
> +	[  88] =    ASN1_OP_MATCH_ANY_ACT,		// attributeValue
> +	[  89] =    _action(ACT_x509_extract_name_segment),
> +	[  90] =   ASN1_OP_END_SEQ,
> +	[  91] =  ASN1_OP_END_SET_OF,
> +	[  92] =  _jump_target(83),
> +	[  93] = ASN1_OP_END_SEQ_OF,
> +	[  94] = _jump_target(81),
> +	[  95] = ASN1_OP_RETURN,
>  
>  	// Extensions
> -	[  95] =  ASN1_OP_MATCH,
> -	[  96] =  _tag(UNIV, CONS, SEQ),
> +	[  96] =  ASN1_OP_MATCH,
> +	[  97] =  _tag(UNIV, CONS, SEQ),
>  	// Extension
> -	[  97] =   ASN1_OP_MATCH,
> -	[  98] =   _tag(UNIV, CONS, SEQ),
> -	[  99] =    ASN1_OP_MATCH_ACT,		// extnid
> -	[ 100] =    _tag(UNIV, PRIM, OID),
> -	[ 101] =    _action(ACT_x509_note_OID),
> -	[ 102] =    ASN1_OP_MATCH_OR_SKIP,		// critical
> -	[ 103] =    _tag(UNIV, PRIM, BOOL),
> -	[ 104] =    ASN1_OP_MATCH_ACT,		// extnValue
> -	[ 105] =    _tag(UNIV, PRIM, OTS),
> -	[ 106] =    _action(ACT_x509_process_extension),
> -	[ 107] =   ASN1_OP_END_SEQ,
> -	[ 108] =  ASN1_OP_END_SEQ_OF,
> -	[ 109] =  _jump_target(97),
> -	[ 110] = ASN1_OP_END_SEQ,
> -	[ 111] = ASN1_OP_RETURN,
> +	[  98] =   ASN1_OP_MATCH,
> +	[  99] =   _tag(UNIV, CONS, SEQ),
> +	[ 100] =    ASN1_OP_MATCH_ACT,		// extnid
> +	[ 101] =    _tag(UNIV, PRIM, OID),
> +	[ 102] =    _action(ACT_x509_note_OID),
> +	[ 103] =    ASN1_OP_MATCH_OR_SKIP,		// critical
> +	[ 104] =    _tag(UNIV, PRIM, BOOL),
> +	[ 105] =    ASN1_OP_MATCH_ACT,		// extnValue
> +	[ 106] =    _tag(UNIV, PRIM, OTS),
> +	[ 107] =    _action(ACT_x509_process_extension),
> +	[ 108] =   ASN1_OP_END_SEQ,
> +	[ 109] =  ASN1_OP_END_SEQ_OF,
> +	[ 110] =  _jump_target(98),
> +	[ 111] = ASN1_OP_END_SEQ,
> +	[ 112] = ASN1_OP_RETURN,
>  };
>  
>  const struct asn1_decoder x509_decoder = {
> diff --git a/backport/compat/verification/x509.asn1.h b/backport/compat/verification/x509.asn1.h
> index 4f32a25d6660..77ec6085ae75 100644
> --- a/backport/compat/verification/x509.asn1.h
> +++ b/backport/compat/verification/x509.asn1.h
> @@ -13,6 +13,7 @@ extern int x509_note_OID(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_issuer(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_not_after(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_not_before(void *, size_t, unsigned char, const void *, size_t);
> +extern int x509_note_params(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_pkey_algo(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_serial(void *, size_t, unsigned char, const void *, size_t);
>  extern int x509_note_signature(void *, size_t, unsigned char, const void *, size_t);
>
Johannes Berg Feb. 24, 2020, 8:39 a.m. UTC | #2
> Should we generate these files automatically?

I think it needs this asn1parser infrastructure from the kernel

> Sine this commit flex and bison are anyway needed for building:
> https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git/commit/?id=4ec72687181df4b786152747c008a688c9b9b9de

Not "just" flex/bison (which, btw, is giving me a lot of trouble on
Fedora 31 because 'yacc' is not bison...

> Why did you use kernel 5.2 and nothing more recent?

Old patch from Luca lingering in our tree.

johannes


--
To unsubscribe from this list: send the line "unsubscribe backports" in
diff mbox series

Patch

diff --git a/backport/compat/verification/x509.asn1.c b/backport/compat/verification/x509.asn1.c
index 316c10e3267f..e68864b6a1f5 100644
--- a/backport/compat/verification/x509.asn1.c
+++ b/backport/compat/verification/x509.asn1.c
@@ -13,13 +13,14 @@  enum x509_actions {
 	ACT_x509_note_issuer = 3,
 	ACT_x509_note_not_after = 4,
 	ACT_x509_note_not_before = 5,
-	ACT_x509_note_pkey_algo = 6,
-	ACT_x509_note_serial = 7,
-	ACT_x509_note_signature = 8,
-	ACT_x509_note_subject = 9,
-	ACT_x509_note_tbs_certificate = 10,
-	ACT_x509_process_extension = 11,
-	NR__x509_actions = 12
+	ACT_x509_note_params = 6,
+	ACT_x509_note_pkey_algo = 7,
+	ACT_x509_note_serial = 8,
+	ACT_x509_note_signature = 9,
+	ACT_x509_note_subject = 10,
+	ACT_x509_note_tbs_certificate = 11,
+	ACT_x509_process_extension = 12,
+	NR__x509_actions = 13
 };
 
 static const asn1_action_t x509_action_table[NR__x509_actions] = {
@@ -29,12 +30,13 @@  static const asn1_action_t x509_action_table[NR__x509_actions] = {
 	[   3] = x509_note_issuer,
 	[   4] = x509_note_not_after,
 	[   5] = x509_note_not_before,
-	[   6] = x509_note_pkey_algo,
-	[   7] = x509_note_serial,
-	[   8] = x509_note_signature,
-	[   9] = x509_note_subject,
-	[  10] = x509_note_tbs_certificate,
-	[  11] = x509_process_extension,
+	[   6] = x509_note_params,
+	[   7] = x509_note_pkey_algo,
+	[   8] = x509_note_serial,
+	[   9] = x509_note_signature,
+	[  10] = x509_note_subject,
+	[  11] = x509_note_tbs_certificate,
+	[  12] = x509_process_extension,
 };
 
 static const unsigned char x509_machine[] = {
@@ -61,7 +63,7 @@  static const unsigned char x509_machine[] = {
 	// Name
 	[  16] =   ASN1_OP_MATCH_JUMP,
 	[  17] =   _tag(UNIV, CONS, SEQ),
-	[  18] =   _jump_target(80),		// --> Name
+	[  18] =   _jump_target(81),		// --> Name
 	[  19] =   ASN1_OP_ACT,
 	[  20] =   _action(ACT_x509_note_issuer),
 	// Validity
@@ -87,7 +89,7 @@  static const unsigned char x509_machine[] = {
 	// Name
 	[  38] =   ASN1_OP_MATCH_JUMP,
 	[  39] =   _tag(UNIV, CONS, SEQ),
-	[  40] =   _jump_target(80),		// --> Name
+	[  40] =   _jump_target(81),		// --> Name
 	[  41] =   ASN1_OP_ACT,
 	[  42] =   _action(ACT_x509_note_subject),
 	// SubjectPublicKeyInfo
@@ -109,7 +111,7 @@  static const unsigned char x509_machine[] = {
 	[  55] =   _tagn(CONT, PRIM,  2),
 	[  56] =   ASN1_OP_MATCH_JUMP_OR_SKIP,		// extensions
 	[  57] =   _tagn(CONT, CONS,  3),
-	[  58] =   _jump_target(95),
+	[  58] =   _jump_target(96),
 	[  59] =  ASN1_OP_END_SEQ,
 	[  60] =  ASN1_OP_ACT,
 	[  61] =  _action(ACT_x509_note_tbs_certificate),
@@ -132,47 +134,48 @@  static const unsigned char x509_machine[] = {
 	[  74] =  ASN1_OP_MATCH_ACT,		// algorithm
 	[  75] =  _tag(UNIV, PRIM, OID),
 	[  76] =  _action(ACT_x509_note_OID),
-	[  77] =  ASN1_OP_MATCH_ANY_OR_SKIP,		// parameters
-	[  78] = ASN1_OP_END_SEQ,
-	[  79] = ASN1_OP_RETURN,
+	[  77] =  ASN1_OP_MATCH_ANY_ACT_OR_SKIP,		// parameters
+	[  78] =  _action(ACT_x509_note_params),
+	[  79] = ASN1_OP_END_SEQ,
+	[  80] = ASN1_OP_RETURN,
 
 	// RelativeDistinguishedName
-	[  80] =  ASN1_OP_MATCH,
-	[  81] =  _tag(UNIV, CONS, SET),
+	[  81] =  ASN1_OP_MATCH,
+	[  82] =  _tag(UNIV, CONS, SET),
 	// AttributeValueAssertion
-	[  82] =   ASN1_OP_MATCH,
-	[  83] =   _tag(UNIV, CONS, SEQ),
-	[  84] =    ASN1_OP_MATCH_ACT,		// attributeType
-	[  85] =    _tag(UNIV, PRIM, OID),
-	[  86] =    _action(ACT_x509_note_OID),
-	[  87] =    ASN1_OP_MATCH_ANY_ACT,		// attributeValue
-	[  88] =    _action(ACT_x509_extract_name_segment),
-	[  89] =   ASN1_OP_END_SEQ,
-	[  90] =  ASN1_OP_END_SET_OF,
-	[  91] =  _jump_target(82),
-	[  92] = ASN1_OP_END_SEQ_OF,
-	[  93] = _jump_target(80),
-	[  94] = ASN1_OP_RETURN,
+	[  83] =   ASN1_OP_MATCH,
+	[  84] =   _tag(UNIV, CONS, SEQ),
+	[  85] =    ASN1_OP_MATCH_ACT,		// attributeType
+	[  86] =    _tag(UNIV, PRIM, OID),
+	[  87] =    _action(ACT_x509_note_OID),
+	[  88] =    ASN1_OP_MATCH_ANY_ACT,		// attributeValue
+	[  89] =    _action(ACT_x509_extract_name_segment),
+	[  90] =   ASN1_OP_END_SEQ,
+	[  91] =  ASN1_OP_END_SET_OF,
+	[  92] =  _jump_target(83),
+	[  93] = ASN1_OP_END_SEQ_OF,
+	[  94] = _jump_target(81),
+	[  95] = ASN1_OP_RETURN,
 
 	// Extensions
-	[  95] =  ASN1_OP_MATCH,
-	[  96] =  _tag(UNIV, CONS, SEQ),
+	[  96] =  ASN1_OP_MATCH,
+	[  97] =  _tag(UNIV, CONS, SEQ),
 	// Extension
-	[  97] =   ASN1_OP_MATCH,
-	[  98] =   _tag(UNIV, CONS, SEQ),
-	[  99] =    ASN1_OP_MATCH_ACT,		// extnid
-	[ 100] =    _tag(UNIV, PRIM, OID),
-	[ 101] =    _action(ACT_x509_note_OID),
-	[ 102] =    ASN1_OP_MATCH_OR_SKIP,		// critical
-	[ 103] =    _tag(UNIV, PRIM, BOOL),
-	[ 104] =    ASN1_OP_MATCH_ACT,		// extnValue
-	[ 105] =    _tag(UNIV, PRIM, OTS),
-	[ 106] =    _action(ACT_x509_process_extension),
-	[ 107] =   ASN1_OP_END_SEQ,
-	[ 108] =  ASN1_OP_END_SEQ_OF,
-	[ 109] =  _jump_target(97),
-	[ 110] = ASN1_OP_END_SEQ,
-	[ 111] = ASN1_OP_RETURN,
+	[  98] =   ASN1_OP_MATCH,
+	[  99] =   _tag(UNIV, CONS, SEQ),
+	[ 100] =    ASN1_OP_MATCH_ACT,		// extnid
+	[ 101] =    _tag(UNIV, PRIM, OID),
+	[ 102] =    _action(ACT_x509_note_OID),
+	[ 103] =    ASN1_OP_MATCH_OR_SKIP,		// critical
+	[ 104] =    _tag(UNIV, PRIM, BOOL),
+	[ 105] =    ASN1_OP_MATCH_ACT,		// extnValue
+	[ 106] =    _tag(UNIV, PRIM, OTS),
+	[ 107] =    _action(ACT_x509_process_extension),
+	[ 108] =   ASN1_OP_END_SEQ,
+	[ 109] =  ASN1_OP_END_SEQ_OF,
+	[ 110] =  _jump_target(98),
+	[ 111] = ASN1_OP_END_SEQ,
+	[ 112] = ASN1_OP_RETURN,
 };
 
 const struct asn1_decoder x509_decoder = {
diff --git a/backport/compat/verification/x509.asn1.h b/backport/compat/verification/x509.asn1.h
index 4f32a25d6660..77ec6085ae75 100644
--- a/backport/compat/verification/x509.asn1.h
+++ b/backport/compat/verification/x509.asn1.h
@@ -13,6 +13,7 @@  extern int x509_note_OID(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_issuer(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_not_after(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_not_before(void *, size_t, unsigned char, const void *, size_t);
+extern int x509_note_params(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_pkey_algo(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_serial(void *, size_t, unsigned char, const void *, size_t);
 extern int x509_note_signature(void *, size_t, unsigned char, const void *, size_t);