Return to prsa_tok.l CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon |
1.1 ! misho 1: /* $NetBSD: prsa_tok.l,v 1.4 2006/09/09 16:22:10 manu Exp $ */ ! 2: ! 3: /* Id: prsa_tok.l,v 1.2 2004/07/12 20:43:51 ludvigm Exp */ ! 4: ! 5: %{ ! 6: /* ! 7: * Copyright (C) 2004 SuSE Linux AG, Nuernberg, Germany. ! 8: * Contributed by: Michal Ludvig <mludvig@suse.cz>, SUSE Labs ! 9: * All rights reserved. ! 10: * ! 11: * Redistribution and use in source and binary forms, with or without ! 12: * modification, are permitted provided that the following conditions ! 13: * are met: ! 14: * 1. Redistributions of source code must retain the above copyright ! 15: * notice, this list of conditions and the following disclaimer. ! 16: * 2. Redistributions in binary form must reproduce the above copyright ! 17: * notice, this list of conditions and the following disclaimer in the ! 18: * documentation and/or other materials provided with the distribution. ! 19: * 3. Neither the name of the project nor the names of its contributors ! 20: * may be used to endorse or promote products derived from this software ! 21: * without specific prior written permission. ! 22: * ! 23: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND ! 24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 26: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE ! 27: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 33: * SUCH DAMAGE. ! 34: */ ! 35: ! 36: /* This file contains a tokeniser for FreeS/WAN-style ipsec.secrets RSA keys. */ ! 37: ! 38: #include <string.h> ! 39: #include <openssl/bn.h> ! 40: #include <openssl/rsa.h> ! 41: #include "prsa_par.h" ! 42: ! 43: extern int prsalex (void); ! 44: extern int prsa_cur_lineno; ! 45: ! 46: %} ! 47: ! 48: comment \#.* ! 49: digit [0-9] ! 50: octet (([01]?{digit}?{digit})|((2([0-4]{digit}))|(25[0-5]))) ! 51: addr4 {octet}\.{octet}\.{octet}\.{octet} ! 52: hex [0-9a-fA-F] ! 53: word6 {hex}{0,4} ! 54: base64 [A-Za-z0-9+/=] ! 55: addr6 (::({word6}|{addr4})?|({word6}:)+:?({word6}|{addr4})?) ! 56: %% ! 57: \{ { return OBRACE; } ! 58: \} { return EBRACE; } ! 59: : { return COLON; } ! 60: RSA { return TAG_RSA; } ! 61: PSK { return TAG_PSK; } ! 62: PUB { return TAG_PUB; } ! 63: 0x[0-9a-fA-F]+ { ! 64: BIGNUM *bn = BN_new(); ! 65: BN_hex2bn(&bn, prsatext+2); ! 66: prsalval.bn = bn; ! 67: return HEX; ! 68: } ! 69: 0s{base64}+ { ! 70: prsalval.chr = strdup(prsatext); ! 71: return BASE64; ! 72: } ! 73: Modulus { return MODULUS; } ! 74: PublicExponent { return PUBLIC_EXPONENT; } ! 75: PrivateExponent { return PRIVATE_EXPONENT; } ! 76: Prime1 { return PRIME1; } ! 77: Prime2 { return PRIME2; } ! 78: Exponent1 { return EXPONENT1; } ! 79: Exponent2 { return EXPONENT2; } ! 80: Coefficient { return COEFFICIENT; } ! 81: \/ { return SLASH; } ! 82: {digit}+ { prsalval.num = atol(prsatext); return NUMBER; } ! 83: any { return ADDRANY; } ! 84: {addr4} { prsalval.chr = strdup(prsatext); return ADDR4; } ! 85: {addr6} { prsalval.chr = strdup(prsatext); return ADDR6; } ! 86: [ \t]* ; ! 87: \n { prsa_cur_lineno++; } ! 88: \#.* ; ! 89: %%