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
f8c948a6
Commit
f8c948a6
authored
Aug 12, 2013
by
Manuel Pégourié-Gonnard
Browse files
Add name and get_size() members in PK
parent
835eb59c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
14 deletions
+58
-14
include/polarssl/pk.h
include/polarssl/pk.h
+6
-0
library/pk_wrap.c
library/pk_wrap.c
+23
-0
library/x509parse.c
library/x509parse.c
+29
-14
No files found.
include/polarssl/pk.h
View file @
f8c948a6
...
...
@@ -89,6 +89,12 @@ typedef struct
/** Public key type */
pk_type_t
type
;
/** Type name */
const
char
*
name
;
/** Get key size in bits */
size_t
(
*
get_size
)(
void
*
);
/** Tell if the context implements this type (eg ECKEY can do ECDSA) */
int
(
*
can_do
)(
pk_type_t
type
);
...
...
library/pk_wrap.c
View file @
f8c948a6
...
...
@@ -45,6 +45,11 @@ static int rsa_can_do( pk_type_t type )
return
(
type
==
POLARSSL_PK_RSA
);
}
static
size_t
rsa_get_size
(
void
*
ctx
)
{
return
(
mpi_size
(
&
((
rsa_context
*
)
ctx
)
->
N
)
*
8
);
}
static
int
rsa_verify_wrap
(
void
*
ctx
,
const
unsigned
char
*
hash
,
const
md_info_t
*
md_info
,
const
unsigned
char
*
sig
,
size_t
sig_len
)
...
...
@@ -57,6 +62,8 @@ static int rsa_verify_wrap( void *ctx,
const
pk_info_t
rsa_info
=
{
POLARSSL_PK_RSA
,
"RSA"
,
rsa_get_size
,
rsa_can_do
,
rsa_verify_wrap
,
};
...
...
@@ -68,6 +75,11 @@ int ecdsa_can_do( pk_type_t type )
return
(
type
==
POLARSSL_PK_ECDSA
);
}
static
size_t
ecdsa_get_size
(
void
*
ctx
)
{
return
(
((
ecdsa_context
*
)
ctx
)
->
grp
.
pbits
);
}
int
ecdsa_verify_wrap
(
void
*
ctx
,
const
unsigned
char
*
hash
,
const
md_info_t
*
md_info
,
const
unsigned
char
*
sig
,
size_t
sig_len
)
...
...
@@ -78,6 +90,8 @@ int ecdsa_verify_wrap( void *ctx,
const
pk_info_t
ecdsa_info
=
{
POLARSSL_PK_ECDSA
,
"ECDSA"
,
ecdsa_get_size
,
ecdsa_can_do
,
ecdsa_verify_wrap
,
};
...
...
@@ -94,6 +108,11 @@ static int eckey_can_do( pk_type_t type )
type
==
POLARSSL_PK_ECDSA
);
}
static
size_t
eckey_get_size
(
void
*
ctx
)
{
return
(
((
ecp_keypair
*
)
ctx
)
->
grp
.
pbits
);
}
static
int
eckey_verify_wrap
(
void
*
ctx
,
const
unsigned
char
*
hash
,
const
md_info_t
*
md_info
,
const
unsigned
char
*
sig
,
size_t
sig_len
)
...
...
@@ -123,6 +142,8 @@ static int eckey_verify_wrap( void *ctx,
const
pk_info_t
eckey_info
=
{
POLARSSL_PK_ECKEY
,
"EC"
,
eckey_get_size
,
eckey_can_do
,
eckey_verify_wrap
,
};
...
...
@@ -151,6 +172,8 @@ static int eckeydh_verify_wrap( void *ctx,
const
pk_info_t
eckeydh_info
=
{
POLARSSL_PK_ECKEY_DH
,
"EC_DH"
,
eckey_get_size
,
/* Same underlying key structure */
eckeydh_can_do
,
eckeydh_verify_wrap
,
};
...
...
library/x509parse.c
View file @
f8c948a6
...
...
@@ -3021,9 +3021,29 @@ int x509parse_serial_gets( char *buf, size_t size, const x509_buf *serial )
return
(
(
int
)
(
size
-
n
)
);
}
/*
* Helper for writing "RSA key size", "EC key size", etc
*/
static
int
x509_key_size_helper
(
char
*
buf
,
size_t
size
,
const
char
*
name
)
{
char
*
p
=
buf
;
size_t
n
=
size
;
int
ret
;
if
(
strlen
(
name
)
+
sizeof
(
" key size"
)
>
size
)
return
POLARSSL_ERR_DEBUG_BUF_TOO_SMALL
;
ret
=
snprintf
(
p
,
n
,
"%s key size"
,
name
);
SAFE_SNPRINTF
();
return
(
0
);
}
/*
* Return an informational string about the certificate.
*/
#define BEFORE_COLON 14
#define BC "14"
int
x509parse_cert_info
(
char
*
buf
,
size_t
size
,
const
char
*
prefix
,
const
x509_cert
*
crt
)
{
...
...
@@ -3031,6 +3051,7 @@ int x509parse_cert_info( char *buf, size_t size, const char *prefix,
size_t
n
;
char
*
p
;
const
char
*
desc
=
NULL
;
char
key_size_str
[
BEFORE_COLON
];
p
=
buf
;
n
=
size
;
...
...
@@ -3079,20 +3100,14 @@ int x509parse_cert_info( char *buf, size_t size, const char *prefix,
ret
=
snprintf
(
p
,
n
,
desc
);
SAFE_SNPRINTF
();
#if defined(POLARSSL_RSA_C)
if
(
crt
->
pk
.
type
==
POLARSSL_PK_RSA
)
ret
=
snprintf
(
p
,
n
,
"
\n
%sRSA key size : %d bits
\n
"
,
prefix
,
(
int
)
pk_rsa
(
crt
->
pk
)
->
N
.
n
*
(
int
)
sizeof
(
t_uint
)
*
8
);
else
#endif
/* POLARSSL_RSA_C */
#if defined(POLARSSL_ECP_C)
if
(
crt
->
pk
.
type
==
POLARSSL_PK_ECKEY
||
crt
->
pk
.
type
==
POLARSSL_PK_ECKEY_DH
)
ret
=
snprintf
(
p
,
n
,
"
\n
%sEC key size : %d bits
\n
"
,
prefix
,
(
int
)
pk_ec
(
crt
->
pk
)
->
grp
.
pbits
);
else
#endif
/* POLARSSL_ECP_C */
ret
=
snprintf
(
p
,
n
,
"
\n
%sPK type looks wrong!"
,
prefix
);
if
(
(
ret
=
x509_key_size_helper
(
key_size_str
,
BEFORE_COLON
,
crt
->
pk
.
info
->
name
)
)
!=
0
)
{
return
(
ret
);
}
ret
=
snprintf
(
p
,
n
,
"
\n
%s%-"
BC
"s: %d bits
\n
"
,
prefix
,
key_size_str
,
(
int
)
crt
->
pk
.
info
->
get_size
(
crt
->
pk
.
data
)
);
SAFE_SNPRINTF
();
return
(
(
int
)
(
size
-
n
)
);
...
...
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