Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
mbedtls
Commits
12e0ed91
Commit
12e0ed91
authored
Jul 04, 2013
by
Manuel Pégourié-Gonnard
Browse files
Add pk_context and associated functions
parent
d4ec21dd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
125 additions
and
1 deletion
+125
-1
include/polarssl/pk.h
include/polarssl/pk.h
+30
-1
library/CMakeLists.txt
library/CMakeLists.txt
+1
-0
library/Makefile
library/Makefile
+1
-0
library/pk.c
library/pk.c
+93
-0
No files found.
include/polarssl/pk.h
View file @
12e0ed91
...
...
@@ -37,11 +37,40 @@ extern "C" {
typedef
enum
{
POLARSSL_PK_NONE
=
0
,
POLARSSL_PK_RSA
,
POLARSSL_PK_ECDSA
,
POLARSSL_PK_ECKEY
,
POLARSSL_PK_ECKEY_DH
,
}
pk_type_t
;
/**
* \brief Public key container
*/
typedef
struct
{
pk_type_t
type
;
/**< Public key type */
void
*
data
;
/**< Public key data */
}
pk_context
;
/**
* \brief Initialize a pk_context (as NONE)
*/
void
pk_init
(
pk_context
*
ctx
);
/**
* \brief Free a pk_context
*/
void
pk_free
(
pk_context
*
ctx
);
/**
* \brief Set a pk_context to a given type
*
* \param ctx Context to initialize
* \param type Type of key
*
* \return O on success, -1 on memory allocation error
* TODO: use appropriate error constant
*/
int
pk_set_type
(
pk_context
*
ctx
,
pk_type_t
type
);
#ifdef __cplusplus
}
#endif
...
...
library/CMakeLists.txt
View file @
12e0ed91
...
...
@@ -39,6 +39,7 @@ set(src
pkcs5.c
pkcs11.c
pkcs12.c
pk.c
rsa.c
sha1.c
sha256.c
...
...
library/Makefile
View file @
12e0ed91
...
...
@@ -49,6 +49,7 @@ OBJS= aes.o arc4.o asn1parse.o \
oid.o
\
padlock.o pbkdf2.o pem.o
\
pkcs5.o pkcs11.o pkcs12.o
\
pk.o
\
rsa.o sha1.o sha256.o
\
sha512.o ssl_cache.o ssl_cli.o
\
ssl_srv.o ssl_ciphersuites.o
\
...
...
library/pk.c
0 → 100644
View file @
12e0ed91
/*
* Public Key abstraction layer
*
* Copyright (C) 2006-2013, Brainspark B.V.
*
* This file is part of PolarSSL (http://www.polarssl.org)
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "polarssl/config.h"
#include "polarssl/rsa.h"
#include "polarssl/ecp.h"
#include "polarssl/pk.h"
#include <stdlib.h>
/*
* Initialise a pk_context
*/
void
pk_init
(
pk_context
*
ctx
)
{
if
(
ctx
==
NULL
)
return
;
ctx
->
type
=
POLARSSL_PK_NONE
;
ctx
->
data
=
NULL
;
}
/*
* Free (the components of) a pk_context
*/
void
pk_free
(
pk_context
*
ctx
)
{
if
(
ctx
==
NULL
)
return
;
switch
(
ctx
->
type
)
{
case
POLARSSL_PK_NONE
:
break
;
case
POLARSSL_PK_RSA
:
rsa_free
(
ctx
->
data
);
break
;
case
POLARSSL_PK_ECKEY
:
case
POLARSSL_PK_ECKEY_DH
:
ecp_keypair_free
(
ctx
->
data
);
break
;
}
ctx
->
type
=
POLARSSL_PK_NONE
;
ctx
->
data
=
NULL
;
}
/*
* Set a pk_context to a given type
*/
int
pk_set_type
(
pk_context
*
ctx
,
pk_type_t
type
)
{
size_t
size
=
type
==
POLARSSL_PK_RSA
?
sizeof
(
rsa_context
)
:
type
==
POLARSSL_PK_ECKEY
?
sizeof
(
ecp_keypair
)
:
type
==
POLARSSL_PK_ECKEY_DH
?
sizeof
(
ecp_keypair
)
:
0
;
if
(
size
==
0
)
return
(
0
);
if
(
(
ctx
->
data
=
malloc
(
size
)
)
==
NULL
)
return
(
-
1
);
memset
(
ctx
->
data
,
0
,
size
);
ctx
->
type
=
type
;
return
(
0
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment