Add flags field to EC_KEY structure (backport from HEAD).
authorDr. Stephen Henson <steve@openssl.org>
Mon, 6 Jun 2011 13:18:03 +0000 (13:18 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Mon, 6 Jun 2011 13:18:03 +0000 (13:18 +0000)
crypto/ec/ec.h
crypto/ec/ec_key.c
crypto/ec/ec_lcl.h

index 64d0a2948d7d232cedab52faf032d405bd82b0ef..c4fedeec253f98a418e676101a37b8a2199d0967 100644 (file)
@@ -701,11 +701,21 @@ typedef struct ec_key_st EC_KEY;
 #define EC_PKEY_NO_PARAMETERS  0x001
 #define EC_PKEY_NO_PUBKEY      0x002
 
+/* some values for the flags field */
+#define EC_FLAG_NON_FIPS_ALLOW 0x1
+#define EC_FLAG_FIPS_CHECKED   0x2
+
 /** Creates a new EC_KEY object.
  *  \return EC_KEY object or NULL if an error occurred.
  */
 EC_KEY *EC_KEY_new(void);
 
+int EC_KEY_get_flags(const EC_KEY *key);
+
+void EC_KEY_set_flags(EC_KEY *key, int flags);
+
+void EC_KEY_clear_flags(EC_KEY *key, int flags);
+
 /** Creates a new EC_KEY object using a named curve as underlying
  *  EC_GROUP object.
  *  \param  nid  NID of the named curve.
index 2e91b5405d229e027a64ba4c3cf1014116aa2812..101dd8d3d0d2d573ce62b2b7b784f37ebd07c4bc 100644 (file)
@@ -78,6 +78,7 @@ EC_KEY *EC_KEY_new(void)
                }
 
        ret->version = 1;       
+       ret->flags = 0;
        ret->group   = NULL;
        ret->pub_key = NULL;
        ret->priv_key= NULL;
@@ -197,6 +198,7 @@ EC_KEY *EC_KEY_copy(EC_KEY *dest, const EC_KEY *src)
        dest->enc_flag  = src->enc_flag;
        dest->conv_form = src->conv_form;
        dest->version   = src->version;
+       dest->flags = src->flags;
 
        return dest;
        }
@@ -537,3 +539,18 @@ int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx)
                return 0;
        return EC_GROUP_precompute_mult(key->group, ctx);
        }
+
+int EC_KEY_get_flags(const EC_KEY *key)
+       {
+       return key->flags;
+       }
+
+void EC_KEY_set_flags(EC_KEY *key, int flags)
+       {
+       key->flags |= flags;
+       }
+
+void EC_KEY_clear_flags(EC_KEY *key, int flags)
+       {
+       key->flags &= ~flags;
+       }
index 2e978181b9dbffb96e70b5ad38c8c488f89066fb..afa1efa4bcde4fabffaf31cf868b0bde65b9691a 100644 (file)
@@ -249,6 +249,7 @@ struct ec_key_st {
        point_conversion_form_t conv_form;
 
        int     references;
+       int     flags;
 
        EC_EXTRA_DATA *method_data;
 } /* EC_KEY */;