Example usage for org.bouncycastle.asn1.x509.qualified TypeOfBiometricData getBiometricDataOid

List of usage examples for org.bouncycastle.asn1.x509.qualified TypeOfBiometricData getBiometricDataOid

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x509.qualified TypeOfBiometricData getBiometricDataOid.

Prototype

public ASN1ObjectIdentifier getBiometricDataOid() 

Source Link

Usage

From source file:net.sf.keystore_explorer.crypto.x509.X509Ext.java

License:Open Source License

private String getBiometricInfoStringValue(byte[] octets) {

    // @formatter:off

    /*// w  w  w.  ja  va2  s  .  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  ww.jav  a 2 s .  com*/
        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;//from   w  w  w .  j  a v  a2s.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);
            }
        }
    }
}