Moved to roken
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3549 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -1,149 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska H<>gskolan |  | ||||||
|  * (Royal Institute of Technology, Stockholm, Sweden). |  | ||||||
|  * All rights reserved. |  | ||||||
|  *  |  | ||||||
|  * Redistribution and use in source and binary forms, with or without |  | ||||||
|  * modification, are permitted provided that the following conditions |  | ||||||
|  * are met: |  | ||||||
|  *  |  | ||||||
|  * 1. Redistributions of source code must retain the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer. |  | ||||||
|  *  |  | ||||||
|  * 2. Redistributions in binary form must reproduce the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer in the |  | ||||||
|  *    documentation and/or other materials provided with the distribution. |  | ||||||
|  *  |  | ||||||
|  * 3. All advertising materials mentioning features or use of this software |  | ||||||
|  *    must display the following acknowledgement: |  | ||||||
|  *      This product includes software developed by the Kungliga Tekniska |  | ||||||
|  *      H<>gskolan and its contributors. |  | ||||||
|  *  |  | ||||||
|  * 4. Neither the name of the Institute nor the names of its contributors |  | ||||||
|  *    may be used to endorse or promote products derived from this software |  | ||||||
|  *    without specific prior written permission. |  | ||||||
|  *  |  | ||||||
|  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |  | ||||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |  | ||||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |  | ||||||
|  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |  | ||||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |  | ||||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |  | ||||||
|  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |  | ||||||
|  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |  | ||||||
|  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |  | ||||||
|  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |  | ||||||
|  * SUCH DAMAGE. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| #ifdef HAVE_CONFIG_H |  | ||||||
| #include <config.h> |  | ||||||
| RCSID("$Id$"); |  | ||||||
| #endif |  | ||||||
| #include <stdlib.h> |  | ||||||
| #include <string.h> |  | ||||||
| #include "base64.h" |  | ||||||
|  |  | ||||||
| static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |  | ||||||
|  |  | ||||||
| static int pos(char c) |  | ||||||
| { |  | ||||||
|   char *p; |  | ||||||
|   for(p = base64; *p; p++) |  | ||||||
|     if(*p == c) |  | ||||||
|       return p - base64; |  | ||||||
|   return -1; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int base64_encode(const void *data, int size, char **str) |  | ||||||
| { |  | ||||||
|   char *s, *p; |  | ||||||
|   int i; |  | ||||||
|   int c; |  | ||||||
|   unsigned char *q; |  | ||||||
|  |  | ||||||
|   p = s = (char*)malloc(size*4/3+4); |  | ||||||
|   q = (unsigned char*)data; |  | ||||||
|   i=0; |  | ||||||
|   for(i = 0; i < size;){ |  | ||||||
|     c=q[i++]; |  | ||||||
|     c*=256; |  | ||||||
|     if(i < size) |  | ||||||
|       c+=q[i]; |  | ||||||
|     i++; |  | ||||||
|     c*=256; |  | ||||||
|     if(i < size) |  | ||||||
|       c+=q[i]; |  | ||||||
|     i++; |  | ||||||
|     p[0]=base64[(c&0x00fc0000) >> 18]; |  | ||||||
|     p[1]=base64[(c&0x0003f000) >> 12]; |  | ||||||
|     p[2]=base64[(c&0x00000fc0) >> 6]; |  | ||||||
|     p[3]=base64[(c&0x0000003f) >> 0]; |  | ||||||
|     if(i > size) |  | ||||||
|       p[3]='='; |  | ||||||
|     if(i > size+1) |  | ||||||
|       p[2]='='; |  | ||||||
|     p+=4; |  | ||||||
|   } |  | ||||||
|   *p=0; |  | ||||||
|   *str = s; |  | ||||||
|   return strlen(s); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int base64_decode(const char *str, void *data) |  | ||||||
| { |  | ||||||
|   const char *p; |  | ||||||
|   unsigned char *q; |  | ||||||
|   int c; |  | ||||||
|   int x; |  | ||||||
|   int done = 0; |  | ||||||
|   q=(unsigned char*)data; |  | ||||||
|   for(p=str; *p && !done; p+=4){ |  | ||||||
|     x = pos(p[0]); |  | ||||||
|     if(x >= 0) |  | ||||||
|       c = x; |  | ||||||
|     else{ |  | ||||||
|       done = 3; |  | ||||||
|       break; |  | ||||||
|     } |  | ||||||
|     c*=64; |  | ||||||
|      |  | ||||||
|     x = pos(p[1]); |  | ||||||
|     if(x >= 0) |  | ||||||
|       c += x; |  | ||||||
|     else |  | ||||||
|       return -1; |  | ||||||
|     c*=64; |  | ||||||
|      |  | ||||||
|     if(p[2] == '=') |  | ||||||
|       done++; |  | ||||||
|     else{ |  | ||||||
|       x = pos(p[2]); |  | ||||||
|       if(x >= 0) |  | ||||||
| 	c += x; |  | ||||||
|       else |  | ||||||
| 	return -1; |  | ||||||
|     } |  | ||||||
|     c*=64; |  | ||||||
|      |  | ||||||
|     if(p[3] == '=') |  | ||||||
|       done++; |  | ||||||
|     else{ |  | ||||||
|       if(done) |  | ||||||
| 	return -1; |  | ||||||
|       x = pos(p[3]); |  | ||||||
|       if(x >= 0) |  | ||||||
| 	c += x; |  | ||||||
|       else |  | ||||||
| 	return -1; |  | ||||||
|     } |  | ||||||
|     if(done < 3) |  | ||||||
|       *q++=(c&0x00ff0000)>>16; |  | ||||||
|        |  | ||||||
|     if(done < 2) |  | ||||||
|       *q++=(c&0x0000ff00)>>8; |  | ||||||
|     if(done < 1) |  | ||||||
|       *q++=(c&0x000000ff)>>0; |  | ||||||
|   } |  | ||||||
|   return q - (unsigned char*)data; |  | ||||||
| } |  | ||||||
| @@ -1,47 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska H<>gskolan |  | ||||||
|  * (Royal Institute of Technology, Stockholm, Sweden). |  | ||||||
|  * All rights reserved. |  | ||||||
|  *  |  | ||||||
|  * Redistribution and use in source and binary forms, with or without |  | ||||||
|  * modification, are permitted provided that the following conditions |  | ||||||
|  * are met: |  | ||||||
|  *  |  | ||||||
|  * 1. Redistributions of source code must retain the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer. |  | ||||||
|  *  |  | ||||||
|  * 2. Redistributions in binary form must reproduce the above copyright |  | ||||||
|  *    notice, this list of conditions and the following disclaimer in the |  | ||||||
|  *    documentation and/or other materials provided with the distribution. |  | ||||||
|  *  |  | ||||||
|  * 3. All advertising materials mentioning features or use of this software |  | ||||||
|  *    must display the following acknowledgement: |  | ||||||
|  *      This product includes software developed by the Kungliga Tekniska |  | ||||||
|  *      H<>gskolan and its contributors. |  | ||||||
|  *  |  | ||||||
|  * 4. Neither the name of the Institute nor the names of its contributors |  | ||||||
|  *    may be used to endorse or promote products derived from this software |  | ||||||
|  *    without specific prior written permission. |  | ||||||
|  *  |  | ||||||
|  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND |  | ||||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |  | ||||||
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |  | ||||||
|  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE |  | ||||||
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |  | ||||||
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |  | ||||||
|  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |  | ||||||
|  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |  | ||||||
|  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |  | ||||||
|  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |  | ||||||
|  * SUCH DAMAGE. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| /* $Id$ */ |  | ||||||
|  |  | ||||||
| #ifndef _BASE64_H_ |  | ||||||
| #define _BASE64_H_ |  | ||||||
|  |  | ||||||
| int base64_encode(const void *data, int size, char **str); |  | ||||||
| int base64_decode(const char *str, void *data); |  | ||||||
|  |  | ||||||
| #endif |  | ||||||
		Reference in New Issue
	
	Block a user
	 Johan Danielsson
					Johan Danielsson