summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorAleksey Sanin <aleksey@src.gnome.org>2002-05-30 04:27:08 +0000
committerAleksey Sanin <aleksey@src.gnome.org>2002-05-30 04:27:08 +0000
commit97b14cbc1100a53bd79c10194f33e95e755760ab (patch)
treeb8481c82fd870bba2914c5fe8671958296fa0c56 /apps
parentba06229c7c79a618931723c7f02104b7fde63c61 (diff)
downloadxmlsec1-97b14cbc1100a53bd79c10194f33e95e755760ab.tar.gz
xmlsec1-97b14cbc1100a53bd79c10194f33e95e755760ab.tar.bz2
xmlsec1-97b14cbc1100a53bd79c10194f33e95e755760ab.zip
pkcs12 support added
* apps/xmlsec.c include/xmlsec/keysmngr.h include/xmlsec/x509.h src/keysmngr.c src/x509.c tests/keys.xml: pkcs12 support added
Diffstat (limited to 'apps')
-rw-r--r--apps/xmlsec.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/apps/xmlsec.c b/apps/xmlsec.c
index fd842935..3c789203 100644
--- a/apps/xmlsec.c
+++ b/apps/xmlsec.c
@@ -166,6 +166,10 @@ static const char helpKeysMngmt[] =
" that verify this key\n"
" --pubkey[:<name>] <file>\n"
" load public key from PEM file\n"
+#ifndef XMLSEC_NO_X509
+ " --pkcs12[:<name>] <file>\n"
+ " load private key from pkcs12 file\n"
+#endif /* XMLSEC_NO_X509 */
#ifndef XMLSEC_NO_HMAC
" --hmackey[:<name>] <file>\n"
" load hmac key from binary file\n"
@@ -228,6 +232,7 @@ int readNumber(const char *str, int *number);
int readKeys(char *file);
int readPemKey(int privateKey, char *param, char *name);
int readHmacKey(char *filename, char *name);
+int readPKCS12Key(char *filename, char *name);
/**
* Keys generation/manipulation
@@ -382,6 +387,12 @@ int main(int argc, char **argv) {
name = strchr(argv[pos], ':');
if(name != NULL) ++name;
ret = readPemKey(0, argv[++pos], name);
+ } else if((strncmp(argv[pos], "--pkcs12", 8) == 0) && (pos + 1 < argc)) {
+ char *name;
+
+ name = strchr(argv[pos], ':');
+ if(name != NULL) ++name;
+ ret = readPKCS12Key(argv[++pos], name);
} else if((strncmp(argv[pos], "--hmackey", 9) == 0) && (pos + 1 < argc)) {
char *name;
@@ -1019,6 +1030,32 @@ int readPemKey(int privateKey, char *param, char *name) {
#endif /* XMLSEC_NO_X509 */
}
+int readPKCS12Key(char *filename, char *name) {
+#ifndef XMLSEC_NO_X509
+ char pwd[1024] = "";
+ char prompt[1024];
+ int ret;
+
+ snprintf(prompt, sizeof(prompt), "Password for pkcs12 file \"%s\": ", filename);
+ ret = EVP_read_pw_string(pwd, sizeof(pwd), prompt, 0);
+ if(ret != 0) {
+ fprintf(stderr, "Error: password propmpt failed for file \"%s\"\n", filename);
+ return(-1);
+ }
+
+ ret = xmlSecSimpleKeysMngrLoadPkcs12(keyMgr, name, filename, pwd);
+ if(ret < 0) {
+ fprintf(stderr, "Error: failed to load pkcs12 file \"%s\"\n", filename);
+ return(-1);
+ }
+
+ return(0);
+#else /* XMLSEC_NO_X509 */
+ fprintf(stderr, "Error: x509 support disabled.\n");
+ return(-1);
+#endif /* XMLSEC_NO_X509 */
+}
+
int readHmacKey(char *filename, char *name) {
#ifndef XMLSEC_NO_HMAC
FILE *f;