List of usage examples for org.bouncycastle.asn1.x509.qualified TypeOfBiometricData isPredefined
public boolean isPredefined()
From source file:net.sf.keystore_explorer.crypto.x509.X509Ext.java
License:Open Source License
private String getBiometricInfoStringValue(byte[] octets) { // @formatter:off /*/*from ww w . j a va 2s . c om*/ BiometricSyntax ::= SEQUENCE OF BiometricData BiometricData ::= SEQUENCE { typeOfBiometricData TypeOfBiometricData, hashAlgorithm AlgorithmIdentifier, biometricDataHash OCTET STRING, sourceDataUri IA5String OPTIONAL } TypeOfBiometricData ::= CHOICE { predefinedBiometricType PredefinedBiometricType, biometricDataId OBJECT IDENTIIFER } PredefinedBiometricType ::= INTEGER { picture(0), handwritten-signature(1) } */ // @formatter:on StringBuilder sb = new StringBuilder(); int biometricDataNr = 0; ASN1Sequence asn1Sequence = ASN1Sequence.getInstance(octets); for (ASN1Encodable asn1Encodable : asn1Sequence.toArray()) { BiometricData biometricData = BiometricData.getInstance(asn1Encodable); TypeOfBiometricData typeOfBiometricData = biometricData.getTypeOfBiometricData(); AlgorithmIdentifier hashAlgorithm = biometricData.getHashAlgorithm(); ASN1OctetString biometricDataHash = biometricData.getBiometricDataHash(); DERIA5String sourceDataUri = biometricData.getSourceDataUri(); sb.append(MessageFormat.format(res.getString("BiometricInfo.BiometricData"), biometricDataNr)); sb.append(NEWLINE); sb.append(INDENT); if (typeOfBiometricData.isPredefined()) { int type = typeOfBiometricData.getPredefinedBiometricType(); sb.append(MessageFormat.format(res.getString("BiometricInfo.TypeOfBiometricData"), type)); } else { String biometricDataOid = typeOfBiometricData.getBiometricDataOid().getId(); sb.append( MessageFormat.format(res.getString("BiometricInfo.TypeOfBiometricData"), biometricDataOid)); } sb.append(NEWLINE); sb.append(INDENT); sb.append(MessageFormat.format(res.getString("BiometricInfo.HashAlgorithm"), hashAlgorithm.getAlgorithm().getId())); sb.append(NEWLINE); sb.append(INDENT); sb.append(MessageFormat.format(res.getString("BiometricInfo.BiometricDataHash"), HexUtil.getHexString(biometricDataHash.getOctets()))); sb.append(NEWLINE); if (sourceDataUri != null) { // optional sb.append(INDENT); sb.append(MessageFormat.format(res.getString("BiometricInfo.SourceDataUri"), sourceDataUri.toString())); sb.append(NEWLINE); } } return sb.toString(); }
From source file:org.xipki.pki.ca.certprofile.BiometricInfoOption.java
License:Open Source License
public boolean isTypePermitted(final TypeOfBiometricData type) { ParamUtil.requireNonNull("type", type); if (type.isPredefined()) { return predefinedTypes.contains(type.getPredefinedBiometricType()); } else {/* w w w. j a v a2s .c o m*/ return idTypes.contains(type.getBiometricDataOid()); } }
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;/*w w w. ja v a 2 s .co 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); } } } }