pluto and scepclient use private and public key plugins of libstrongswan
This commit is contained in:
committed by
Martin Willi
parent
b00fbdb55a
commit
8b799d55ce
@@ -20,6 +20,8 @@ ENUM(builder_part_names, BUILD_FROM_FILE, BUILD_END,
|
||||
"BUILD_AGENT_SOCKET",
|
||||
"BUILD_BLOB_ASN1_DER",
|
||||
"BUILD_BLOB_ASN1_PEM",
|
||||
"BUILD_BLOB_PGP",
|
||||
"BUILD_BLOB_RFC_3110",
|
||||
"BUILD_KEY_SIZE",
|
||||
"BUILD_SIGNING_KEY",
|
||||
"BUILD_SIGNING_CERT",
|
||||
|
||||
@@ -38,14 +38,18 @@ typedef builder_t* (*builder_constructor_t)(int subtype);
|
||||
* Parts to build credentials from.
|
||||
*/
|
||||
enum builder_part_t {
|
||||
/** path to a file containing an ASN1 blob, char* */
|
||||
/** path to a file containing an ASN.1 blob, char* */
|
||||
BUILD_FROM_FILE,
|
||||
/** unix socket of a ssh/pgp agent, char* */
|
||||
BUILD_AGENT_SOCKET,
|
||||
/** DER encoded ASN1 blob, chunk_t */
|
||||
/** DER encoded ASN.1 blob, chunk_t */
|
||||
BUILD_BLOB_ASN1_DER,
|
||||
/** PEM encoded ASN1 blob, null terminated char* */
|
||||
/** PEM encoded ASN.1 blob, null terminated char* */
|
||||
BUILD_BLOB_ASN1_PEM,
|
||||
/** OpenPGP key blob, chunk_t */
|
||||
BUILD_BLOB_PGP,
|
||||
/** RFC 3110 DNS public key blob, chunk_t */
|
||||
BUILD_BLOB_RFC_3110,
|
||||
/** key size in bits, as used for key generation, u_int */
|
||||
BUILD_KEY_SIZE,
|
||||
/** private key to use for signing, private_key_t* */
|
||||
|
||||
@@ -156,6 +156,8 @@ static void* create(private_credential_factory_t *this, credential_type_t type,
|
||||
case BUILD_END:
|
||||
break;
|
||||
case BUILD_BLOB_ASN1_DER:
|
||||
case BUILD_BLOB_PGP:
|
||||
case BUILD_BLOB_RFC_3110:
|
||||
case BUILD_SERIAL:
|
||||
builder->add(builder, part, va_arg(args, chunk_t));
|
||||
continue;
|
||||
|
||||
@@ -79,6 +79,14 @@ struct private_key_t {
|
||||
*/
|
||||
public_key_t* (*get_public_key)(private_key_t *this);
|
||||
|
||||
/**
|
||||
* Check if two private keys are equal.
|
||||
*
|
||||
* @param other other private key
|
||||
* @return TRUE, if equality
|
||||
*/
|
||||
bool (*equals) (private_key_t *this, private_key_t *other);
|
||||
|
||||
/**
|
||||
* Check if a private key belongs to a public key.
|
||||
*
|
||||
|
||||
@@ -15,13 +15,15 @@
|
||||
|
||||
#include "public_key.h"
|
||||
|
||||
ENUM(key_type_names, KEY_RSA, KEY_ECDSA,
|
||||
ENUM(key_type_names, KEY_RSA, KEY_DSA,
|
||||
"RSA",
|
||||
"ECDSA"
|
||||
"ECDSA",
|
||||
"DSA"
|
||||
);
|
||||
|
||||
ENUM(signature_scheme_names, SIGN_DEFAULT, SIGN_ECDSA_521,
|
||||
"DEFAULT",
|
||||
"RSA_EMSA_PKCS1_NULL",
|
||||
"RSA_EMSA_PKCS1_MD5",
|
||||
"RSA_EMSA_PKCS1_SHA1",
|
||||
"RSA_EMSA_PKCS1_SHA256",
|
||||
|
||||
@@ -34,12 +34,14 @@ typedef enum signature_scheme_t signature_scheme_t;
|
||||
*/
|
||||
enum key_type_t {
|
||||
/** key type wildcard */
|
||||
KEY_ANY,
|
||||
KEY_ANY = 0,
|
||||
/** RSA crypto system as in PKCS#1 */
|
||||
KEY_RSA,
|
||||
KEY_RSA = 1,
|
||||
/** ECDSA as in ANSI X9.62 */
|
||||
KEY_ECDSA,
|
||||
/** DSS, ElGamal, ... */
|
||||
KEY_ECDSA = 2,
|
||||
/** DSA */
|
||||
KEY_DSA = 3,
|
||||
/** ElGamal, ... */
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -50,29 +52,33 @@ extern enum_name_t *key_type_names;
|
||||
/**
|
||||
* Signature scheme for signature creation
|
||||
*
|
||||
* EMSA-PKCS1 signatures are from the PKCS#1 standard. They include
|
||||
* the ASN1-OID of the used hash algorithm.
|
||||
* EMSA-PKCS1 signatures are defined in PKCS#1 standard.
|
||||
* A prepended ASN.1 encoded digestInfo field contains the
|
||||
* OID of the used hash algorithm. The ASN.1 type of the PKCS#7
|
||||
* variants is OCTET_STRING instead of the default BIT_STRING.
|
||||
*/
|
||||
enum signature_scheme_t {
|
||||
/** default scheme of that underlying crypto system */
|
||||
/** Default scheme of the underlying crypto system */
|
||||
SIGN_DEFAULT,
|
||||
/** EMSA-PKCS1 with MD5 */
|
||||
/** EMSA-PKCS1_v1.5 signature over digest without digestInfo */
|
||||
SIGN_RSA_EMSA_PKCS1_NULL,
|
||||
/** EMSA-PKCS1_v1.5 signature as in PKCS#1 using RSA and MD5 */
|
||||
SIGN_RSA_EMSA_PKCS1_MD5,
|
||||
/** EMSA-PKCS1 signature as in PKCS#1 standard using SHA1 as hash. */
|
||||
/** EMSA-PKCS1_v1.5 signature as in PKCS#1 using RSA and SHA-1 */
|
||||
SIGN_RSA_EMSA_PKCS1_SHA1,
|
||||
/** EMSA-PKCS1 signature as in PKCS#1 standard using SHA256 as hash. */
|
||||
/** EMSA-PKCS1_v1.5 signature as in PKCS#1 using RSA and SHA-256 */
|
||||
SIGN_RSA_EMSA_PKCS1_SHA256,
|
||||
/** EMSA-PKCS1 signature as in PKCS#1 standard using SHA384 as hash. */
|
||||
/** EMSA-PKCS1_v1.5 signature as in PKCS#1 using RSA and SHA-384 */
|
||||
SIGN_RSA_EMSA_PKCS1_SHA384,
|
||||
/** EMSA-PKCS1 signature as in PKCS#1 standard using SHA512 as hash. */
|
||||
/** EMSA-PKCS1_v1.5 signature as in PKCS#1 using RSA and SHA-512 */
|
||||
SIGN_RSA_EMSA_PKCS1_SHA512,
|
||||
/** ECDSA using SHA-1 as hash. */
|
||||
/** ECDSA with SHA-1 */
|
||||
SIGN_ECDSA_WITH_SHA1,
|
||||
/** ECDSA with SHA-256 on the P-256 curve as in RFC 4754 */
|
||||
/** ECDSA on the P-256 curve with SHA-256 as in RFC 4754 */
|
||||
SIGN_ECDSA_256,
|
||||
/** ECDSA with SHA-384 on the P-384 curve as in RFC 4754 */
|
||||
/** ECDSA on the P-384 curve with SHA-384 as in RFC 4754 */
|
||||
SIGN_ECDSA_384,
|
||||
/** ECDSA with SHA-512 on the P-521 curve as in RFC 4754 */
|
||||
/** ECDSA on the P-521 curve with SHA-512 as in RFC 4754 */
|
||||
SIGN_ECDSA_521,
|
||||
};
|
||||
|
||||
@@ -107,12 +113,20 @@ struct public_key_t {
|
||||
/**
|
||||
* Encrypt a chunk of data.
|
||||
*
|
||||
* @param crypto chunk containing plaintext data
|
||||
* @param plain where to allocate encrypted data
|
||||
* @param plain chunk containing plaintext data
|
||||
* @param crypto where to allocate encrypted data
|
||||
* @return TRUE if data successfully encrypted
|
||||
*/
|
||||
bool (*encrypt)(public_key_t *this, chunk_t crypto, chunk_t *plain);
|
||||
bool (*encrypt)(public_key_t *this, chunk_t plain, chunk_t *crypto);
|
||||
|
||||
/**
|
||||
* Check if two public keys are equal.
|
||||
*
|
||||
* @param other other public key
|
||||
* @return TRUE, if equality
|
||||
*/
|
||||
bool (*equals)(public_key_t *this, public_key_t *other);
|
||||
|
||||
/**
|
||||
* Get the strength of the key in bytes.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user