On Thursday, 3 May 2012 00:21:59 UTC+8, Robert Relyea  wrote:
> On 05/01/2012 12:01 PM, VJ wrote:
> > On Tuesday, 1 May 2012 00:46:21 UTC+8, Robert Relyea wrote:
> >> On 04/30/2012 02:22 AM, VJ wrote:
> >>> Hi,
> >>> I've tested encryption, decryption, signing and verification with public 
> >>> (NSSLOWKEYPublicKey) and private keys (NSSLOWKEYPrivateKey) in low level.
> >> Big question, Why are you using private interfaces? The low level
> >> interfaces are only for specific operations, and not for applications
> >> for most libraries. What is it you are trying to do?
> >>
> >> bob
> >>> However, Now I have a public/private keys in the below format:
> >>>
> >>> -----BEGIN RSA PUBLIC KEY-----
> >>> MIGHAoGBAK12Da7PWjz1Yf01Hp2gaRxBWU2lXchh/lGaQI05JusLgI38DSN2ZPW5
> >>> x6Ff6ZOztEb9sc6oz7NdrZy68Veb+tcD/3A6qZRUUDAW0aFOJZIcl0U+IZXvguqa
> >>> TxSRDTvBwqCp44PaWYiwtdP5vnjfPXFgHLLMvM7yzOedRttDNpYDAgED
> >>> -----END RSA PUBLIC KEY-----
> >>>
> >>>
> >>> -----BEGIN RSA PRIVATE KEY-----
> >>> MIICWwIBAAKBgQCtdg2uz1o89WH9NR6doGkcQVlNpV3IYf5RmkCNOSbrC4CN/A0j
> >>> dmT1ucehX+mTs7RG/bHOqM+zXa2cuvFXm/rXA/9wOqmUVFAwFtGhTiWSHJdFPiGV
> >>> 74Lqmk8UkQ07wcKgqeOD2lmIsLXT+b543z1xYByyzLzO8sznnUbbQzaWAwIBAwKB
> >>> gHOkCR805tNOQVN4vxPARhLWO4kY6TBBVDZm1bN7b0ddAF6oCMJO7fkmhRY/8Q0i
> >>> eC9Ty98bNSI+c73R9jpn/I4+dSXO3HvILYfmIsnrVnbDwQgKlr2+/LBHXYFW91XK
> >>> 5DJzb3nI2yEF4Khxk5UiQEppI4QcYu4ndOPRoyq4cFUbAkEA4JjkWdHG4KaixLXW
> >>> TTkgo1GdvNcbseCi4R2IqjlzIhoLFxMwLFEB30BwkCzLEDhxW8Pr2dErkL57OWaJ
> >>> hkmcTwJBAMW20yqNE8dlQXjnnB/qv1OkG3FoXZ8nP04lSeRgx+9SSeWpHQC/1Uik
> >>> Zr80ThukkGajgMhXPibfFqlrkahEeg0CQQCVu0Lmi9nrGcHYeTmI0MBs4RPTOhJ2
> >>> lcHraQXG0PdsEVy6DMrINgE/gEsKyIdgJaDn1/KRNh0LKad7mbEEMRLfAkEAg883
> >>> cbNihO4rpe+9apx/jRgSS5rpFMTU3sOGmECFSjbb7nC+AH/jhcLvKiLevRhgRG0A
> >>> hY9+xJS5xke2cC2mswJAFDGCpvh9ChK1VAXjmDxDI6CZA0ekekTxqxmMe2dt2FyL
> >>> Rlb+yM60zguFxqR3h2O5uYa+NcntYztMjEeQP/386w==
> >>> -----END RSA PRIVATE KEY-----
> >>>
> >>>
> >>> My question is, Is there a way that I can make these suitable for 
> >>> NSSLOWKEYPublicKey and NSSLOWKEYPrivateKey structures?
> >>>
> >>> Thanks,
> >>> Vejey
> > Hi Bob,
> >
> > I'm extracting private interfaces for RSA functions compatible for our own 
> > VM, with our own instruction sets. Even, Dynamic memory allocation cannot 
> > work there.
> > I've tested these low level functionality for RSA.
> This seems surprising with out modifying mpi. The underlying mpi code 
> assumes that it can allocate data, so unless you are faking it out with 
> some sort of manual allocator, I don't see how you can even get a basic 
> RSA op to work.
> >
> > Now, Is there a way to get the above keys - stripped and make it work in 
> > low level?
> > Is it feasible? or I should consider doing something else?
> If you are trying to decode this in an enviroment that can't allocate 
> data, you are in for some difficulty. To decode the above you need: 1) a 
> base64 decoder, and 2) an asn1/der decoder. There are some internal NSS 
> templates to do this (as least the der part). Of course if you can't 
> allocate, non of the NSS decoders would work for you (The simplest 
> requires NSPR arenas).
> 
> Anyway the path forward is to do a base64 decode on the above data (you 
> have to strip the ---- XXXXX----- portions yourself. The function you 
> want is ATOB, so either ATOB_convertAsciiToItem or ATOB_AsciiToData() 
> (defined in base64.h).
> 
> Once you have the binary you want to decode the DER value. You can see 
> some samples in mozilla/security/nss/lib/softoken/legacydb/keydb.c. The 
> function seckey_decrypt_private_key is mostly what you want. You just 
> need to skip the actual decrypt step. The public key function would be 
> similiar, except you use a different template (and the key has fewer 
> components).
> 
> 
> If you were operating from the proper NSS layer you could use 
> PK11_ImportDERPrivateKeyInfoAndReturnKey() for the private key and 
> SECKEY_DecodeDERPublicKey() for the public key (both still require ATOB_ 
> first).
> 
> bob
> >
> > Thanks,
> > Vejey

Bob,

Thank you!!!
You are right. I'm faking the dynamic memory allocation with a static one and 
with some other tweaks. Ofcourse, I've modified mpi as well to get this work. I 
am using the data allocation.

I will start working on this and get back to you.

Regards,
Vejey
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to