List of usage examples for org.bouncycastle.asn1.x509.qualified TypeOfBiometricData equals
public boolean equals(Object o)
From source file:org.xipki.pki.ca.qa.ExtensionsChecker.java
License:Open Source License
private void checkExtensionBiometricInfo(final StringBuilder failureMsg, final byte[] extensionValue, final Extensions requestedExtensions, final ExtensionControl extControl) { BiometricInfoOption conf = certProfile.getBiometricInfo(); if (conf == null) { failureMsg.append("extension is present but not expected; "); return;//from w w w . j a va 2 s .c o m } ASN1Encodable extInRequest = null; if (requestedExtensions != null) { extInRequest = requestedExtensions.getExtensionParsedValue(Extension.biometricInfo); } if (extInRequest == null) { failureMsg.append("extension is present but not expected; "); return; } ASN1Sequence extValueInReq = ASN1Sequence.getInstance(extInRequest); final int expSize = extValueInReq.size(); ASN1Sequence extValue = ASN1Sequence.getInstance(extensionValue); final int isSize = extValue.size(); if (isSize != expSize) { addViolation(failureMsg, "number of biometricData", isSize, expSize); return; } for (int i = 0; i < expSize; i++) { BiometricData isData = BiometricData.getInstance(extValue.getObjectAt(i)); BiometricData expData = BiometricData.getInstance(extValueInReq.getObjectAt(i)); TypeOfBiometricData isType = isData.getTypeOfBiometricData(); TypeOfBiometricData expType = expData.getTypeOfBiometricData(); if (!isType.equals(expType)) { String isStr = isType.isPredefined() ? Integer.toString(isType.getPredefinedBiometricType()) : isType.getBiometricDataOid().getId(); String expStr = expType.isPredefined() ? Integer.toString(expType.getPredefinedBiometricType()) : expType.getBiometricDataOid().getId(); addViolation(failureMsg, "biometricData[" + i + "].typeOfBiometricData", isStr, expStr); } ASN1ObjectIdentifier is = isData.getHashAlgorithm().getAlgorithm(); ASN1ObjectIdentifier exp = expData.getHashAlgorithm().getAlgorithm(); if (!is.equals(exp)) { addViolation(failureMsg, "biometricData[" + i + "].hashAlgorithm", is.getId(), exp.getId()); } ASN1Encodable isHashAlgoParam = isData.getHashAlgorithm().getParameters(); if (isHashAlgoParam == null) { failureMsg.append("biometricData[").append(i).append("].hashAlgorithm.parameters is 'present'"); failureMsg.append(" but expected 'absent'; "); } else { try { byte[] isBytes = isHashAlgoParam.toASN1Primitive().getEncoded(); if (!Arrays.equals(isBytes, DER_NULL)) { addViolation(failureMsg, "biometricData[" + i + "].biometricDataHash.parameters", hex(isBytes), hex(DER_NULL)); } } catch (IOException ex) { failureMsg.append("biometricData[").append(i) .append("].biometricDataHash.parameters has incorrect syntax; "); } } byte[] isBytes = isData.getBiometricDataHash().getOctets(); byte[] expBytes = expData.getBiometricDataHash().getOctets(); if (!Arrays.equals(isBytes, expBytes)) { addViolation(failureMsg, "biometricData[" + i + "].biometricDataHash", hex(isBytes), hex(expBytes)); } DERIA5String str = isData.getSourceDataUri(); String isSourceDataUri = (str == null) ? null : str.getString(); String expSourceDataUri = null; if (conf.getSourceDataUriOccurrence() != TripleState.FORBIDDEN) { str = expData.getSourceDataUri(); expSourceDataUri = (str == null) ? null : str.getString(); } if (expSourceDataUri == null) { if (isSourceDataUri != null) { addViolation(failureMsg, "biometricData[" + i + "].sourceDataUri", "present", "absent"); } } else { if (isSourceDataUri == null) { failureMsg.append("biometricData[").append(i).append("].sourceDataUri is 'absent'"); failureMsg.append(" but expected 'present'; "); } else if (!isSourceDataUri.equals(expSourceDataUri)) { addViolation(failureMsg, "biometricData[" + i + "].sourceDataUri", isSourceDataUri, expSourceDataUri); } } } }