Convert SubjectPublicKeyInfo to Java PublicKey
My app is using bouncycastle to decode certificates deeper then java native X509Certificate provide, actualy i have bouncy castle certificates ( org.bouncycastle.asn1.x509.Certificate
).
My question is how to secure convert org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
to a java.security.Publickey
. ?
i'd like to use the standard java signature method java.security.Signature
instead BouncyCastle alternatives.
Signature sig = Signature.getInstance(signatureAlgorithm.getAlgorithm().getId());
sig.initVerify(getPublicKey());
sig.update(content);
return sig.verify(signature);
java cryptography bouncycastle
add a comment |
My app is using bouncycastle to decode certificates deeper then java native X509Certificate provide, actualy i have bouncy castle certificates ( org.bouncycastle.asn1.x509.Certificate
).
My question is how to secure convert org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
to a java.security.Publickey
. ?
i'd like to use the standard java signature method java.security.Signature
instead BouncyCastle alternatives.
Signature sig = Signature.getInstance(signatureAlgorithm.getAlgorithm().getId());
sig.initVerify(getPublicKey());
sig.update(content);
return sig.verify(signature);
java cryptography bouncycastle
add a comment |
My app is using bouncycastle to decode certificates deeper then java native X509Certificate provide, actualy i have bouncy castle certificates ( org.bouncycastle.asn1.x509.Certificate
).
My question is how to secure convert org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
to a java.security.Publickey
. ?
i'd like to use the standard java signature method java.security.Signature
instead BouncyCastle alternatives.
Signature sig = Signature.getInstance(signatureAlgorithm.getAlgorithm().getId());
sig.initVerify(getPublicKey());
sig.update(content);
return sig.verify(signature);
java cryptography bouncycastle
My app is using bouncycastle to decode certificates deeper then java native X509Certificate provide, actualy i have bouncy castle certificates ( org.bouncycastle.asn1.x509.Certificate
).
My question is how to secure convert org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
to a java.security.Publickey
. ?
i'd like to use the standard java signature method java.security.Signature
instead BouncyCastle alternatives.
Signature sig = Signature.getInstance(signatureAlgorithm.getAlgorithm().getId());
sig.initVerify(getPublicKey());
sig.update(content);
return sig.verify(signature);
java cryptography bouncycastle
java cryptography bouncycastle
edited Nov 20 '18 at 18:07
argoth
asked Nov 20 '18 at 17:53
argothargoth
170112
170112
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
A way to convert the key is using a RSAKeyParameter and RSAPublicKeySpec 'to rebuild' the key using the Modulus and Exponent.
RSAKeyParameters rsa = (RSAKeyParameters) PublicKeyFactory.createKey(certificate.getSubjectPublicKeyInfo());
RSAPublicKeySpec rsaSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
KeyFactory kf = KeyFactory.getInstance("RSA");
java.security.Publickey publicKey = kf.generatePublic(rsaSpec);
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used forRSAPublicKey.getEncoded()
andX509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.
– Maarten Bodewes
Nov 20 '18 at 18:52
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398788%2fconvert-subjectpublickeyinfo-to-java-publickey%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
A way to convert the key is using a RSAKeyParameter and RSAPublicKeySpec 'to rebuild' the key using the Modulus and Exponent.
RSAKeyParameters rsa = (RSAKeyParameters) PublicKeyFactory.createKey(certificate.getSubjectPublicKeyInfo());
RSAPublicKeySpec rsaSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
KeyFactory kf = KeyFactory.getInstance("RSA");
java.security.Publickey publicKey = kf.generatePublic(rsaSpec);
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used forRSAPublicKey.getEncoded()
andX509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.
– Maarten Bodewes
Nov 20 '18 at 18:52
add a comment |
A way to convert the key is using a RSAKeyParameter and RSAPublicKeySpec 'to rebuild' the key using the Modulus and Exponent.
RSAKeyParameters rsa = (RSAKeyParameters) PublicKeyFactory.createKey(certificate.getSubjectPublicKeyInfo());
RSAPublicKeySpec rsaSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
KeyFactory kf = KeyFactory.getInstance("RSA");
java.security.Publickey publicKey = kf.generatePublic(rsaSpec);
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used forRSAPublicKey.getEncoded()
andX509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.
– Maarten Bodewes
Nov 20 '18 at 18:52
add a comment |
A way to convert the key is using a RSAKeyParameter and RSAPublicKeySpec 'to rebuild' the key using the Modulus and Exponent.
RSAKeyParameters rsa = (RSAKeyParameters) PublicKeyFactory.createKey(certificate.getSubjectPublicKeyInfo());
RSAPublicKeySpec rsaSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
KeyFactory kf = KeyFactory.getInstance("RSA");
java.security.Publickey publicKey = kf.generatePublic(rsaSpec);
A way to convert the key is using a RSAKeyParameter and RSAPublicKeySpec 'to rebuild' the key using the Modulus and Exponent.
RSAKeyParameters rsa = (RSAKeyParameters) PublicKeyFactory.createKey(certificate.getSubjectPublicKeyInfo());
RSAPublicKeySpec rsaSpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent());
KeyFactory kf = KeyFactory.getInstance("RSA");
java.security.Publickey publicKey = kf.generatePublic(rsaSpec);
edited Nov 21 '18 at 8:32
answered Nov 20 '18 at 18:07
argothargoth
170112
170112
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used forRSAPublicKey.getEncoded()
andX509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.
– Maarten Bodewes
Nov 20 '18 at 18:52
add a comment |
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used forRSAPublicKey.getEncoded()
andX509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.
– Maarten Bodewes
Nov 20 '18 at 18:52
2
2
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used for
RSAPublicKey.getEncoded()
and X509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.– Maarten Bodewes
Nov 20 '18 at 18:52
Encoding it to binary and then decoding it would be another option. SubjectPublicKeyInfo is the main encoding used for
RSAPublicKey.getEncoded()
and X509EncodedKeySpec
. I prefer not to encode / decode though, so the above method should probably be prefered if encoding to binary is not required.– Maarten Bodewes
Nov 20 '18 at 18:52
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398788%2fconvert-subjectpublickeyinfo-to-java-publickey%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown