Closed shynome closed 10 months ago
X509Certificate.publicKey
is PublicKey
, X509Certificate.publicKey.export
returns CryptoKey
. These are different objects, and they can't be compared using the comparison operator. What are you trying to do?
I check it again, it seem some key export failed, pem1
is fine, but pem2
chain is broken. If use item.publicKey
directly, pem2
will verify successful
let pem1 = `-----BEGIN CERTIFICATE-----
MIIDIDCCAgigAwIBAgIIQU4B1vCH2u8wDQYJKoZIhvcNAQELBQAwDDEKMAgGA1UE
CxMBQjAeFw0yMzA4MTYwMDAwMDBaFw0yNDA4MTUyMzU5NTlaMAwxCjAIBgNVBAsT
AUMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyECUyekEDRGrKgh7e
d4oQ8+2ZPg1858jowIJ3vPGhKkk0evTmT44ZiLVgWGhq5V0xBXgQErhjZEJ3C0v8
+8Vnlhja23lQwFiHKpDQJKyzKX2J3uXVzMpv0IhFPkYaQ+dH+k7D6g7DBowAfI5c
7hZ/vjqwpIIW8WAbwGkkgmMS3bh6aeWnFavudvanbEAl8ih7Xksq2cbXhwkspuoP
qa7x7vTEifJMGWNY4KOy49Io+1ANJfyQUs7kpzmCbEcCCDIo1NivCGsrErmOS9nm
ufonvztRnhCBMpFqQEoDIY1aDsDRMtSlQ+DqxrW21xhqtjkV3oKuTWZCiRzRD0+l
D5shAgMBAAGjgYUwgYIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUva2YrtVLRBKx
f16OgDblBIWPHVowCwYDVR0PBAQDAgO4MBMGA1UdJQQMMAoGCCsGAQUFBwMCMBEG
CWCGSAGG+EIBAQQEAwIFoDAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRl
MA0GCSqGSIb3DQEBCwUAA4IBAQA2vkpr/52lzFIHd0BFR+/JVQSr+F5cw/lNAIFh
hHGrfkn2QyEqwkMxMyBpePnR8uz16kZEhpgc6MGekvoj+h2gO56sMr6i5FszXWr+
y7DEH0jTpukM4bpOHu/HTKWmJZe4VbTf+12Qq/g7z82z1JF3FTBSE+SY1mjrTSgA
K5TiaQ49N5q2mHvDWVH6tER1o2zVLMBZhb1EFlnVBPeJvpwRlLP9qvLZ5zy98B5w
+IraMm65QresylLJXqrLC4weNmnZr7WJTbudKKCPxj3NMzvXAWEnbm8xfEP+ZqbM
iLJopGUpTCkSFAtTddt+UntuiAa99lylF/a9ae8mqb2y8Kcv
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIIUOrdMriOfyQwDQYJKoZIhvcNAQELBQAwDDEKMAgGA1UE
CxMBQTAeFw0yMzA4MTYwMDAwMDBaFw0yODA4MTUyMzU5NTlaMAwxCjAIBgNVBAsT
AUIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCukngtGu4+PpBg7S36
DSd/fGJY0k85RmMDbZtxImFDETOfeZGh0HyDXg15QSEM4rpWTk/WZ+wwuHX4BcXF
0aNeemhWKLX6we8R+XP3B32gXnek1iLmLR7lqpc+HthboPr8GrxbOqDJYBLcEeFT
0EaYllD2c3H5rMfGgGG7VebuQEupGjzV5WK081eTMyXgteLcH78cLmAWmggV99Ae
Uv8w1LqZS+6xsOMJDoa3xQZGDauX+LdBaswg9MNkq4MxJ/U8GKOoR5BClGMPRNbt
tyNujgSuGmZiDg0euRfjCZlJuW5R8VuJocGJNzJUZB7HifRN0ND00GVaaQYrsWOZ
yDolAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFL9FnY1ZPUjw
bnr6FeVz/acJeIOgMAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcwHgYJ
YIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOCAQEA
nJgRR4az7EiA/YczhEdFfv7hofEdgducv2rIFDtggzqAWJ8BoEz/RU3vxGUhyjKa
VVbfS6ZUAWtAbLB/R+7xXXbCpxzMChi70LP+MKjbIlA07cAP4jPV0Uf1OwLZoVnF
fYBGUH1l7KzWskH9EDhHzvN07y+6Jqq0PejtzR7iKUN9bFz/gx3BAuZn3mZwF6LQ
YeAAS9Ceh2D5JCuVxXD3AQIn239Ah0vjD5pkDaqpSzbrDcUE50BrFzmHepjFdsfT
9aCjzJehPi4ZzUqMA5MGScnqkZn+dveH4s3vt563A7T4mKeBCazqfKEPJ42+Yo5e
gjbVLIVkwerC99YP/aC+fg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIIFD5APYkpFNkwDQYJKoZIhvcNAQELBQAwDDEKMAgGA1UE
CxMBQTAeFw0yMzA4MTYwMDAwMDBaFw0zMzA4MTUyMzU5NTlaMAwxCjAIBgNVBAsT
AUEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCoPLXVmfC43hqWklAk
hoRA1xHFR6KIPHFh1TTpZGRFOpeJKB/5u3FF0UnhrMut5RiWumDaqm5M249S14Mm
xG9cUQEtzWTOW3sq2MbmtwBSX82S3uOaiz9kD8RUimwy/VVTUVw6irekMk999M4X
VPGKUW96g1FGymdG0fHWMEsHg5yfhiHb6ZcQXfQtUAJpSJpkgOKvVF3cS4IBpSfB
bE9emKNQVkSMhjlUeu0ZDgtUXvG9GZI0QhoWSZCXop7Q3NMUjNeNMr3ZVIYgTGHd
tTp/I4kU8FNaxdt1igitrpRTa/PAtyARLz18A8Geq9gvOoIeB5ks5JfGr5c4wEyJ
+FfbAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFGfxmRR9B5Kk
z26wl3TpS1zfikLgMAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcwHgYJ
YIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOCAQEA
Y+8r31kRCNyMi3o5EAKcfLGeh61+uj2qeVgj8jmuziUF5hrgCadWvJDlVyCNMc30
J//rAdHcRqdR68qhPpP5CkARGn9EY9ktl0LKHZkwAmd7MZctNmzmwHmytw/D8204
3aakdR4d0hVv8nmRer82XU2l0W1u1au+XBmA8/NXq8cZMXrbdJ4NfxqihUmPbwn6
QoVN2AoInqP3b9gb+lXKZOANicqbkUYsTwzCOESu9Icslsz0xsaIbbbpIhUjFXul
uy4RLi5edwqe61SUtffRgNfxUEn//tLGWihHUlc0RrjXbYJMSOI1MGdUyntsMhMi
cALXziOhMrsELc6zHTx2lQ==
-----END CERTIFICATE-----
`;
let pem2 = `-----BEGIN CERTIFICATE-----
MIIEmzCCAoOgAwIBAgIIAk82i+WStagwDQYJKoZIhvcNAQEMBQAwOTEPMA0GA1UE
ChMGUmVNb29uMQ8wDQYDVQQLEwZSZU1vb24xFTATBgNVBAMTDFJlTW9vbiBTdGFm
ZjAeFw0yMzAyMTQwMDAwMDBaFw0yNjAyMTMyMzU5NTlaMFoxDzANBgNVBAoTBlJl
TW9vbjEPMA0GA1UECxMGUmVNb29uMRcwFQYDVQQDDA5saXlhQHJlbW9vbi5jbjEd
MBsGCSqGSIb3DQEJARYObGl5YUByZW1vb24uY24wggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC9M7/qzc0AMza23Ob19VCehWzMlpIz8aft03l4WIAUIflE
h6s3ZSKB98mIYE3Sj2eM3lmCUM/tnbQJebvffTAXCUQJYZtvmPa+RqZzXlUMJk/U
yGWXq4I8us+8O0Jb/MZ5RhMT5KKenloalXK+fGxlmm0ajQF/0oROEbf8M7KT7rcp
f/aMmnASQdBG3bw0qF2sp/QNvx/BLHcU/AVW68J/NO73lT+uynmJ616KzRWADBMO
jScK7ukNHmQaBa3+a7EbhajD95BDmF2sCVTQ19M+vN29zX7r1y+9UAHlfe2V52kD
/dAMPeyrRaUDg7F1m5cfCE5cXqMkOsasHwS7l4QJAgMBAAGjgYUwgYIwDAYDVR0T
AQH/BAIwADAdBgNVHQ4EFgQUNVNOjytTcvPlm6HGAZTOazueFvowCwYDVR0PBAQD
AgO4MBMGA1UdJQQMMAoGCCsGAQUFBwMCMBEGCWCGSAGG+EIBAQQEAwIFoDAeBglg
hkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMA0GCSqGSIb3DQEBDAUAA4ICAQBs
EIzhB+oUL38pliNBTeu5Sj6dndmfofj95lALPg8oIQC0Up5B514/4SB9YjK3OEUW
uN6QLGJ84XjljarBdnnZsx3cVXxgNPLvrmtm6Q8ikobykwe4z8b1j8PZ9GFlh85M
sSkVCCsUqmHmKFg0rcNGzsQlrfVUH7CgSGI0ZGjrf1+3ySF1LniNSWvGZRLscyWz
Ncdqt4JY4z7WjG/aODGfti1JvHNDyK0W256gMuK3786BPG0zA20MXtbb+g/a5a3z
IKeJ64bYp2J6MoGGlFs8ECND99ZDZZscOcSTw3RZ/+Zx6wq2BcF+EtbAhfZeaEvV
+KJ01dAbjzmqGesOuwQ0jVZOHKJ7zSXlG41Xv03MUNaaSEx2xtXmeE7pqqhhOZ+Z
yjzR9QzNyBCj8YvXrtCpCWDogngAK3J0WUZdo1hBoERxRdlcCoL6pYkCEXgggJDz
RbCIyGRowRocsipQyB+KNm+GbrfQv7BPIxNR9HrxW8aCnzazUbzbCHTwMgpmi7rl
pFdPb/tbvIpgoZNMNGEClV7GO7uwSOHKI7CK/pF179yPXZoOjXYYDKvVqut6xuJQ
Bo3Ukeh/RC1S9vWlAG++HFNpEBINq8ELNkFEwoICD+9N4145Lwh9ff9npKcI9q4v
KN2GH/MfIw6TJH4ow16t4VYQeIe6u0XDSD44jxGc5w==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
FdhUnLUJ665dzfb6nhFBu4xidiA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
`;
import {
X509Certificate,
cryptoProvider,
X509ChainBuilder,
} from "@peculiar/x509";
import { Crypto } from "@peculiar/webcrypto";
const crypto = new Crypto();
cryptoProvider.set(crypto);
const caa = pem2
.match(/\-+BEGIN CERTIFICATE\-+[^-]+\-+END CERTIFICATE\-+/g)
.map((s) => {
return new X509Certificate(s);
});
const c = new X509ChainBuilder({
certificates: caa.slice(1),
});
const chains = await c.build(caa[0]);
debugger;
if (chains.length !== 3) {
throw new Error("export pubkey verify failed");
}
I found what the problem was. When building the chain, the public key was exported without considering the certificate's signature algorithm. In your example, the certificate was signed with RSASSA-PKCS1-v1_5+SHA-384, but the application exported the key with the algorithm RSASSA-PKCS1-v1_5+SHA-256.
This is an implementation error. I will try to fix it as soon as possible.
I've released a new version of @peculiar/webcrypto@1.9.5
, addressing the current issue with certificate chain construction. Could you please check the latest version? Thank you for your cooperation.
It is working.
I found the problem source is X509Certificate.publicKey.export() != X509Certificate.publicKey, because when I replace
await item.publicKey.export(crypto)
withitem.publicKey
X509ChainBuilder.build
will be workingpublicKey: await item.publicKey.export(crypto),
My packge version