Revert the size_t modifications from HEAD that had led to more
[openssl.git] / crypto / asn1 / asn1_locl.h
index aafb5afdb88f88de9ebcd371643fb5b46b39f756..5aa65e28f5f5cc241d9ec6394b2f2a0fc0c0b447 100644 (file)
@@ -1,9 +1,9 @@
 /* asn1t.h */
-/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
- * project 2005.
+/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
+ * project 2006.
  */
 /* ====================================================================
- * Copyright (c) 2005 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 2006 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -71,9 +71,6 @@ struct asn1_pctx_st
 
 /* ASN1 public key method structure */
 
-#define ASN1_PKEY_ALIAS                0x1
-#define ASN1_PKEY_DYNAMIC      0x2
-
 struct evp_pkey_asn1_method_st
        {
        int pkey_id;
@@ -97,8 +94,9 @@ struct evp_pkey_asn1_method_st
        int (*pkey_size)(const EVP_PKEY *pk);
        int (*pkey_bits)(const EVP_PKEY *pk);
 
-       int (*param_decode)(const EVP_PKEY *pk, X509_PUBKEY *pub);
-       int (*param_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk);
+       int (*param_decode)(EVP_PKEY *pkey,
+                               const unsigned char **pder, int derlen);
+       int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder);
        int (*param_missing)(const EVP_PKEY *pk);
        int (*param_copy)(EVP_PKEY *to, const EVP_PKEY *from);
        int (*param_cmp)(const EVP_PKEY *a, const EVP_PKEY *b);
@@ -106,5 +104,31 @@ struct evp_pkey_asn1_method_st
                                                        ASN1_PCTX *pctx);
 
        void (*pkey_free)(EVP_PKEY *pkey);
-       void (*pkey_ctrl)(EVP_PKEY *pkey, int op, long arg1, void *arg2);
+       int (*pkey_ctrl)(EVP_PKEY *pkey, int op, long arg1, void *arg2);
+
+       /* Legacy functions for old PEM */
+
+       int (*old_priv_decode)(EVP_PKEY *pkey,
+                               const unsigned char **pder, int derlen);
+       int (*old_priv_encode)(const EVP_PKEY *pkey, unsigned char **pder);
+
        } /* EVP_PKEY_ASN1_METHOD */;
+
+/* Method to handle CRL access.
+ * In general a CRL could be very large (several Mb) and can consume large
+ * amounts of resources if stored in memory by multiple processes.
+ * This method allows general CRL operations to be redirected to more
+ * efficient callbacks: for example a CRL entry database.
+ */
+
+#define X509_CRL_METHOD_DYNAMIC                1
+
+struct x509_crl_method_st
+       {
+       int flags;
+       int (*crl_init)(X509_CRL *crl);
+       int (*crl_free)(X509_CRL *crl);
+       int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret,
+                               ASN1_INTEGER *ser, X509_NAME *issuer);
+       int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk);
+       };