Initial revision
[blender.git] / source / blender / readstreamglue / intern / BLO_keyStore.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  * make all key elements available through functions
32  */
33
34 #include <stdlib.h>
35 #include <assert.h>
36
37 #include "BLO_keyStore.h"
38 #include "BLO_keyStorePrivate.h"
39
40 // our ugly but private global pointer
41 static struct keyStoreStruct *keyStore = NULL;
42
43         void
44 keyStoreConstructor(
45         UserStruct *keyUserStruct,
46         char *privHexKey,
47         char *pubHexKey,
48         byte *ByteChecks,
49         char *HexPython)
50 {
51         assert(keyStore == NULL);
52         keyStore = malloc(sizeof(struct keyStoreStruct));
53         assert(keyStore);
54         // TODO check for malloc errors
55
56         keyStore->keyUserStruct = *keyUserStruct;
57
58         keyStore->privKey = DeHexify(privHexKey);
59         keyStore->privKeyLen = strlen(privHexKey) / 2;
60
61         keyStore->pubKey = DeHexify(pubHexKey);
62         keyStore->pubKeyLen = strlen(pubHexKey) / 2;
63
64         memcpy(keyStore->ByteChecks, ByteChecks, 1000);
65
66         keyStore->PythonCode = DeHexify(HexPython);
67         keyStore->PythonCodeLen = strlen(HexPython) / 2;
68 }
69
70         void
71 keyStoreDestructor(
72         void)
73 {
74         assert(keyStore);
75         if (!keyStore) {
76                 return;
77         }
78         free(keyStore->privKey);
79         free(keyStore->pubKey);
80         free(keyStore->PythonCode);
81         free(keyStore);
82         keyStore = NULL;
83 }
84
85         int
86 keyStoreGetPubKey(
87         byte **PubKey)
88 {
89         if (!keyStore) {
90                 *PubKey = NULL;
91                 return 0;
92         }
93         *PubKey = keyStore->pubKey;
94         return(keyStore->pubKeyLen);
95 }
96
97         int
98 keyStoreGetPrivKey(
99         byte **PrivKey)
100 {
101         if (!keyStore) {
102                 *PrivKey = NULL;
103                 return 0;
104         }
105         *PrivKey = keyStore->privKey;
106         return(keyStore->privKeyLen);
107 }
108
109         char *
110 keyStoreGetUserName(
111         void)
112 {
113         if (!keyStore) {
114                 return NULL;
115         }
116         return(keyStore->keyUserStruct.name);
117 }
118
119         char *
120 keyStoreGetEmail(
121         void)
122 {
123         if (!keyStore) {
124                 return NULL;
125         }
126         return(keyStore->keyUserStruct.email);
127 }
128