Rewrite the extension code to use an ASN1_ITEM structure
[openssl.git] / crypto / x509v3 / v3_skey.c
index 932cd8b26ce758240aaafff091e300e2da5a5b3e..58da456cb566d79036ab9f6590e12a7983a0d74d 100644 (file)
 
 #include <stdio.h>
 #include "cryptlib.h"
 
 #include <stdio.h>
 #include "cryptlib.h"
-#include "x509v3.h"
+#include <openssl/x509v3.h>
 
 
-#ifndef NOPROTO
-static ASN1_OCTET_STRING *octet_string_new(void);
 static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
 static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
-#else
-static ASN1_OCTET_STRING *s2i_skey_id();
-static ASN1_OCTET_STRING *octet_string_new();
-#endif
-
 X509V3_EXT_METHOD v3_skey_id = { 
 X509V3_EXT_METHOD v3_skey_id = { 
-NID_subject_key_identifier, 0,
-(X509V3_EXT_NEW)octet_string_new, ASN1_STRING_free,
-(X509V3_EXT_D2I)d2i_ASN1_OCTET_STRING,
-i2d_ASN1_OCTET_STRING,
+NID_subject_key_identifier, 0, &ASN1_OCTET_STRING_it,
+0,0,0,0,
 (X509V3_EXT_I2S)i2s_ASN1_OCTET_STRING,
 (X509V3_EXT_S2I)s2i_skey_id,
 (X509V3_EXT_I2S)i2s_ASN1_OCTET_STRING,
 (X509V3_EXT_S2I)s2i_skey_id,
-NULL, NULL, NULL, NULL, NULL};
-
-
-static ASN1_OCTET_STRING *octet_string_new(void)
-{
-       return ASN1_OCTET_STRING_new();
-}
+0,0,0,0,
+NULL};
 
 
-char *i2s_ASN1_OCTET_STRING(method, oct)
-X509V3_EXT_METHOD *method;
-ASN1_OCTET_STRING *oct;
+char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
+            ASN1_OCTET_STRING *oct)
 {
        return hex_to_string(oct->data, oct->length);
 }
 
 {
        return hex_to_string(oct->data, oct->length);
 }
 
-ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(method, ctx, str)
-X509V3_EXT_METHOD *method;
-X509V3_CTX *ctx;
-char *str;
+ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
+            X509V3_CTX *ctx, char *str)
 {
        ASN1_OCTET_STRING *oct;
        long length;
 
 {
        ASN1_OCTET_STRING *oct;
        long length;
 
-       if(!(oct = ASN1_OCTET_STRING_new())) {
+       if(!(oct = M_ASN1_OCTET_STRING_new())) {
                X509V3err(X509V3_F_S2I_ASN1_OCTET_STRING,ERR_R_MALLOC_FAILURE);
                return NULL;
        }
 
        if(!(oct->data = string_to_hex(str, &length))) {
                X509V3err(X509V3_F_S2I_ASN1_OCTET_STRING,ERR_R_MALLOC_FAILURE);
                return NULL;
        }
 
        if(!(oct->data = string_to_hex(str, &length))) {
-               ASN1_OCTET_STRING_free(oct);
+               M_ASN1_OCTET_STRING_free(oct);
                return NULL;
        }
 
                return NULL;
        }
 
@@ -115,10 +98,8 @@ char *str;
 
 }
 
 
 }
 
-static ASN1_OCTET_STRING *s2i_skey_id(method, ctx, str)
-X509V3_EXT_METHOD *method;
-X509V3_CTX *ctx;
-char *str;
+static ASN1_OCTET_STRING *s2i_skey_id(X509V3_EXT_METHOD *method,
+            X509V3_CTX *ctx, char *str)
 {
        ASN1_OCTET_STRING *oct;
        ASN1_BIT_STRING *pk;
 {
        ASN1_OCTET_STRING *oct;
        ASN1_BIT_STRING *pk;
@@ -128,7 +109,7 @@ char *str;
 
        if(strcmp(str, "hash")) return s2i_ASN1_OCTET_STRING(method, ctx, str);
 
 
        if(strcmp(str, "hash")) return s2i_ASN1_OCTET_STRING(method, ctx, str);
 
-       if(!(oct = ASN1_OCTET_STRING_new())) {
+       if(!(oct = M_ASN1_OCTET_STRING_new())) {
                X509V3err(X509V3_F_S2I_S2I_SKEY_ID,ERR_R_MALLOC_FAILURE);
                return NULL;
        }
                X509V3err(X509V3_F_S2I_S2I_SKEY_ID,ERR_R_MALLOC_FAILURE);
                return NULL;
        }
@@ -153,7 +134,7 @@ char *str;
        EVP_DigestUpdate(&md, pk->data, pk->length);
        EVP_DigestFinal(&md, pkey_dig, &diglen);
 
        EVP_DigestUpdate(&md, pk->data, pk->length);
        EVP_DigestFinal(&md, pkey_dig, &diglen);
 
-       if(!ASN1_OCTET_STRING_set(oct, pkey_dig, diglen)) {
+       if(!M_ASN1_OCTET_STRING_set(oct, pkey_dig, diglen)) {
                X509V3err(X509V3_F_S2I_S2I_SKEY_ID,ERR_R_MALLOC_FAILURE);
                goto err;
        }
                X509V3err(X509V3_F_S2I_S2I_SKEY_ID,ERR_R_MALLOC_FAILURE);
                goto err;
        }
@@ -161,6 +142,6 @@ char *str;
        return oct;
        
        err:
        return oct;
        
        err:
-       ASN1_OCTET_STRING_free(oct);
+       M_ASN1_OCTET_STRING_free(oct);
        return NULL;
 }
        return NULL;
 }