Ejemplo n.º 1
0
/**
 * Determine if this is or is not a credit card number.
 * Return 1 if it is, 0 if it is not.
 * buf[-WINDOW_MARGIN] must be accessible.
 * buf[len+WINDOW_MARGIN] must be accessible
 */
bool valid_ccn(const char *buf,int buflen)
{
    /* Make the digits array */
    if(buflen>19) RETURN(0,"Too long");

    char digits[20];			// just the digits

    memset(digits,0,sizeof(digits));
    if(extract_digits_and_test(buf,buflen,digits)) RETURN(0,"failed nondigit count");
    if(prefix_test(digits))    RETURN(0,"failed prefix test");
    if(ccv1_test(digits))      RETURN(0,"failed ccv1 test");
    if(pattern_test(digits))   RETURN(0,"failed pattern test");
    if(histogram_test(digits)) RETURN(0,"failed histogram test");

    int before_window = 4;		// what we care about before
    int after_window = 4;		// what we care about before

    /* If the 4 characters before or after are hex digits but not decimal digits,
     * then this is probably not a credit card number.
     * We're probably instead in a sea of hex. So abort.
     */
    if(only_hex_digits(buf-before_window,before_window) && !only_dec_digits(buf-before_window,before_window)){
	RETURN(0,"failed before hex test");
    }
    if(only_hex_digits(buf+buflen,after_window) && !only_dec_digits(buf+buflen,after_window)){
	RETURN(0,"failed after hex test");
    }

    return 1;
}
Ejemplo n.º 2
0
static ssize_t set_test_pattern(struct device *dev, struct device_attribute *attr, const char *buf, size_t size)
{

	ssize_t ret = -EINVAL;
	int test;
    if(sscanf(buf, "%d",&test) !=1){
		printk("[PMIC K-PJT] bad arguments ");
	}
		ret = size;
	

	pattern_test(test);
	return ret;
}
Ejemplo n.º 3
0
static int validate_ccn_debug(const char *buf,int buflen)
{
    char digits[64];

    printf("running tests. 0 means passed, -1 means failed.\n\n");
    printf("nondigit_test(%s) = %d\n",buf,extract_digits_and_test(buf,buflen,digits));
    printf("prefix_test(%s) = %d \n",digits,prefix_test(digits));
    printf("ccv1_test(%s) = %d \n",digits,ccv1_test(digits));
    printf("histogram_test(%s) = %d \n",digits,histogram_test(digits));
    printf("pattern_test(%s) = %d \n",digits,pattern_test(digits));
    printf("only_hex_digits(%s) = %d\n",buf,only_hex_digits(buf,strlen(buf)));
    printf("only_dec_digits(%s) = %d\n",buf,only_dec_digits(buf,strlen(buf)));
    return validate_ccn(buf,buflen);
}