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