Annotation of embedaddon/strongswan/src/libstrongswan/plugins/bliss/bliss_public_key.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2014 Andreas Steffen
! 3: * HSR Hochschule fuer Technik Rapperswil
! 4: *
! 5: * This program is free software; you can redistribute it and/or modify it
! 6: * under the terms of the GNU General Public License as published by the
! 7: * Free Software Foundation; either version 2 of the License, or (at your
! 8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
! 9: *
! 10: * This program is distributed in the hope that it will be useful, but
! 11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! 13: * for more details.
! 14: */
! 15:
! 16: /**
! 17: * @defgroup bliss_public_key bliss_public_key
! 18: * @{ @ingroup bliss_p
! 19: */
! 20:
! 21: #ifndef BLISS_PUBLIC_KEY_H_
! 22: #define BLISS_PUBLIC_KEY_H_
! 23:
! 24: #include "bliss_param_set.h"
! 25:
! 26: #include <credentials/builder.h>
! 27: #include <credentials/cred_encoding.h>
! 28: #include <credentials/keys/public_key.h>
! 29:
! 30: typedef struct bliss_public_key_t bliss_public_key_t;
! 31:
! 32: /**
! 33: * public_key_t implementation of BLISS signature algorithm
! 34: */
! 35: struct bliss_public_key_t {
! 36:
! 37: /**
! 38: * Implements the public_key_t interface
! 39: */
! 40: public_key_t key;
! 41: };
! 42:
! 43: /**
! 44: * Load a BLISS public key.
! 45: *
! 46: * Accepts BUILD_BLISS_* components.
! 47: *
! 48: * @param type type of the key, must be KEY_BLISS
! 49: * @param args builder_part_t argument list
! 50: * @return loaded key, NULL on failure
! 51: */
! 52: bliss_public_key_t *bliss_public_key_load(key_type_t type, va_list args);
! 53:
! 54: /* The following functions are shared with the bliss_private_key class */
! 55:
! 56: /**
! 57: * Parse an ASN.1 BIT STRING into an array of public key coefficients
! 58: *
! 59: * @param object packed subjectPublicKey
! 60: * @param set BLISS parameter set for public key vector
! 61: * @param pubkey coefficients of public key vector
! 62: * @return TRUE if parsing successful
! 63: */
! 64: bool bliss_public_key_from_asn1(chunk_t object, const bliss_param_set_t *set,
! 65: uint32_t **pubkey);
! 66:
! 67: /**
! 68: * Encode a raw BLISS subjectPublicKey in ASN.1 DER format
! 69: *
! 70: * @param pubkey coefficients of public key vector
! 71: * @param set BLISS parameter set for the public key vector
! 72: * @result ASN.1 encoded subjectPublicKey
! 73: */
! 74: chunk_t bliss_public_key_encode(uint32_t *pubkey, const bliss_param_set_t *set);
! 75:
! 76: /**
! 77: * Encode a BLISS subjectPublicKeyInfo record in ASN.1 DER format
! 78: *
! 79: * @param oid BLISS public key type OID
! 80: * @param pubkey coefficients of public key vector
! 81: * @param set BLISS parameter set for the public key vector
! 82: * @result ASN.1 encoded subjectPublicKeyInfo record
! 83: */
! 84: chunk_t bliss_public_key_info_encode(int oid, uint32_t *pubkey,
! 85: const bliss_param_set_t *set);
! 86:
! 87: /**
! 88: * Generate a BLISS public key fingerprint
! 89: *
! 90: * @param oid BLISS public key type OID
! 91: * @param pubkey coefficients of public key vector
! 92: * @param set BLISS parameter set for the public key vector
! 93: * @param type type of fingerprint to be generated
! 94: * @param fp generated fingerprint (must be freed by caller)
! 95: * @result TRUE if generation was successful
! 96: */
! 97: bool bliss_public_key_fingerprint(int oid, uint32_t *pubkey,
! 98: const bliss_param_set_t *set,
! 99: cred_encoding_type_t type, chunk_t *fp);
! 100:
! 101: #endif /** BLISS_PUBLIC_KEY_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>