[xmlsec] Problem when using the xmlSecOpenSSLAppKeyLoadMemory() API.

Aleksey Sanin aleksey at aleksey.com
Wed Apr 10 23:33:40 PDT 2013


This is not a valid PEM key format.

Aleksey

On 4/3/13 12:31 AM, Venkataragavan Vijayakumar wrote:
> Hi all,
> 
> Please check anything i am doing wrong in the key buffer creation.
> simply I am directly copying the key from the private key file generated
> using openssl. I have attached sample key file(dtls.key) , where i have
> taken the key.
> 
> Please help me to solve this issue.
> 
> 
>  const xmlSecByte *keybuf =
> "MIIBOwIBAAJBALe2myLsvZaYVDcZAkaHfaYnwlojm7ebRHGuLGUvYXHgmdMU9LLT6cMABq2me+ioQLhB0+KY4Nth91NG52spEtECAwEAAQJAMKWQCv15bolDs5tRuO9j3D2m/0tyjnn0881VQC39tbN6w+tCVhUHPEy+3l/jf7b/xkuIcbgV2voXVEVFjHmwCQIhAOTF+LdlVZ/TbIEM+GRTaYQQEXz0NjWWIARxDv6OWvdzAiEAzZPK3ZqQtXw3/E2HU6DGBFxB8S92PGk5EFKWaUtG06sCIQC+Cx9j6lBI5u9Z/RZS8V/UDy0X6h8mQMH0Lp9QI525tQIgaslZuNFAWDWlc1bmc+dw1PUDgAByf6D89mCgJyPmL68CIQCmkdwn7cuWI4GlVJnpDZ2iHZjeiih3oVR73/WquuyJqw==";
>      xmlSecSize keysize = strlen(keybuf);
> 
> 
>   assert(tmpl_file);
>   assert(key_file);
> 
>   /* load template */
>   doc = xmlParseFile(tmpl_file);
>   if ((doc == NULL) || (xmlDocGetRootElement(doc) == NULL)){
>     fprintf(stderr, "Error: unable to parse file \"%s\"\n", tmpl_file);
>     goto done;
>   }
> 
>   /* find start node */
>   node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeSignature,
> xmlSecDSigNs);
>   if(node == NULL) {
>     fprintf(stderr, "Error: start node not found in \"%s\"\n", tmpl_file);
>     goto done;
>   }
> 
>   /* create signature context, we don't need keys manager in this example */
>   dsigCtx = xmlSecDSigCtxCreate(NULL);
>   if(dsigCtx == NULL) {
>     fprintf(stderr,"Error: failed to create signature context\n");
>     goto done;
>   }
> 
> 
>  
>   /* load private key, assuming that there is not password */
>  
>   dsigCtx->signKey =
> xmlSecCryptoAppKeyLoadMemory(keybuf,keysize,xmlSecKeyDataFormatPem,
> NULL, NULL, NULL);
>   if(dsigCtx->signKey == NULL) {
>     fprintf(stderr,"Error: failed to load private pem key from
> \"%s\"\n", key_file);
>     goto done;
>   }
> 
> Thanks,
> Venkat.
> 
> 
> 
> 
> 
> On Tue, Apr 2, 2013 at 11:38 PM, Aleksey Sanin <aleksey at aleksey.com
> <mailto:aleksey at aleksey.com>> wrote:
> 
>     You will need to debug what's going on at the openssl level. If I would
>     guess then I would think you didn't load the key into memory correctly.
> 
>     Aleksey
> 
>     On 4/2/13 8:00 AM, Venkataragavan Vijayakumar wrote:
>     > Hi All,
>     >
>     > Previously I have used the xmlSecCryptoAppKeyLoad() API to load
>     the Key
>     > file in the PEM format , it worked fine, but when i start to use
>     > xmlSecCryptoAppKeyLoadMemory() with the same content in the key
>     file is
>     > given as input as buffer, it given error as
>     >
>     >
>     >
>     func=xmlSecOpenSSLAppKeyLoadBIO:file=app.c:line=263:obj=unknown:subj=PEM_read_bio_PrivateKey
>     > and PEM_read_bio_PUBKEY:error=4:crypto library function
>     > failed:
>     >
>     >
>     func=xmlSecOpenSSLAppKeyLoadMemory:file=app.c:line=205:obj=unknown:subj=xmlSecOpenSSLAppKeyLoadBIO:error=1:xmlsec
>     > library function failed:
>     >
>     >
>     > *
>     >
>     > code used like this*:
>     >
>     >  dsigCtx->signKey =
>     > xmlSecCryptoAppKeyLoadMemory(keybuf,keysize,xmlSecKeyDataFormatPem,
>     > NULL, NULL, NULL);
>     >   if(dsigCtx->signKey == NULL) {
>     >     fprintf(stderr,"Error: failed to load private pem key from
>     > \"%s\"\n", key_file);
>     >     goto done;
>     >   }
>     >
>     > Please help me to resolve this issue.
>     >
>     > Thanks,
>     > Venkat.
>     >
>     >
>     >
>     > _______________________________________________
>     > xmlsec mailing list
>     > xmlsec at aleksey.com <mailto:xmlsec at aleksey.com>
>     > http://www.aleksey.com/mailman/listinfo/xmlsec
>     >
> 
> 


More information about the xmlsec mailing list