Hi,
It gives number 123, which is the type CKA_PRIVATE_EXPONENT.

Thanks
Weizhong qiang
在 2012-1-26 下午4:43,"helpcrypto helpcrypto" <helpcry...@gmail.com>写道:

> Is eny error shown at NSSUtilLogger.msg(ERROR, "Failed to read
> attribute %x from private key.", type); ?
>
> El día 25 de enero de 2012 17:04, weizhong qiang
> <weizhongqi...@gmail.com> escribió:
> > hi all,
> > I tried to get the attributes from a private key (see the following code
> piece). But only the CKA_MODULUS and CKA_PUBLIC_EXPONENT can be got, others
> (CKA_PRIVATE_EXPONENT etc.) can not be got.
> > Could you tell me how to solve it?
> > By the way, I generate rsa key pair without "sensitive"
> (PK11_GenerateKeyPair(slot, CKM_RSA_PKCS_KEY_PAIR_GEN, &rsaParams, pubk,
> PR_TRUE, PR_FALSE, NULL); ), so I suppose the private key is not protected
> by password, and can be output?
> >
> > Best Regards,
> > Weizhong Qiang
> >
> >
> >
> >
> > /****************/
> >  static bool ReadPrivKeyAttribute(SECKEYPrivateKey* key,
> CK_ATTRIBUTE_TYPE type, std::vector<uint8>* output) {
> >    SECItem item;
> >    SECStatus rv;
> >    rv = PK11_ReadRawAttribute(PK11_TypePrivKey, key, type, &item);
> >    if (rv != SECSuccess) {
> >      NSSUtilLogger.msg(ERROR, "Failed to read attribute %x from private
> key.", type);
> >      return false;
> >    }
> >    output->assign(item.data, item.data + item.len);
> >    SECITEM_FreeItem(&item, PR_FALSE);
> >    return true;
> >  }
> >
> >  static bool ExportPrivateKey(SECKEYPrivateKey* key, std::vector<uint8>*
> output) {
> >    PrivateKeyInfoCodec private_key_info(true);
> >
> >    // Manually read the component attributes of the private key and
> build up
> >    // the PrivateKeyInfo.
> >    if (!ReadPrivKeyAttribute(key, CKA_MODULUS,
> private_key_info.modulus()) ||
> >      !ReadPrivKeyAttribute(key, CKA_PUBLIC_EXPONENT,
> private_key_info.public_exponent()) ||
> >      !ReadPrivKeyAttribute(key, CKA_PRIVATE_EXPONENT,
> private_key_info.private_exponent()) ||
> >      !ReadPrivKeyAttribute(key, CKA_PRIME_1, private_key_info.prime1())
> ||
> >      !ReadPrivKeyAttribute(key, CKA_PRIME_2, private_key_info.prime2())
> ||
> >      !ReadPrivKeyAttribute(key, CKA_EXPONENT_1,
> private_key_info.exponent1()) ||
> >      !ReadPrivKeyAttribute(key, CKA_EXPONENT_2,
> private_key_info.exponent2()) ||
> >      !ReadPrivKeyAttribute(key, CKA_COEFFICIENT,
> private_key_info.coefficient())) {
> >      return false;
> >    }
> >
> >    return private_key_info.Export(output);
> >  }
> >
> > --
> > dev-tech-crypto mailing list
> > dev-tech-crypto@lists.mozilla.org
> > https://lists.mozilla.org/listinfo/dev-tech-crypto
> --
> dev-tech-crypto mailing list
> dev-tech-crypto@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-tech-crypto
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to