+/****d* silccrypt/SilcPKCSAlgorithms
+ *
+ * NAME
+ *
+ * PKCS Algorithms
+ *
+ * DESCRIPTION
+ *
+ * Supported PKCS algorithm names. These names can be given as argument
+ * to silc_pkcs_find_algorithm. See also SilcPKCSSchemes.
+ *
+ * SOURCE
+ */
+#define SILC_PKCS_ALG_RSA "rsa" /* RSA algorithm */
+#define SILC_PKCS_ALG_DSA "dsa" /* DSA algorithm */
+/***/
+
+/****d* silccrypt/SilcPKCSSchemes
+ *
+ * NAME
+ *
+ * PKCS Algorithm Schemes
+ *
+ * DESCRIPTION
+ *
+ * Supported PKCS algorithm scheme names. Different algorithms can be
+ * implemented in different ways to conform differnet standards and
+ * protocols. The scheme defines these ways. The scheme is given as
+ * argument to silc_pkcs_find_algorithm.
+ *
+ * SOURCE
+ */
+
+/* PKCS #1 version 2.x. This performs RSASSA-PKCS-v1_5 and RSAES-PKCS-v1_5
+ with hash OID in the signature data (signature with appendix). This can
+ be used with SILC_PKCS_ALG_RSA. Default hash function used with
+ signatures is SHA-1. */
+#define SILC_PKCS_SCHEME_PKCS1 "pkcs1"
+
+/* PKCS #1 version 2.x. Same as SILC_PKCS_SCHEME_PKCS1 but the hash OID
+ is not present in the signature data. This can be used with
+ SILC_PKCS_ALG_RSA. Default hash function used with signatures is SHA-1. */
+#define SILC_PKCS_SCHEME_PKCS1_NO_OID "pkcs1-no-oid"
+
+/* The Digital Signature Standard, FIPS 186-3. The latest DSS standard
+ version. The key parameters and hash function used are derived
+ automatically by the key length and the signature length is variable.
+ This can be used with SILC_PKCS_ALG_DSA. */
+#define SILC_PKCS_SCHEME_DSS "dss"
+
+/* The Digital Signature Standard, FIPS 186-2. Same as the
+ SILC_PKCS_SCHEME_DSS but the signature length is always 160 bits and
+ hash function used is SHA-1. This is the most widely used DSS version
+ (<= year 2008). This can be used with SILC_PKCS_ALG_DSA. This is
+ compatible with SILC_PKCS_ALG_DSS when verifying signatures, but cannot
+ necessarily create compatible signature. */
+#define SILC_PKCS_SCHEME_DSS_FIPS186_2 "dss-fips186-2"
+
+#ifdef SILC_DIST_SSH
+/* The SSH2 protocol scheme. This can be used with SILC_PKCS_ALG_RSA and
+ SILC_PKCS_ALG_DSA. When used the algorithms behave as defined in the
+ SSH2 protocol. */
+#define SILC_PKCS_SCHEME_SSH "ssh"
+#endif /* SILC_DIST_SSH */
+
+#ifdef SILC_DIST_PGP
+/* The OpenPGP protocol scheme. This can be used with SILC_PKCS_ALG_RSA and
+ SILC_PKCS_ALG_DSA. When used the algorithms behave as defined in the
+ OpenPGP protocol. */
+#define SILC_PKCS_SCHEME_OPENPGP "openpgp"
+#endif /* SILC_DIST_PGP */
+/***/
+
+/****s* silccrypt/SilcPublicKey