176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Copyright (C) 2007 Michael Brown <mbrown@fensystems.co.uk>. 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This program is free software; you can redistribute it and/or 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * modify it under the terms of the GNU General Public License as 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * published by the Free Software Foundation; either version 2 of the 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * License, or any later version. 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * This program is distributed in the hope that it will be useful, but 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * WITHOUT ANY WARRANTY; without even the implied warranty of 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * General Public License for more details. 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * You should have received a copy of the GNU General Public License 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * along with this program; if not, write to the Free Software 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanFILE_LICENCE ( GPL2_OR_LATER ); 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/** 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * @file 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Null crypto algorithm 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */ 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <string.h> 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include <gpxe/crypto.h> 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void digest_null_init ( void *ctx __unused ) { 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /* Do nothing */ 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void digest_null_update ( void *ctx __unused, const void *src __unused, 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman size_t len __unused ) { 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /* Do nothing */ 3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void digest_null_final ( void *ctx __unused, void *out __unused ) { 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /* Do nothing */ 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct digest_algorithm digest_null = { 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .name = "null", 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .ctxsize = 0, 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .blocksize = 1, 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .digestsize = 0, 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .init = digest_null_init, 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .update = digest_null_update, 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .final = digest_null_final, 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic int cipher_null_setkey ( void *ctx __unused, const void *key __unused, 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman size_t keylen __unused ) { 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /* Do nothing */ 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman return 0; 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void cipher_null_setiv ( void *ctx __unused, 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman const void *iv __unused ) { 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman /* Do nothing */ 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void cipher_null_encrypt ( void *ctx __unused, const void *src, 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman void *dst, size_t len ) { 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman memcpy ( dst, src, len ); 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstatic void cipher_null_decrypt ( void *ctx __unused, const void *src, 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman void *dst, size_t len ) { 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman memcpy ( dst, src, len ); 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman} 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct cipher_algorithm cipher_null = { 7576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .name = "null", 7676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .ctxsize = 0, 7776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .blocksize = 1, 7876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .setkey = cipher_null_setkey, 7976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .setiv = cipher_null_setiv, 8076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .encrypt = cipher_null_encrypt, 8176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .decrypt = cipher_null_decrypt, 8276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 8376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 8476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanstruct pubkey_algorithm pubkey_null = { 8576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .name = "null", 8676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman .ctxsize = 0, 8776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}; 88