Author: reto
Date: Thu Jul 29 10:25:43 2010
New Revision: 980393
URL: http://svn.apache.org/viewvc?rev=980393&view=rev
Log:
Added support for other datatypes for BigIntergers literals
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/src/main/scala/org/apache/clerezza/foafssl/ssl/X509TrustManagerWrapperService.scala
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/pom.xml?rev=980393&r1=980392&r2=980393&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/pom.xml
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/pom.xml
Thu Jul 29 10:25:43 2010
@@ -25,6 +25,10 @@
</dependency>
<dependency>
<groupId>org.apache.clerezza</groupId>
+ <artifactId>org.apache.clerezza.platform</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.clerezza</groupId>
<artifactId>org.apache.clerezza.platform.typerendering.core</artifactId>
</dependency>
<dependency>
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/src/main/scala/org/apache/clerezza/foafssl/ssl/X509TrustManagerWrapperService.scala
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/src/main/scala/org/apache/clerezza/foafssl/ssl/X509TrustManagerWrapperService.scala?rev=980393&r1=980392&r2=980393&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/src/main/scala/org/apache/clerezza/foafssl/ssl/X509TrustManagerWrapperService.scala
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security.foafssl/core/src/main/scala/org/apache/clerezza/foafssl/ssl/X509TrustManagerWrapperService.scala
Thu Jul 29 10:25:43 2010
@@ -19,6 +19,8 @@
package org.apache.clerezza.foafssl.ssl
+import java.io.ByteArrayOutputStream
+import java.math.BigInteger
import java.security.PublicKey
import java.security.cert.CertificateException
import java.security.cert.X509Certificate
@@ -28,9 +30,11 @@ import org.apache.clerezza.foafssl.Utili
import org.apache.clerezza.platform.users.WebDescriptionProvider
import org.apache.clerezza.foafssl.ontologies.CERT
import org.apache.clerezza.foafssl.ontologies.RSA
+import org.apache.clerezza.platform.Constants
import org.apache.clerezza.rdf.core.Literal
import org.apache.clerezza.rdf.core.LiteralFactory
import org.apache.clerezza.rdf.core.MGraph
+import org.apache.clerezza.rdf.core.NoConvertorException
import org.apache.clerezza.rdf.core.Resource
import org.apache.clerezza.rdf.core.TripleCollection
import org.apache.clerezza.rdf.core.TypedLiteral
@@ -40,6 +44,7 @@ import org.apache.clerezza.rdf.core.acce
import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl
import org.apache.clerezza.rdf.core.impl.SimpleMGraph
import org.apache.clerezza.rdf.core.impl.TripleImpl
+import org.apache.clerezza.rdf.core.serializedform.{Serializer,
SupportedFormat}
import org.apache.clerezza.rdf.utils._
import org.apache.clerezza.rdf.scala.utils._
import org.apache.clerezza.rdf.ontologies.FOAF
@@ -48,9 +53,11 @@ import org.apache.clerezza.rdf.ontologie
import org.apache.clerezza.rdf.scala.utils.Preamble._
import org.jsslutils.sslcontext.X509TrustManagerWrapper
import
org.jsslutils.sslcontext.trustmanagers.TrustAllClientsWrappingTrustManager
+import org.slf4j.LoggerFactory;
class X509TrustManagerWrapperService() extends X509TrustManagerWrapper {
-
+
+ private val logger =
LoggerFactory.getLogger(classOf[X509TrustManagerWrapperService])
private var descriptionProvider: WebDescriptionProvider = null;
protected def bindWebDescriptionProvider(descriptionProvider:
WebDescriptionProvider) = {
@@ -89,7 +96,7 @@ class X509TrustManagerWrapperService() e
}
}
- private val systemGraphUri = new
UriRef("http://tpf.localhost/system.graph")
+ private val systemGraphUri = Constants.SYSTEM_GRAPH_URI;
private def verify(uriRef: UriRef, publicKey: PublicKey): Unit = {
var webDescription =
descriptionProvider.getWebDescription(uriRef, false)
@@ -164,11 +171,24 @@ class X509TrustManagerWrapperService() e
}
}
- private def verify(webId: UriRef, publicKey: RSAPublicKey, tc:
TripleCollection): Boolean = {
- val result = getPublicKeysInGraph(webId, tc).contains(
- (new BigInt(publicKey.getModulus), new
BigInt(publicKey.getPublicExponent)))
- result
+ private def verify(webId: UriRef, publicKey: RSAPublicKey, tc:
TripleCollection): Boolean = {
+ val publicKeysInGraph = getPublicKeysInGraph(webId, tc)
+ val publicKeyTuple = (new BigInt(publicKey.getModulus), new
BigInt(publicKey.getPublicExponent))
+ val result = publicKeysInGraph.contains(publicKeyTuple)
+ if (logger.isDebugEnabled) {
+ if (!result) {
+ val baos = new ByteArrayOutputStream
+ Serializer.getInstance.serialize(baos, tc,
SupportedFormat.TURTLE);
+ logger.debug("no mathing key in: \n{}", new
String(baos.toByteArray));
+ logger.debug("the public key is not among the "+
+ publicKeysInGraph.size+" keys in the
profile graph of size "+
+ tc.size)
+ logger.debug("PublicKey: "+publicKeyTuple)
+ publicKeysInGraph.foreach(k =>
logger.debug("PublikKey in graph: "+ k))
+ }
}
+ result
+ }
/**
* @return the integer value if r is a typedLiteral of cert:hex or
cert:decimal,
@@ -201,10 +221,15 @@ class X509TrustManagerWrapperService() e
}
}
private def intValueOfTypedLiteral(l: TypedLiteral): Option[BigInt] = {
- (l.getLexicalForm, l.getDataType) match {
- case (lf, CERT.hex) => Some(intValueOfHexString(lf))
- case (lf, CERT.decimal) => Some(BigInt(lf))
- case _ => None
+ try {
+ (l.getLexicalForm, l.getDataType) match {
+ case (lf, CERT.hex) =>
Some(intValueOfHexString(lf))
+ case (lf, CERT.decimal) => Some(BigInt(lf))
+ case _ => Some(new
BigInt(LiteralFactory.getInstance.createObject(classOf[BigInteger], l)))
+ }
+ } catch {
+ case e: NoConvertorException => None
+ case e => throw e
}
}