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
                }
        }
        


Reply via email to