changed get_id/get_encoding API of private/public key to use new encoding framework
authorMartin Willi <martin@strongswan.org>
Mon, 24 Aug 2009 12:04:23 +0000 (14:04 +0200)
committerMartin Willi <martin@strongswan.org>
Wed, 26 Aug 2009 09:23:52 +0000 (11:23 +0200)
src/libstrongswan/credentials/keys/private_key.h
src/libstrongswan/credentials/keys/public_key.h

index bbc77a8..3bea9c2 100644 (file)
 
 typedef struct private_key_t private_key_t;
 
-#include <utils/identification.h>
 #include <credentials/keys/public_key.h>
 
 /**
  * Abstract private key interface.
  */
 struct private_key_t {
-
+       
        /**
         * Get the key type.
         *
         * @return                      type of the key
         */
        key_type_t (*get_type)(private_key_t *this);
-
+       
        /**
         * Create a signature over a chunk of data.
         *
@@ -63,14 +62,6 @@ struct private_key_t {
         * @return                      strength of the key in bytes
         */
        size_t (*get_keysize) (private_key_t *this);
-
-       /**
-        * Get a unique key identifier, such as a hash over the public key.
-        * 
-        * @param type          type of the key ID to get
-        * @return                      unique ID of the key as identification_t, or NULL
-        */
-       identification_t* (*get_id) (private_key_t *this, id_type_t type);
        
        /**
         * Get the public part from the private key.
@@ -86,7 +77,7 @@ struct private_key_t {
         * @return                      TRUE, if equality
         */
        bool (*equals) (private_key_t *this, private_key_t *other);
-
+       
        /**
         * Check if a private key belongs to a public key.
         * 
@@ -96,13 +87,24 @@ struct private_key_t {
        bool (*belongs_to) (private_key_t *this, public_key_t *public);
        
        /**
-        * Get an encoded form of the private key.
+        * Get the fingerprint of the key.
         *
-        * @todo Do we need a encoding type specification?
+        * @param type          type of fingerprint, one of KEY_ID_*
+        * @param fp            fingerprint, points to internal data
+        * @return                      TRUE if fingerprint type supported
+        */
+       bool (*get_fingerprint)(private_key_t *this, key_encoding_type_t type,
+                                                       chunk_t *fp);
+       
+       /**
+        * Get the key in an encoded form as a chunk.
         *
-        * @return                      allocated chunk containing encoded private key
+        * @param type          type of the encoding, one of KEY_PRIV_*
+        * @param encoding      encoding of the key, allocated
+        * @return                      TRUE if encoding supported
         */
-       chunk_t (*get_encoding)(private_key_t *this);   
+       bool (*get_encoding)(private_key_t *this, key_encoding_type_t type,
+                                                chunk_t *encoding);
        
        /**
         * Increase the refcount to this private key.
index 6cab37d..294a956 100644 (file)
@@ -137,23 +137,26 @@ struct public_key_t {
         * @return                      strength of the key in bytes
         */
        size_t (*get_keysize) (public_key_t *this);
-
+       
        /**
-        * Get a unique key identifier, such as a hash over the key.
-        * 
-        * @param type          type of the key ID to get
-        * @return                      unique ID of the key as identification_t, or NULL
+        * Get the fingerprint of the key.
+        *
+        * @param type          type of fingerprint, one of KEY_ID_*
+        * @param fp            fingerprint, points to internal data
+        * @return                      TRUE if fingerprint type supported
         */
-       identification_t* (*get_id) (public_key_t *this, id_type_t type);
+       bool (*get_fingerprint)(public_key_t *this, key_encoding_type_t type,
+                                                       chunk_t *fp);
        
        /**
-        * Get an encoded form of the key.
-        *
-        * @todo Do we need a encoding type specification?
+        * Get the key in an encoded form as a chunk.
         *
-        * @return                      allocated chunk containing encoded key
+        * @param type          type of the encoding, one of KEY_PRIV_*
+        * @param encoding      encoding of the key, allocated
+        * @return                      TRUE if encoding supported
         */
-       chunk_t (*get_encoding)(public_key_t *this);    
+       bool (*get_encoding)(public_key_t *this, key_encoding_type_t type,
+                                                chunk_t *encoding);
        
        /**
         * Increase the refcount of the key.