use of com.github.zhenwei.core.asn1.x509.CertificateList in project LinLong-Java by zhenwei1108.
the class X509CRLImpl method doVerify.
private void doVerify(PublicKey key, SignatureCreator sigCreator) throws CRLException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, NoSuchProviderException {
if (!c.getSignatureAlgorithm().equals(c.getTBSCertList().getSignature())) {
throw new CRLException("Signature algorithm on CertificateList does not match TBSCertList.");
}
if (key instanceof CompositePublicKey && X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm())) {
List<PublicKey> pubKeys = ((CompositePublicKey) key).getPublicKeys();
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
ASN1Sequence sigSeq = ASN1Sequence.getInstance(DERBitString.getInstance(c.getSignature()).getBytes());
boolean success = false;
for (int i = 0; i != pubKeys.size(); i++) {
if (pubKeys.get(i) == null) {
continue;
}
AlgorithmIdentifier sigAlg = AlgorithmIdentifier.getInstance(keySeq.getObjectAt(i));
String sigName = X509SignatureUtil.getSignatureName(sigAlg);
Signature signature = sigCreator.createSignature(sigName);
SignatureException sigExc = null;
try {
checkSignature((PublicKey) pubKeys.get(i), signature, sigAlg.getParameters(), DERBitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
success = true;
} catch (SignatureException e) {
sigExc = e;
}
if (sigExc != null) {
throw sigExc;
}
}
if (!success) {
throw new InvalidKeyException("no matching key found");
}
} else if (X509SignatureUtil.isCompositeAlgorithm(c.getSignatureAlgorithm())) {
ASN1Sequence keySeq = ASN1Sequence.getInstance(c.getSignatureAlgorithm().getParameters());
ASN1Sequence sigSeq = ASN1Sequence.getInstance(DERBitString.getInstance(c.getSignature()).getBytes());
boolean success = false;
for (int i = 0; i != sigSeq.size(); i++) {
AlgorithmIdentifier sigAlg = AlgorithmIdentifier.getInstance(keySeq.getObjectAt(i));
String sigName = X509SignatureUtil.getSignatureName(sigAlg);
SignatureException sigExc = null;
try {
Signature signature = sigCreator.createSignature(sigName);
checkSignature(key, signature, sigAlg.getParameters(), DERBitString.getInstance(sigSeq.getObjectAt(i)).getBytes());
success = true;
} catch (InvalidKeyException e) {
// ignore
} catch (NoSuchAlgorithmException e) {
// ignore
} catch (SignatureException e) {
sigExc = e;
}
if (sigExc != null) {
throw sigExc;
}
}
if (!success) {
throw new InvalidKeyException("no matching key found");
}
} else {
Signature sig = sigCreator.createSignature(getSigAlgName());
if (sigAlgParams == null) {
checkSignature(key, sig, null, this.getSignature());
} else {
try {
checkSignature(key, sig, ASN1Primitive.fromByteArray(sigAlgParams), this.getSignature());
} catch (IOException e) {
throw new SignatureException("cannot decode signature parameters: " + e.getMessage());
}
}
}
}
use of com.github.zhenwei.core.asn1.x509.CertificateList in project kubernetes-client by fabric8io.
the class V1CertificateCrudTest method shouldReturnEmptyList.
@Test
void shouldReturnEmptyList() {
CertificateList certificateList = client.v1().certificates().inNamespace("ns1").list();
assertNotNull(certificateList);
assertTrue(certificateList.getItems().isEmpty());
}
use of com.github.zhenwei.core.asn1.x509.CertificateList in project kubernetes-client by fabric8io.
the class V1alpha2CertificateCrudTest method shouldListAndGetCertificate.
@Test
void shouldListAndGetCertificate() {
Certificate certificate2 = new CertificateBuilder().withNewMetadata().withName("cert2").endMetadata().build();
client.v1alpha2().certificates().inNamespace("ns2").create(certificate2);
CertificateList certificateList = client.v1alpha2().certificates().inNamespace("ns2").list();
assertNotNull(certificateList);
assertEquals(1, certificateList.getItems().size());
}
use of com.github.zhenwei.core.asn1.x509.CertificateList in project kubernetes-client by fabric8io.
the class V1alpha2CertificateCrudTest method shouldReturnEmptyList.
@Test
void shouldReturnEmptyList() {
CertificateList certificateList = client.v1alpha2().certificates().inNamespace("ns1").list();
assertNotNull(certificateList);
assertTrue(certificateList.getItems().isEmpty());
}
use of com.github.zhenwei.core.asn1.x509.CertificateList in project kubernetes-client by fabric8io.
the class V1alpha3CertificateCrudTest method shouldReturnEmptyList.
@Test
void shouldReturnEmptyList() {
CertificateList certificateList = client.v1alpha3().certificates().inNamespace("ns1").list();
assertNotNull(certificateList);
assertTrue(certificateList.getItems().isEmpty());
}
Aggregations