Search in sources :

Example 6 with ExtendedKeyUsageExtensionField

use of org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField in project nhin-d by DirectProject.

the class XMLLexiconPolicyParser_serializeTest method testSerialize_complexExpression_validateExpression.

public void testSerialize_complexExpression_validateExpression() throws Exception {
    final XMLLexiconPolicyParser parser = new XMLLexiconPolicyParser();
    // build the expression
    final Integer keyUsage = KeyUsage.keyEncipherment;
    final PolicyValue<Integer> op1 = PolicyValueFactory.getInstance(keyUsage);
    final LiteralPolicyExpression<Integer> expr1 = LiteralPolicyExpressionFactory.getInstance(op1);
    final KeyUsageExtensionField expr2 = new KeyUsageExtensionField(true);
    final Vector<PolicyExpression> operands1 = new Vector<PolicyExpression>();
    operands1.add(expr1);
    operands1.add(expr2);
    final OperationPolicyExpression oper1 = OperationPolicyExpressionFactory.getInstance(PolicyOperator.BITWISE_AND, operands1);
    // build outer expression embedding the first operation as a parameter
    final PolicyValue<Integer> op3 = PolicyValueFactory.getInstance(0);
    final LiteralPolicyExpression<Integer> expr3 = LiteralPolicyExpressionFactory.getInstance(op3);
    final Vector<PolicyExpression> operands2 = new Vector<PolicyExpression>();
    operands2.add(oper1);
    operands2.add(expr3);
    final OperationPolicyExpression oper2 = OperationPolicyExpressionFactory.getInstance(PolicyOperator.GREATER, operands2);
    // build a separate expression for extended key usage
    final ExtendedKeyUsageExtensionField expr4 = new ExtendedKeyUsageExtensionField(true);
    final PolicyValue<String> op5 = PolicyValueFactory.getInstance(ExtendedKeyUsageIdentifier.ID_KP_EMAIL_PROTECTION.getId());
    final LiteralPolicyExpression<String> expr5 = LiteralPolicyExpressionFactory.getInstance(op5);
    final Vector<PolicyExpression> operands3 = new Vector<PolicyExpression>();
    operands3.add(expr4);
    operands3.add(expr5);
    final OperationPolicyExpression oper3 = OperationPolicyExpressionFactory.getInstance(PolicyOperator.CONTAINS, operands3);
    // build an and operator and make sure the cert has all policies met
    final Vector<PolicyExpression> operands4 = new Vector<PolicyExpression>();
    operands4.add(oper2);
    operands4.add(oper3);
    final OperationPolicyExpression oper4 = OperationPolicyExpressionFactory.getInstance(PolicyOperator.LOGICAL_AND, operands4);
    // serialize
    final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    parser.serialize(oper4, outStream);
    assertTrue(outStream.size() > 0);
    String XML = new String(outStream.toByteArray());
    System.out.println(XML);
    // deserialize
    final ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
    final PolicyExpression deserExpression = parser.parse(inStream);
    assertNotNull(deserExpression);
    assertEquals(PolicyExpressionType.OPERATION, deserExpression.getExpressionType());
}
Also used : ExtendedKeyUsageExtensionField(org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField) LiteralPolicyExpression(org.nhindirect.policy.LiteralPolicyExpression) PolicyExpression(org.nhindirect.policy.PolicyExpression) OperationPolicyExpression(org.nhindirect.policy.OperationPolicyExpression) ByteArrayOutputStream(java.io.ByteArrayOutputStream) XMLLexiconPolicyParser(org.nhindirect.policy.impl.XMLLexiconPolicyParser) OperationPolicyExpression(org.nhindirect.policy.OperationPolicyExpression) ByteArrayInputStream(java.io.ByteArrayInputStream) KeyUsageExtensionField(org.nhindirect.policy.x509.KeyUsageExtensionField) ExtendedKeyUsageExtensionField(org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField) Vector(java.util.Vector)

Example 7 with ExtendedKeyUsageExtensionField

use of org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField in project nhin-d by DirectProject.

the class ExtendedKeyUsageExtensionField_injectReferenceValueTest method testInjectRefereneValue_keyUsageExists_assertValue.

public void testInjectRefereneValue_keyUsageExists_assertValue() throws Exception {
    final X509Certificate cert = TestUtils.loadCertificate("mshost.der");
    final ExtendedKeyUsageExtensionField field = new ExtendedKeyUsageExtensionField(false);
    field.injectReferenceValue(cert);
    Collection<String> usages = field.getPolicyValue().getPolicyValue();
    assertFalse(field.getPolicyValue().getPolicyValue().isEmpty());
    assertTrue(usages.contains(ExtendedKeyUsageIdentifier.ID_KP_EMAIL_PROTECTION.getId()));
    assertFalse(usages.contains(ExtendedKeyUsageIdentifier.ID_KP_CLIENT_AUTH.getId()));
}
Also used : ExtendedKeyUsageExtensionField(org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField) X509Certificate(java.security.cert.X509Certificate)

Aggregations

ExtendedKeyUsageExtensionField (org.nhindirect.policy.x509.ExtendedKeyUsageExtensionField)7 X509Certificate (java.security.cert.X509Certificate)4 Vector (java.util.Vector)3 LiteralPolicyExpression (org.nhindirect.policy.LiteralPolicyExpression)3 OperationPolicyExpression (org.nhindirect.policy.OperationPolicyExpression)3 PolicyExpression (org.nhindirect.policy.PolicyExpression)3 KeyUsageExtensionField (org.nhindirect.policy.x509.KeyUsageExtensionField)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 Opcode (org.nhindirect.policy.Opcode)1 PolicyRequiredException (org.nhindirect.policy.PolicyRequiredException)1 XMLLexiconPolicyParser (org.nhindirect.policy.impl.XMLLexiconPolicyParser)1 StackMachine (org.nhindirect.policy.impl.machine.StackMachine)1 StackMachineCompiler (org.nhindirect.policy.impl.machine.StackMachineCompiler)1 StackMachineEntry (org.nhindirect.policy.impl.machine.StackMachineEntry)1