From 3c2ea78a09fef43cc72fe6143b1bd6b10522c7f2 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Mon, 2 May 2016 16:00:23 +0200 Subject: [PATCH] pki_gcrypt: Add a little more ASN1 infrastructure * src/pki_gcrypt.c (ASN1_OCTET_STRING): New macro. (ASN1_OBJECT_IDENTIFIER): Likewise. (asn1_check_tag): New function. Signed-off-by: Justus Winter Reviewed-by: Andreas Schneider --- src/pki_gcrypt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/pki_gcrypt.c b/src/pki_gcrypt.c index 982e3f46..fefc0c13 100644 --- a/src/pki_gcrypt.c +++ b/src/pki_gcrypt.c @@ -50,6 +50,8 @@ #define MAX_PASSPHRASE_SIZE 1024 #define ASN1_INTEGER 2 #define ASN1_BIT_STRING 3 +#define ASN1_OCTET_STRING 4 +#define ASN1_OBJECT_IDENTIFIER 6 #define ASN1_SEQUENCE 48 #define PKCS5_SALT_LEN 8 @@ -228,6 +230,19 @@ static int asn1_check_sequence(ssh_buffer buffer) { return 1; } +static int asn1_check_tag(ssh_buffer buffer, unsigned char tag) { + unsigned char tmp; + uint32_t len; + + len = ssh_buffer_get_data(buffer, &tmp, 1); + if (len == 0 || tmp != tag) { + return 0; + } + + (void) asn1_get_len(buffer); + return 1; +} + static int passphrase_to_key(char *data, unsigned int datalen, unsigned char *salt, unsigned char *key, unsigned int keylen) { MD5CTX md;